Hej.
Jeg sidder og skal lave et capatcha system til contact siden på aoaconsultancy.com
Til det har jeg knoklet en del med selv at lave noget, og til sidst har jeg endt med at kikke på andres koder, men har svært med at få det til at fungerer. Jeg har ingen forstå hvorfor.
Mine koder er således:
securityimage_finished.php
<?php
//Generate Reference ID
if (isset($HTTP_GET_VARS["refid"]) && $HTTP_GET_VARS["refid"]!="") {
$referenceid = stripslashes($HTTP_GET_VARS["refid"]);
} else {
$referenceid = md5(mktime()*rand());
}
//Generate the random string
$chars = array("a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J","k",
"K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T","u","U","v",
"V","w","W","x","X","y","Y","z","Z","1","2","3","4","5","6","7","8","9");
$length = 6;
$textstr = "";
for ($i=0; $i<$length; $i++) {
$textstr .= $chars[rand(0, count($chars)-1)];
}
$string = $textstr;
header ("Content-type: image/pjpeg");
$font = 11;
$width = ImageFontWidth($font)* strlen($string) ;
$height = ImageFontHeight($font) ;
$im = ImageCreateFromjpeg("./bg1.jpg");
$x=(imagesx($im)-$width)/2;
$y=(imagesy($im)-$height)/2;
$background_color = imagecolorallocate ($im, 255, 255, 255); //white background
$text_color = imagecolorallocate ($im, 255, 99,0);//black text
imagestring ($im, $font, $x, $y, $string, $text_color);
imagejpeg ($im);
//Destroy the image to free memory
imagedestroy($im);
//Insert reference into database, and delete any old ones
require("../config.php");
mysql_connect($mysql_host, $mysql_user, $mysql_pw) or die(mysql_error());
mysql_select_db($mysql_db);
//Create reference
mysql_query("INSERT INTO security_images (insertdate, referenceid, hiddentext) VALUES (
now(), '".$referenceid."', '".$textstr."')");
//Delete references older than 1 hour
mysql_query("DELETE FROM security_images
WHERE insertdate < date_sub(now(), interval 1 hour)");
//End Output
exit;
?>
Og til at hente billedet:
//Spam pro
function insertSecurityImage($inputname) {
$refid = md5(mktime()*rand());
$insertstr = "<img src=\\"securityimage_finished.php?refid=".$refid."\\" alt=\\"Security Image\\">\\n
<input type=\\"hidden\\" name=\\"".$inputname."\\" value=\\"".$refid."\\">";
echo($insertstr);
}
//Define function to check security image confirmation
function checkSecurityImage($referenceid, $enteredvalue) {
$referenceid = mysql_escape_string($referenceid);
$enteredvalue = mysql_escape_string($enteredvalue);
$tempQuery = mysql_query("SELECT ID FROM security_images WHERE
referenceid='".$referenceid."' AND hiddentext='".$enteredvalue."'");
if (mysql_num_rows($tempQuery)!=0) {
return true;
} else {
return false;
}
}
// Spampro slut
//UDSKRIVER:
<? insertSecurityImage("security_refid"); ?>
Jeg håber der er nogen der har en ide hvorfor det ikke virker. Jeg har ellers fået det til at virke fint på shafh.dk, så jeg undre mig meget hvorfor. Er sikkert en eller anden dum fejl.
Evt. er der nogen der kender en velfungerende Capatcha system?
Indlæg senest redigeret d. 25.02.2007 21:47 af Bruger #5097