Xqtor Skrevet 19. september 2006 Del Skrevet 19. september 2006 Jeg har lånt denne koden, som genererer et bilde med tilfeldig tekst: <? session_start(); function randomkeys($length){ $pattern = "1234567890abcdefghijklmnopqrstuvwxyz"; for($i=0;$i<$length;$i++){ $key .= $pattern{rand(0,35)}; } return $key; } if($_GET['showimage']==1){ // Set the content-type header("Content-type: image/png"); // Create the image $im = imagecreatetruecolor(200, 100); // Create some colors $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 399, 29, $gray); // The steps between each character $xstep = 20; $ystep = 8; // The text to draw $text = randomkeys(8); $_SESSION['display_text'] = $text; // Replace path by your own font path $font = 'ttf/arial.ttf'; // Add the text (Making it place randomly along the Y-Axis makes it harder for scripts to get it for ($Cnt=0; $Cnt<strlen($text); $Cnt+=1){ imagettftext($im, 20, 0, $xstep*$Cnt, 20+$ystep*$Cnt, $white, $font, substr($text, $Cnt, 1)); } imageline($im, 0, 0, 200, 100, $grey); imageline($im, 0, 100, 200, 0, $grey); imageline($im, 0, 50, 200, 50, $grey); // Using imagepng() results in clearer text compared with imagejpeg() imagepng($im); imagedestroy($im); }; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Bilde med tekst</title> </head> <body> <br> Bilde med tilfeldig tekst: <img src="createimage.php?showimage=1" alt="random text"> <br> <? echo $_SESSION['display_text']; ?> </body> </html> Problemet er at når jeg prøver å skrive ut den tilfeldige teksten henger den liksom en 'runde' etter? Altså viser utskriften det bildet viste ved forrige visning. Litt vanskelig å forklare, men hvis det ved visning nr. 1 av siden er abc123 i bildet, så er det det som blir skrevet ut ved visning nr.2 av siden. Jeg trenger å få tak i variabelen for å bruke den som en sjekk for å tillate posting i en gjestebok. Noen tips? Lenke til kommentar
funkyboy Skrevet 19. september 2006 Del Skrevet 19. september 2006 <? echo $text; // Prøv denne isteden. Unødvendig å bruke sessionvariabelen her. ?> Lenke til kommentar
Xqtor Skrevet 19. september 2006 Forfatter Del Skrevet 19. september 2006 Den skriver dessverre ikke ut noen ting i det hele tatt... Lenke til kommentar
TheRealL Skrevet 19. september 2006 Del Skrevet 19. september 2006 Hadde samme problem med et anti bot system jeg programmerte, løsningen min var enkelt og greit og få GD fila til og skrive til en txt fil (som er renama til antibot.$ID.crypt) også på formen som dobelt sjekker at det er rett så leser den fra fila, det virka for meg, virker sikkert for deg og Lenke til kommentar
funkyboy Skrevet 19. september 2006 Del Skrevet 19. september 2006 Den skriver dessverre ikke ut noen ting i det hele tatt... 6894898[/snapback] Har du php og html i samme fil? Lenke til kommentar
Xqtor Skrevet 19. september 2006 Forfatter Del Skrevet 19. september 2006 Ja, filen er akkurat den koden du ser over her. Lenke til kommentar
funkyboy Skrevet 19. september 2006 Del Skrevet 19. september 2006 Det ser ut som det skal være riktig ifølge koden.. Men prøv å bytt $_SESSION['display_text'] = $text; med $test = $text; og echo $_SESSION['display_text']; med echo $test; I tilfell det er noe med serveren. Ikke vet jeg. Lenke til kommentar
Xqtor Skrevet 19. september 2006 Forfatter Del Skrevet 19. september 2006 Det var ikke så vellykket det heller... Problemet er jo i og for seg ikke at det ikke blir skrevet ut noe - men hva som skrives ut. Den rene teksten og teksten i bildet er liksom ikke helt i sync... Kan det være at denne imagedestroy($im); har betydning? Jeg har gjort forsøk på hente ut teksten før denne, men uten særlig hell, dessverre. Lenke til kommentar
kakkle Skrevet 20. september 2006 Del Skrevet 20. september 2006 Det blir jo selvfølgelig skrevet ut den forrige verdien, fordi det er den som ligger i sessionvariabelen. Neste gang du laster siden, så blir den du ser vist. Dersom du skal bruke dette i gjestebok, så vil det fungere, fordi da viser du jo bildet på siden der de skriver inn. det blir jo ikke sjekket før de blri sendt til en ny side, og session variabelen innholder da den teksten i bildet. Session_start må alltid kjøres før en nyregistrert session_variabel kan vises. Her er et lite eksempel som viser at det blir riktig: <?php session_start(); if(isset($_GET["sjekk"])) { die($_SESSION["display_text"]); } print "<img src='createimage.php?showimage=1' alt='random text'><br>"; print "<a href='?sjekk=1'>Klikk her for sjekke om det er likt :)</a>"; ?> HVis du skjønner hvor jeg vil. Det akkurat som hvis du ikke har noen session lagret, så vil det ikke vises noe i din kode, før etter at du har lastet den på nytt. Lenke til kommentar
Xqtor Skrevet 20. september 2006 Forfatter Del Skrevet 20. september 2006 Jeg skjønner hvor du vil - og jeg var faktisk inne på tanken i går kveld....når man tenker etter er det egentlig ganske logisk. En enkel test: 1. Åpne createimage.php 2. Gå videre til en (f.eks.) sessions.php - denne innholder kun echo $_SESSION["display_text"]; Denne siden viser riktig tekst/variabel. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå