Witam
pracuję nad prostym systemem komentarzy. Zastosowałem sexy captcha, zgodnie z opisem na stronie:
http://blog.lukeblackamore.com/2009/10/sex...op-captcha.htmlmoja stronka:
http://trzezwymokiem.ovh.org/drudle/comment.phpMechanizm działa, ale połowicznie. Tzn rzeczywiście jeśli zostanie wskazany zły element to dodanie komentarza nie zadziała, jednak jeśli nie zostanie wskazany żadny element, dodanie przechodzi gładko. Błąd jest jak przypuszczam gdzieś w zmiennych w sesji. Oto kody
comment.php:
<?php session_start(); ?>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
<link rel="stylesheet" href="styl.css" type="text/css">
<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script> <script type="text/javascript" src="js/jquery.sexy-captcha-0.1.js"></script> <link rel="stylesheet" type="text/css" media="all" href="css/sexy-captcha/styles.css" />
<script type="text/javascript" >
$(function() {
$(".submit").click(function()
{
var name = $("#name").val();
var comment = $("#comment").val();
var dataString = 'name='+ name + '&comment=' + comment;
if(name=='' || comment=='')
{
alert('Wpisz nick oraz treść komentarza');
}
else
{
$("#flash").show();
$("#flash").fadeIn(400).html('
<img src="ajax-loader.gif" />Loading Comment...');
$.ajax({
type: "POST",
url: "commentajax.php",
data: dataString,
cache: false,
success: function(html){
$("ol#update").append(html);
$("ol#update li:last").fadeIn("slow");
$("#flash").hide();
}
});
}return false;
});
});
$(document).ready(function() {
$('.myCaptcha').sexyCaptcha('captcha.process.php');
});
<form action="#" method="post" id="formularz"> <input type="text" id="name" placeholder="imie"/><br /><br /> Chcemy upewnić się, że jesteś człowiekiem, przeciągnij odpowiedni element na prawo:
<br /><br />
<input type="submit" class="submit" value=" Submit Comment " id="submit" /> </form>
<ol id="update" class="timeline">
commentajax.php:
<?php
header('Content-Type: text/html; charset=ISO-8859-2');
function znaki_pl($string)
{
$przed= array('%u0105','%u0107','%u0119','%u0142','%u0144','%F3','%u015B','%u017A','%u017C',
'%u0104','%u0106','%u0118','%u0141','%u0143','%D3','%u015A','%u0179','%u017B');
$po= array("ą","ć","ę","ł","ń","ó","ś","ź","ż",
"Ą","Ć","Ę","Ł","Ń","Ó","Ś","Ź","Ż");
$string = str_replace($przed, $po, $string);
return $string;
}
session_start();
$requestVars = isset($_REQUEST) ? $_REQUEST : array();
echo $_SESSION['captchaCodes'][$_SESSION['captchaAnswer']];
if (substr($requestVars['captcha'], 10) != $_SESSION['captchaCodes'][$_SESSION['captchaAnswer']]) {
if($_POST)
{
$name=$_POST['name'];
$email=$_POST['email'];
$comment=$_POST['comment'];
$lowercase = strtolower($email);
$image = md5( $lowercase );
require('ustawienia.php');
connection();
$q="INSERT into drudle_comment (name, comment, drudle_id) values ('$name', '$comment', '1')";
mysql_query($q);
}
else { }
?>
<?php echo $name;?><br /><br /> <?php echo $comment; ?>
}
else {
echo znaki_pl("<div class=\"alert\">Nie przeszedłeś pozytywnie testu antyspamowego!
<br />Użyj przycisku refresh i spróbuj jeszcze raz.
</div>");
}
?>