TheBoz Skrevet 7. juli 2006 Del Skrevet 7. juli 2006 Hei! Driver en side der vi har et medlemsforum levert av en gratis tjeneste. Problemet er nå blitt at det er komme utrolig mye spam postet av roboter der. Derfor har jeg nå bygd et enkelt forum fra bunnen av i php. Men jeg ønsker en validerings sak som gjør at roboter ikke kan poste. Sånn som er på mange sider der du skriver inn noen tall og bokstaver fra et bilde. Hva er enkleste måten å lage dette på i php? Kanskje noen har noe ferdig de vil dele med meg? Lenke til kommentar
Canute Skrevet 7. juli 2006 Del Skrevet 7. juli 2006 Her er en kode jeg har brukt: <?php /* Lagre denne filen som f.eks. bilde.php, så bruker du <img src="bilde.php"> */ session_start(); $rand = rand(10000, 99999); //Her lages tallet $_SESSION['imagevalue'] = md5($rand); /* Her blir tallet puttet inn i sesjonen med md5 kryptering. Får å skjekke det senere om det er rett: if ($_SESSION['imagevalue'] === md5($_POST['feltet_ditt'])) { echo "korrekt" } */ $image = imagecreate(60, 30); $bgColor = imagecolorallocate ($image, 255, 255, 255); $textColor = imagecolorallocate ($image, 0, 0, 0); imagestring ($image, 5, 5, 8, $rand, $textColor); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header('Content-type: image/jpeg'); imagejpeg($image); imagedestroy($image); ?> Lenke til kommentar
TheBoz Skrevet 7. juli 2006 Forfatter Del Skrevet 7. juli 2006 Her er en kode jeg har brukt: Takker for raskt svar. Skal jeg legge hele dette i bilde.php? Hva skal jeg da legge i den fila formen blir sendt til? Lenke til kommentar
trrunde Skrevet 7. juli 2006 Del Skrevet 7. juli 2006 Du lager en fil som du kaller bilde.php ja, i formen skal du sette inn <img src="bilde.php"> og en input der de skal skrive det som står på bilde, så må du etterpå før du legger til innlegget sjekket om input er lik $_SESSION['imagevalue'] Lenke til kommentar
TheBoz Skrevet 7. juli 2006 Forfatter Del Skrevet 7. juli 2006 (endret) Du lager en fil som du kaller bilde.php ja, i formen skal du sette inn <img src="bilde.php"> og en input der de skal skrive det som står på bilde, så må du etterpå før du legger til innlegget sjekket om input er lik $_SESSION['imagevalue'] 6450604[/snapback] På den måten ja.. Må lage en if setning som sjekker $_SESSION['imagevalue'] da? Edit: så ikke kommentaren før nå... Da setter jeg jo bare den inn i siden som skal motta formen. Jeg får ikke til å få opp bildet, får bare rødt kryss. Når jeg prøver å åpne bilde.php i web leseren min får jeg meldingen: Fatal error: Call to undefined function: imagecreate() in /usr/local/apache/htdocs/la7g/forum/validering/bilde.php on line 11 Må jeg ha noe tillegg? Endret 7. juli 2006 av TheBoz Lenke til kommentar
Canute Skrevet 7. juli 2006 Del Skrevet 7. juli 2006 du mangler vel http://no.php.net/gd Lenke til kommentar
TheBoz Skrevet 7. juli 2006 Forfatter Del Skrevet 7. juli 2006 du mangler vel http://no.php.net/gd 6450714[/snapback] Har gd, men er mulig jeg har glemt å kompilere php med gd støtte? Da må jeg nok recompilere php.. *sukk* Lenke til kommentar
TheBoz Skrevet 7. juli 2006 Forfatter Del Skrevet 7. juli 2006 du mangler vel http://no.php.net/gd 6450714[/snapback] Sånn, da har jeg recompilert apache med php sånn at bildet fungerer. Men får ikke sjekkingen til å fungere. Setter inn følgende i php fila som mottar dataene fra skjemaet via post: if ($_SESSION['imagevalue'] === md5($_POST['kode'])) { echo "korrekt"; } Men får det ikke til å fungere. Får ikke korrekt selv om jeg skriver riktig kode. Hva kan dette komme av? Må jeg ha med noe mer i den fila? Er det forresten riktig at det skal være 3 =? Jeg har prøvd med 2 også men det gjorde ikke noe forskjell. Lenke til kommentar
0lav Skrevet 7. juli 2006 Del Skrevet 7. juli 2006 Skal være 2 =. Har du satt session_start(); helt øverst i php fila? Lenke til kommentar
TheBoz Skrevet 7. juli 2006 Forfatter Del Skrevet 7. juli 2006 Skal være 2 =. Har du satt session_start(); helt øverst i php fila? 6451884[/snapback] Aha, det løste saken ja... Måtte vist ha med session_start();. Nå funker det perfekt. Takker for hjelpen. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå