Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > ผมอยากจะทำ recaptcha ให้มันสามารถเช็คค่าว่างกับความูกต้องได้ โดยเป็นภาษาสคริปอ่ะครับ ช่วยแก้ ๆ ให้ทีครับ



 

ผมอยากจะทำ recaptcha ให้มันสามารถเช็คค่าว่างกับความูกต้องได้ โดยเป็นภาษาสคริปอ่ะครับ ช่วยแก้ ๆ ให้ทีครับ

 



Topic : 061720



โพสกระทู้ ( 275 )
บทความ ( 0 )



สถานะออฟไลน์




คือผมอยากจะทำ 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 + "&amp;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
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-06-15 22:52:11 By : เด็กโง่ View : 1284 Reply : 2
 

 

No. 1



โพสกระทู้ ( 275 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วครับ ไม่เก่ง 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 : เด็กโง่
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

เยี่ยมครับ สำหรับการแก้ปัญหาได้ แล้วยังสละเวลานำมาโพส จะเป็นประโยชน์ต่อสมาชิกคนอื่น ๆ แน่นอนครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-16 15:35:43 By : webmaster
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ผมอยากจะทำ recaptcha ให้มันสามารถเช็คค่าว่างกับความูกต้องได้ โดยเป็นภาษาสคริปอ่ะครับ ช่วยแก้ ๆ ให้ทีครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่