Avatar billede human Nybegynder
21. september 2006 - 00:42 Der er 4 kommentarer og
1 løsning

form vil ikke som jeg vil

Jeg har et lille simpelt script som skal tjekke om en burger er en bot eller ikke er, før han kan poste/whatever. Problemet er bare at den siger kode forkert selvom den er rigtig. Jeg tror det er fordi dataen ikke bliver sendt til koden som skal tage sig af det. Men jeg kan ikke finde fejlen.
<?php
$im = ImageCreate(130, 25);

$white = ImageColorAllocate($im, 234, 234, 234);
$black = ImageColorAllocate($im, 239, 34, 155);


srand((double)microtime()*1000000);
$string = md5(rand(0,9999));

$_SESSION['new_string'] = substr($string, 17, 5);

ImageFill($im, 0, 0, $black);
ImageString($im, 4, 50, 5, $_SESSION['new_string'], $white);

ImagePNG($im, "verify.png");
ImageDestroy($im);


?>

<img src="verify.png"><br /><br />
<form action="verify.php" method="post"> <br />
<input name="random" type="text" value=""> <br />
<input type="submit" name="submit" value="OK"><br />
<input type="hidden" name="action" value="submitted" />
</form>

<?php
if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
$_POST['random'] = trim($_POST['random']);

if ($_SESSION['new_string'] == $_POST['random']){
print "Kode korrekt<br />";
}
else{
print "Kode forkert<br />";
}
}
?>
Avatar billede coderdk Praktikant
21. september 2006 - 02:12 #1
Hvis alt det der er i én fil er det klart det ikke virker, da du jo laver en ny kode hver gang der reloades/postes ;)
Avatar billede coderdk Praktikant
21. september 2006 - 02:14 #2
Prøv:

<?php

if ($_SERVER['REQUEST_METHOD'] != 'POST' )
{
    $im = ImageCreate(130, 25);
   
    $white = ImageColorAllocate($im, 234, 234, 234);
    $black = ImageColorAllocate($im, 239, 34, 155);
   
   
    srand((double)microtime()*1000000);
    $string = md5(rand(0,9999));
   
    $_SESSION['new_string'] = substr($string, 17, 5);
   
    ImageFill($im, 0, 0, $black);
    ImageString($im, 4, 50, 5, $_SESSION['new_string'], $white);
   
    ImagePNG($im, "verify.png");
    ImageDestroy($im);

?>

<img src="verify.png"><br /><br />
<form action="verify.php" method="post"> <br />
<input name="random" type="text" value=""> <br />
<input type="submit" name="submit" value="OK"><br />
<input type="hidden" name="action" value="submitted" />
</form>

<?php
}

if (isset($_POST['action']) && $_POST['action'] == 'submitted')
{
    $_POST['random'] = trim($_POST['random']);
    if ($_SESSION['new_string'] == $_POST['random'])
    {
        print "Kode korrekt<br />";
    }
    else{
        print "Kode forkert<br />";
    }
}
?>
Avatar billede hmortensen Nybegynder
21. september 2006 - 06:40 #3
Der mangler også lige en session_start();
Avatar billede human Nybegynder
21. september 2006 - 08:23 #4
Session start står over headered og det pis jeg ik gad poste med.

Hold kæft hvor dum har man lov at være. smid et svar coderdk
Avatar billede coderdk Praktikant
21. september 2006 - 10:14 #5
hehhe det sker jo :)
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