Gå til innhold

Generering av bilde: Hjelp til å få tak i variabel


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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.

 

:thumbup:

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...