Toon posts:

[php] imagecreate probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een stukje php gemaakt om het msn adres van mensen weer te geven in een png plaatje met behulp van imagecreate. Dit werkt op zich prima. Het enige probleem is dat wanneer ik een willekeurig profiel van iemand anders bekijk het email adres van het vorige bekenen profiel er nog staat totdat ik een keer gerefreshed heb.

Voor de duidelijkheid $userinfo[msn] wordt in een template vervangen door het plaatje of als het veld leeg is door niks.
PHP:
1
2
3
4
5
6
7
8
9
10
11
 if ($userinfo[msn]!="") {
$mail = @imagecreate (300, 16)
    or die ("plep");
$background_color = imagecolorallocate ($mail, 145, 196, 248);
$text_color = imagecolorallocate ($mail, 0, 0, 0);
imagestring ($mail, 3, 1, 1,  "$userinfo[msn]", $text_color);
ImagePNG($mail,"mail.png");
$userinfo[msn]="[img]\"mail.png\"[/img]";
  } else {
    $userinfo[msn]=" ";
  }

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Ff een nocache header erbij zetten en je probleem is waarschijnlijk opgelost

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 17-08 16:09
heb je de gd_lib wel?

Verwijderd

Topicstarter
wat denk je zelf? ik zie het plaatje wel. Alleen niet de juiste. maar een oudere versie

Verwijderd

Topicstarter
Janoz schreef op 03 september 2002 @ 13:46:
Ff een nocache header erbij zetten en je probleem is waarschijnlijk opgelost
als je dit bedoeld:
PHP:
1
2
header (\\"Cache-Control: no-store, no-cache, must-revalidate\\");  
header (\\"Pragma: no-cache\\");

Dat heb ik geprobeerd maar dan krijg ik vage errors dat de headers al verzonden zijn. Vage vbulletin ook :P

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Die moet je natuurlijk wel bij het plaatje zetten natuurlijk he :)

Maar ik zit ff te kijken... Wat ben je eigenlijk precies aan het doen? Wordt het plaatje in de overzichtspagina gemaakt????

Kun je niet gewoon makkelijker een appart php bestand maken dat adhv een userID een plaatje genereerd met email??

Wat gebeurt er nu waneer er 2 mensen tegelijk op hun profiel gaan kijken?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op 03 september 2002 @ 14:32:
Die moet je natuurlijk wel bij het plaatje zetten natuurlijk he :)

Maar ik zit ff te kijken... Wat ben je eigenlijk precies aan het doen? Wordt het plaatje in de overzichtspagina gemaakt????

Kun je niet gewoon makkelijker een appart php bestand maken dat adhv een userID een plaatje genereerd met email??

Wat gebeurt er nu waneer er 2 mensen tegelijk op hun profiel gaan kijken?
ik had de headers bij het plaatje gezet :)
De bedoeling is hetvolgende:
ik heb een forum dat op vbulletin draait. Ik heb een veld gemaakt voor de msn adressen van mensen. Nu is een text adres erg gevoelig voor spambotjes dus ik wil het in een image zetten.

Ik heb het nu zo dat wanneer iemand de pagina member.php?action=getinfo opvraagt, bovenstaand scriptje het veld met het msn adres pakt, daar een plaatje van maakt en die weergeeft op de goede plek. De enige ellende is nu dat hij icon.png opslaat op de server. En daar ligt denk ik ook het probleem. En dat zal vast ook problemen geven wanneer 2 mensen tegelijk gaan kijken.

Ik heb alleen geen idee hoe ik het anders kan oplossen aangezien ik niet zo'n held met die gd meuk ben.

normaal gebruik ik gewoon iets als:
ImagePNG($mail);

maar in dit geval zou die dan alleen het plaatje met het mail adres laten zien en niet de rest van de pagina.

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Je moet gewoon van het imagecreate een apart bestand maken:
Origineel veranderen in:
PHP:
1
2
3
4
5
if ($userinfo[msn]!="") { 
  $userinfo[msn]="[img]\"mailpng.php?userid=$id\"[/img]"; 
  } else { 
    $userinfo[msn]=" "; 
  }

en dan een mailpng.php maken:
PHP:
1
2
3
4
5
6
7
8
9
10
$mail = @imagecreate (300, 16) 
    or die ("plep"); 
$background_color = imagecolorallocate ($mail, 145, 196, 248); 
$text_color = imagecolorallocate ($mail, 0, 0, 0); 
//even het adres uit de db halen dmv het id en die in $userinfo['msn'] zetten

imagestring ($mail, 3, 1, 1,  "$userinfo[msn]", $text_color); 
Header("Content-type: image/png"); 
Header("Cache-Control: no-cache, must-revalidate");
imagepng($mail);

If nothing is written below, I was the last to reply...


Verwijderd

Topicstarter
als ik:
PHP:
1
2
ImagePNG($mail);
$userinfo[msn]="[img]\"$mail\"[/img]";

gebruik dan werkt het wel goed omdat er niks wordt opgeslagen op de server.
De enige ellende is dat alleen het plaatje weergegeven wordt en niet de complete pagine + het plaatje.
hoe kan ik dat oplossen?

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Had je mijn reply al gelezen? Of waren we tegenlijk bezig?

If nothing is written below, I was the last to reply...


Verwijderd

Topicstarter
RainManX schreef op 03 september 2002 @ 15:22:
Had je mijn reply al gelezen? Of waren we tegenlijk bezig?
we waren tegelijk bezig :)
ik had al zitten kloten met iets soortgelijks als wat jij gaf. maar het msn adres is al bekend wanneer je dat extra php bestand gaat gebruiken, dus die zou ik evt. toch aan hem door kunnen geven?

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Ja, maar dan staat ie alsnog in je tekst (en kan er dus weer makkelijk uitgehaald worden)

If nothing is written below, I was the last to reply...


Verwijderd

Topicstarter
RainManX schreef op 03 september 2002 @ 15:26:
Ja, maar dan staat ie alsnog in je tekst (en kan er dus weer makkelijk uitgehaald worden)
och jah, tuurlijk |(
helemaal niet bij nagedacht.
het plaatje komt er nu al te staan, nu alleen nog ff het msn adres laten ophalen.
Pagina: 1