Avatar billede tvilling53 Seniormester
23. februar 2014 - 13:11 Der er 5 kommentarer og
1 løsning

fejl i CAPTCHA

hej
Jeg mangler hjælp til at dette til at virke. Der er forskel på hvad <img src="create_image.php"> og $_SESSION['security_code'] viser.
Når man første gang kommer på siden kan create_image vise f.eks ab12e og SESSION viser en intet. Foretager man så en F5 viser create_image så f.eks dgt34 og denne gang viser SESSION så ab12e.


<?php include ("header.php");?> indeholder <?php session_start(); ?>

<h1>Opretter ny bruger</h1>
<form action="opret-bruger.php" method="post">
    <span class="label">Indtast din E-mailadresse:</span><br/>
    <span class="felt"><input type ="text" name="nybrugernavn" size="20"/></span><br/>
    <span class="label">Spamcheck=><img src="create_image.php"></span><br/>
    <span class="felt"><input type ="text" name="spamcheck" size="21" /></span><br/>
    <input type="submit"value="            OPRET            " size="21"/><br/><br/>
</form>

<?php echo " Security_code er ".$_SESSION["security_code"]." i session";?></br>

----kode i create_image.php----
<?php
create_image();
exit();
function create_image(){
$md5_hash = md5(rand(1,99));
$security_code = substr($md5_hash, 15, 5);
$_SESSION['security_code'] = $security_code;
$width = 100;
$height = 20;
$image = ImageCreate($width, $height);
$tekstfarve = ImageColorAllocate($image, 0, 0, 0);
$bund = ImageColorAllocate($image,255, 127, 39);
$grey = ImageColorAllocate($image, 204, 204, 204);
ImageFill($image, 0, 0, $bund);
ImageString($image, 12, 5, 7, $security_code, $tekstfarve);
header("Content-Type: image/jpeg");
Imagejpeg($image);
ImageDestroy($image);
?>

Jeg har prøvet alt hvad jeg kan komme i tanker om, men lige meget hjalp det, så hvor ligger fejlen??
Tvilling53
Avatar billede repox Seniormester
23. februar 2014 - 13:47 #1
Adfærden er korrekt. Sessions skrives først til session-filen når scriptet er kørt.
Dit billede bliver hentet efter siden er er indlæst. Så du forsøger faktik at echo noget som ikke er sat endnu (første gang bør faktisk give en php notice).

Det du jo så skal gøre er at kontrollere captcha'en i næste request (altså, når du poster) og der vil det forventede indhold naturligvis eksistere.
Avatar billede tvilling53 Seniormester
23. februar 2014 - 17:46 #2
Det er rigtig at php-notice første gang, men hvordan får jeg så hentet det rigtige "kodeord" ud så det også kan bruges i et senere php-script, for når jeg indtaster "kodeordet" fra billedet får jeg at vide at kodeordet er forkert eller " Undefined variable: _SESSION in "

mvh thomas
Avatar billede michael_stim Ekspert
23. februar 2014 - 17:47 #3
Du mangler et $ i $_SESSION
Avatar billede tvilling53 Seniormester
24. februar 2014 - 13:48 #4
I fejlmeddelelsen som vises er  " Undefined variable: _SESSION in " er der ikke $ i $_SESSION, men det er skrevet i koden som du kan se her ""if ($_SESSION['security_code']!=$spamcheck)"".
Avatar billede tvilling53 Seniormester
10. marts 2014 - 10:37 #5
Efter mange forsøg lykkedes det, så løsningen er:
session_start() lægges i "Header.php" som så includeres i alle php-filer hvor $_SESSION bruges.

repox læg et svar
Avatar billede repox Seniormester
10. marts 2014 - 10:40 #6
Det får du her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester