Avatar billede human Nybegynder
13. september 2006 - 20:10 Der er 7 kommentarer og
1 løsning

image varification (GD)

Hejsa

Jeg sidder med et lille php script som laver et billede med en tekst i. meningen med det er brugeren skal skrive i en boks hvad der står i billedet for at kunne poste.

Men problemet er, at ligemeget hvad jeg indtaster så siger den kode korrekt. Hvad er der galt? Andre rettelser/ændringer er også velkomne.
scriptet:

verify.php:
<?php
session_start();
$new_string;
session_register('new_string');

print "<html><head><title>Verification</title></head>";
print "<body>";

$im = ImageCreate(200, 40);
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 0, 0, 0);


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

$new_string = substr($string, 17, 5);

ImageFill($im, 0, 0, $black);
ImageString($im, 4, 96, 19, $new_string, $white);

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

print "<img src=\"verify.png\">";
print "<br><br>";
print "Skriv koden nedenunder du ser i billedet.";
print " <form action=\"formhandler.php\" method=post>";
print "<input name=\"random\" type=\"text\" value=\"\">";
print "<input type=\"submit\">";
print "</form>";
print "</body>";
print "</html>";
?>

formhandler.php:
<?php
session_start();
$random = trim($random);

if ($new_string == $random){
print "Kode korrekt";
}
else{
print "Kode forkert";
}
?>
Avatar billede coderdk Praktikant
13. september 2006 - 21:21 #1
Prøv lige at slette:

$new_string;
session_register('new_string');

og ændre:

$new_string = substr($string, 17, 5);

til:

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

og i formhandler.php:

if ($new_string == $random){

til:

if ($_SESSION['new_string'] == $random){
Avatar billede human Nybegynder
13. september 2006 - 21:27 #2
Så skete der noget. Der er ingen tekst i billedet mere, men tilgængæld siger den kode forkert.
Avatar billede coderdk Praktikant
13. september 2006 - 21:29 #3
Overså noget:

ImageString($im, 4, 96, 19, $new_string, $white);

skal også være:

ImageString($im, 4, 96, 19, $_SESSION['new_string'], $white);
Avatar billede human Nybegynder
13. september 2006 - 21:33 #4
Så kom teksten tilbage. Men den siger stadig kode forkert hver gang. Har disse rettelser noget at gøre med globals?
Avatar billede human Nybegynder
13. september 2006 - 21:37 #5
hvis du vil se scriptet live så er det her: http://techcity.dk/verify/verify.php
Avatar billede coderdk Praktikant
13. september 2006 - 21:43 #6
Overså noget igen :)

if ($_SESSION['new_string'] == $random){

skal nok være:

if ($_SESSION['new_string'] == $_POST['random']){
Avatar billede human Nybegynder
13. september 2006 - 21:45 #7
smukt! smid et svar :)
Avatar billede coderdk Praktikant
13. september 2006 - 22:25 #8
Ok :)
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