Avatar billede webweaver Praktikant
21. august 2006 - 20:02 Der er 14 kommentarer og
1 løsning

ImageCreate sammenligning med streng, fejler.

Hej Proffer.

Jeg har på min gæstebog en ImageCreate som så genererer et billede med en kode som man skal taste ind ... Mit problem er at ligemeget om man taster det som der står på billedet ind korrekt eller forkert, så siger den at det er forkert og beskeden bliver ikke postet. Jeg kan ikke finde ud af hvorfor, så jeg håbede I kunne hjælpe mig? :)

I kan finde koden her;
http://www.pastebin.dk/index.php?show=2067

På forhånd tak :)

Mvh. Lasse Jensen
Avatar billede boost Nybegynder
21. august 2006 - 20:07 #1
Hvorfor ikke bruge denne: http://www.finalwebsites.com/snippets.php?id=39

Den virker og er simpel..
Avatar billede boost Nybegynder
21. august 2006 - 20:14 #2
Men du bliver nød til at gemme koden i en session.
Når personen trykker "Send besked" så ændre den koden igen og derved er den indtastede kode ikke magen til den som er på billedet..
Avatar billede webweaver Praktikant
21. august 2006 - 20:18 #3
Ja det var derfor jeg smed en if sætning omkring, som så fortalte den at den kun skulle oprette en ny kode/billede hvis der ikke var trykket på Submit. Men det lader umiddelbart ikke til at kunne gøres sådan.
Avatar billede boost Nybegynder
21. august 2006 - 20:33 #4
Efter der er blevet indsæt i MySQL så kan du unset($_SESSION['kodeord']); den og derved er den klar til at lave et nyt kodeord.

f.eks:

if (!isset($_SESSION['kodeord'])) {
$_SESSION['kodeord'] = $kodeord; // Her generer du kodeordret...
}
Avatar billede webweaver Praktikant
21. august 2006 - 20:40 #5
Jeps, men så vidt jeg kan se hvis jeg bruger SESSIONS så skal det være på 2 sider.?
Kan det ikke laves sådan så det hele er på 1 side. Formen, og koden som genererer koden/billedet?
Avatar billede boost Nybegynder
21. august 2006 - 20:53 #6
Tror ikke du kan lave det på en side, hvis du vil have det som et billede..

Men du kan bare lave en fil ved navn image.php hvor du har koden til at lave billedet med.

i image.php:

Ændre du:
$string = md5(rand(0,9999)); 
       
$new_string = substr($string, 17, 5);

til: $new_string = $_SESSION['kodeord'];

I guestbook.php laver du kodeordet:

if (!isset($_SESSION['kodeord'])) {
    $string = md5(rand(0,9999));
    $new_string = substr($string, 17, 5);

    $_SESSION['kodeord'] = $new_string;
}


Du viser dit billede sådan her:
<img src="image.php" width="148" height="17" />
Avatar billede webweaver Praktikant
21. august 2006 - 21:52 #7
Er du sikker på det? Hvis jeg gør sådan, får jeg ikke andet end et rødt kryds?
Avatar billede boost Nybegynder
22. august 2006 - 16:05 #8
Hvorfor bruger du ikke bare den fra?
http://www.finalwebsites.com/snippets.php?id=39

Har prøvet den og den virker..
Avatar billede boost Nybegynder
22. august 2006 - 20:34 #9
Lav en ny fil som du kalder for captcha.php

I den skal denne kode være:

<?php
session_start();

$imgX = 60;
$imgY = 20;
$image = imagecreatetruecolor(60, 20);

$backgr_col = imagecolorallocate($image, 238,239,239);
$border_col = imagecolorallocate($image, 208,208,208);
$text_col = imagecolorallocate($image, 0,0,0);

imagefilledrectangle($image, 0, 0, 60, 20, $backgr_col);
imagerectangle($image, 0, 0, 59, 19, $border_col);

$font = $_SERVER['DOCUMENT_ROOT'].'/VeraSe.ttf';
$font_size = 11;
$angle = 0;
$box = imagettfbbox($font_size, $angle, $font, $_SESSION['rand_code']);
$x = (int)($imgX - $box[4]) / 2;
$y = (int)($imgY - $box[5]) / 2;
imagettftext($image, $font_size, $angle, $x, $y, $text_col, $font, $_SESSION['rand_code']);

header("Content-type: image/png");
imagepng($image);
imagedestroy ($image);
?>

---------------------------------------------------


guestbook.php:

I din <form> indsætter du dette:

<input type="text" name="validator" id="validator" size="6" /><br />
<img src="captcha.php" alt="CAPTCHA image" width="60" height="20" vspace="1" align="top" /><br />



Tjek om det indtastede kodeord er rigtigt:

if (!empty($_POST['validator']) && $_POST['validator'] == $_SESSION['rand_code']) {
    //Her indsætter du i MySQL
    unset($_SESSION['rand_code']);
}

if (empty($_SESSION['rand_code'])) {
    $_SESSION['rand_code'] = substr(str_shuffle('0123456789'),0,6);
}
Avatar billede boost Nybegynder
22. august 2006 - 20:35 #10
Avatar billede webweaver Praktikant
22. august 2006 - 21:11 #11
Tak jeg kigger på det :)
Avatar billede boost Nybegynder
23. august 2006 - 17:23 #12
Kan du få det til at virke?
Avatar billede webweaver Praktikant
24. august 2006 - 20:18 #13
Jeps det kan jeg :)

Tak for hjælpen champ. Du har fået dine point :)

Mvh. Lasse Jensen
Avatar billede boost Nybegynder
24. august 2006 - 20:20 #14
Tak for points :)
Avatar billede boost Nybegynder
24. august 2006 - 20:22 #15
Og tak for karma :)
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