|
|
|
ผมอยากจะทำ recaptcha ให้มันสามารถเช็คค่าว่างกับความูกต้องได้ โดยเป็นภาษาสคริปอ่ะครับ ช่วยแก้ ๆ ให้ทีครับ |
|
|
|
|
|
|
|
คือผมอยากจะทำ recaptcha ให้มันสามารถเช็คว่าได้กรอก recaptcha หรือเปล่า แล้วก็เช็คว่าที่กรอกมาถูกต้องหรือเปล่า โดยเป็นภาษาสคริปอ่ะ ไม่อยากให้รีเฟรชทั้งหน้า ช่วยแก้โค้ดหน่อยหน่อยครับ งง ๆ อยู่
ผมเอามาจากเว็บนี้อ่ะครับ http://stackoverflow.com/questions/593593/using-recaptcha-with-ajax-javascript-loading-problem?answertab=active#tab-top
Code (JavaScript)
<html>
<head>
<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=6Le6SwUAAAAAAIWm8wCRFd8SrI-H0R1Yx4Tkw2Ks"></script> //ตรง k=........... คือ public key ใช่มั้ยครับ
<script>
$(function(){
function validateCaptcha()
{
challengeField = $("input#recaptcha_challenge_field").val();
responseField = $("input#recaptcha_response_field").val();
//alert(challengeField);
//alert(responseField);
//return false;
var html = $.ajax({
type: "POST",
url: "ajax.recaptcha.php",
data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField,
async: false
}).responseText;
if (html.replace(/^\s+|\s+$/, '') == "success")
{
$("#captchaStatus").html(" ");
// Uncomment the following line in your application
return true;
}
else
{
$("#captchaStatus").html("Your captcha is incorrect. Please try again");
Recaptcha.reload();
return false;
}
}
//Modified as per comments in site to handle event unobtrusively
$("#signup").submit(function(){
return validateCaptcha();
});
});
</script>
</head>
<body>
<input type="text"id="recaptcha_challenge_field"> //ตรงนี้ผมมั่วเองซึ่งมันไม่ถูกหรอก ผมเข้าใจจาก $("input#recaptcha_challenge_field").val();
<input type="text"id="recaptcha_response_field">
<div id="captchaStatus"></div>
</body>
</html>
หน้า ajax.recaptcha.php
Code (PHP)
require_once('recaptchalib.php');
$publickey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // ตรงนี้ก็ public code อ่ะครับ พอเข้าใจอยู่
$privatekey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"; //ตรงนี้ก็ private code อ่ะครับ พอเข้าใจอยู่
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
?>success< ?
}
else
{
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
}
ขอบคุณครับ
Tag : PHP, MySQL, JavaScript, Ajax, jQuery
|
ประวัติการแก้ไข 2011-06-15 22:53:30
|
|
|
|
|
Date :
2011-06-15 22:52:11 |
By :
เด็กโง่ |
View :
1308 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ ไม่เก่ง jquery เลยใช้ ajax แทน
Code (PHP)
<html>
<body>
<head>
<script type="text/javascript">
function validateCaptcha()
{
if( document.getElementById('recaptcha_response_field').value=="")
{ alert("กรอก Verify Code ด้วยครับ");
return false;
}
var req;
if(window.XMLHttpRequest){
req=new XMLHttpRequest();
}
else if(window.ActiveXObject){
req=new ActiveXObject("Microsoft.XMLHTTP");
}
else{alert("Browser not support");
return false;
}
var str=Math.random();
var challengeField = document.getElementById('recaptcha_challenge_field').value;
var responseField = document.getElementById('recaptcha_response_field').value;
var querystr="recaptcha.php?pop="+str+"&responseField="+responseField+"&challengeField="+challengeField;
req.open("GET",querystr,true);
req.send(null);
req.onreadystatechange=function(){
if(req.readyState==4){
document.getElementById('show').innerHTML=req.responseText;
if(req.responseText=="กรุณากรอก Verify Code ใหม่ครับ !")
{Recaptcha.reload();}
}}
}
</script>
</head>
<body >
<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=xxxxxxxxxxxxxxxxxxxxxxxxxxx"></script> // k=xxx... ใส่ public key ครับ
<div id="show"></div>
<input type="button"id="submit"value="submit"onclick="validateCaptcha()">
</body>
</html>
หน้า recaptcha.php
Code (PHP)
<?php
// Include reCAPTCHA ที่ดาวน์โหลดมา
require_once('recaptchalib.php');
// ใส่ Public Key และ Private Key ที่ได้จากการลงทะเบียน
$publickey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$privatekey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$resp = null;
$error = null;
// ถ้าหน้านี้ถูกเรียกเพราะ User submit ฟอร์ม
// ตรวจสอบค่าที่ป้อนใน reCAPTCHA มาว่าถูกต้องหรือเปล่า
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_GET["challengeField"],
$_GET["responseField"]);
// ถ้าถูกต้อง จะเขียนโค้ดเก็บข้อมูลลง database หรือจะทำอะไร ก็เขียนตรงนี้แหละ
if ($resp->is_valid) {
echo "success";
} else {
// ถ้าไม่ถูกต้อง เพราะอาจจะเป็นบอท ก็เขียนโค้ดเข้าไปตรงนี้
echo "กรุณากรอก Verify Code ใหม่ครับ !";
}
?>
ทำไว้เผื่อท่านใดไม่รู้ครับ ท่านใดรู้แล้วก็ผ่านไปครับ
ขอบคุณครับ
|
|
|
|
|
Date :
2011-06-16 15:17:38 |
By :
เด็กโง่ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เยี่ยมครับ สำหรับการแก้ปัญหาได้ แล้วยังสละเวลานำมาโพส จะเป็นประโยชน์ต่อสมาชิกคนอื่น ๆ แน่นอนครับ
|
|
|
|
|
Date :
2011-06-16 15:35:43 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|