Avatar billede whynot Nybegynder
16. maj 2007 - 09:42 Der er 2 kommentarer og
1 løsning

grafisk verifikation ved oprettelse af profil til gæstebog

Hejsa

Jeg har lavet en lille og MEGET simpel gæstebog vha. php hvor besøgende direkte får lov til at skrive en lille hilsen.

Selvfølgelig bliver jeg nu ramt af bots som indsætter links til pornosites.. og spammer gæstebogen til.

Jeg har set rundt omkring på nettet at flere hjemmesider anvender en grafisk repræsentation for nogle bogstaver som den besøgende skal indtaste som en verifikation før man får lov til at poste sin lille besked.

Hvordan laver man disse grafiske verifikationer til en hjemmeside?.. kan man finde dem som freeware?.. hvad hedder teknikken i grunden?
Avatar billede phliplip Nybegynder
16. maj 2007 - 09:55 #1
Teknikken hedder CAPCHA,

Du får lige et script jeg ligger inde med..

Genererer et billede med random tekst som gemmes i SESSION,
Find dit eget baggrundsbillede at ligge på :)

Når formen er submittet sammenligner du selvfølgelig bare det indtastede som md5() krypteret med $_SESSION['image_random_value']

--
<?php
session_start();

// make a string with all the characters that we
// want to use as the verification code
$alphanum  = "ABCDEFGHJKLMNPQRTUVWXYZ2346789";

// generate the verication code
$rand = substr(str_shuffle($alphanum), 0, 5);

// choose one of four background images
$bgNum = rand(1, 2);

// create an image object using the chosen background
$image = imagecreatefromjpeg("images/verification/background2.jpg");

$textColor = imagecolorallocate($image, 0, 0, 0);

// write the code on the background image
imagestring($image, 5, 5, 8,  $rand, $textColor);

// create the hash for the verification code
// and put it in the session
$_SESSION['image_random_value'] = md5($rand);

// send several headers to make sure the image is not cached
// taken directly from the PHP Manual

// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

// HTTP/1.0
header("Pragma: no-cache");


// send the content type header so the image is displayed properly
header('Content-type: image/jpeg');

// send the image to the browser
imagejpeg($image);

// destroy the image to free up the memory
imagedestroy($image);
?>
--
Avatar billede phliplip Nybegynder
16. maj 2007 - 09:55 #2
Svar
Avatar billede sj.netomia Nybegynder
06. december 2007 - 13:44 #3
håber at der er en der vil hjælpe mig lidt med dette script. jeg har 3 php filer en capcha.php med scriptet fra phliplip en test.php med min form og en send.php med check af capcha. det ser sådan her ud.


<html>
<img src="capcha.php">
<form action="send.php" method="post">
    Capcha:<input type="text" name="capcha">
    <p><input type="submit" value="send"></p>
</form>
</html>

<?
if (md5($_SESSION['image_random_value']) == "$capcha") {
print ("rigtig");
}
else {
    print ("forkert");
    }
    print ("$capcha");
    print ("<br>");
    print (md5($_SESSION['image_random_value']));
?>

Jeg har så prøvet lidt frem og tilbage, men kan ikke få det til at virke efter hensigten, så håber at der er en som kan hjælpe.

jeg har indsat 2 print til sidst i scriptet for at se hvad den egentlig modtog, og det ser specielt ud.
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