首页>>表单>>php验证码, jquery, ajax验证码(2013-09-10)

php验证码, jquery, ajax验证码

 可以点击刷新验证码,提交会验证

 

php验证码, jquery, ajax验证码
赞赏支持
立刻微信赞赏支持 关闭

 

 

XML/HTML Code
  1. <div id="main">    
  2.     <div class="demo">    
  3.         <h3>1、数字验证码</h3>    
  4.         <p>验证码:<input type="text" class="input" id="code_num" name="code_num" maxlength="4" /><img src="code_num.php" id="getcode_num" title="看不清,点击换一张" align="absmiddle"></p>    
  5.        <p><input type="button" class="btn" id="chk_num" value="提交" /></p>    
  6.     </div>    
  7.     <div class="demo">    
  8.         <h3>2、数字+字母验证码</h3>    
  9.         <p>验证码:<input type="text" class="input" id="code_char" maxlength="4" /> <img src="code_char.php" id="getcode_char" title="看不清,点击换一张" align="absmiddle"></p>    
  10.         <p><input type="button" class="btn" id="chk_char" value="提交" /></p>    
  11.     </div>    
  12.     <div class="demo">    
  13.         <h3>3、中文验证码</h3>    
  14.         <p>验证码:<input type="text" class="input" id="code_zh" maxlength="4" /> <img src="code_zh.php" id="getcode_zh" title="看不清,点击换一张" align="absmiddle"></p>    
  15.         <p><input type="button" class="btn" id="chk_zh" value="提交" /></p>    
  16.     </div>    
  17.     <div class="demo">    
  18.         <h3>4、仿google验证码</h3>    
  19.         <p>验证码:<input type="text" class="input" id="code_gg" maxlength="4" /> <img src="code_gg.php" id="getcode_gg" title="看不清,点击换一张" align="absmiddle"></p>    
  20.         <p><input type="button" class="btn" id="chk_gg" value="提交" /></p>    
  21.     </div>    
  22.     <div class="demo">    
  23.         <h3>5、算术验证码</h3>    
  24.         <p>验证码:<input type="text" class="input" id="code_math" maxlength="4" /> <img src="code_math.php" id="getcode_math" title="看不清,点击换一张" align="absmiddle"></p>    
  25.         <p><input type="button" class="btn" id="chk_math" value="提交" /></p>    
  26.     </div>    
  27.         
  28. </div>    

JS代码

 

JavaScript Code
  1. <script type="text/javascript">  
  2. $(function(){  
  3.     //数字验证  
  4.     $("#getcode_num").click(function(){  
  5.         $(this).attr("src",'code_num.php?' + Math.random());  
  6.     });  
  7.     $("#chk_num").click(function(){  
  8.         var code_num = $("#code_num").val();  
  9.         $.post("chk_code.php?act=num",{code:code_num},function(msg){  
  10.             if(msg==1){  
  11.                 alert("验证码正确!");  
  12.             }else{  
  13.                 alert("验证码错误!");  
  14.             }  
  15.         });  
  16.     });  
  17.     //数字+字母验证  
  18.     $("#getcode_char").click(function(){  
  19.         $(this).attr("src",'code_char.php?' + Math.random());  
  20.     });  
  21.     $("#chk_char").click(function(){  
  22.         var code_char = $("#code_char").val();  
  23.         $.post("chk_code.php?act=char",{code:code_char},function(msg){  
  24.             if(msg==1){  
  25.                 alert("验证码正确!");  
  26.             }else{  
  27.                 alert("验证码错误!");  
  28.             }  
  29.         });  
  30.     });  
  31.     //中文验证码  
  32.     $("#getcode_zh").click(function(){  
  33.         $(this).attr("src",'code_zh.php?' + Math.random());  
  34.     });  
  35.     $("#chk_zh").click(function(){  
  36.         var code_zh = escape($("#code_zh").val());  
  37.         $.post("chk_code.php?act=zh",{code:code_zh},function(msg){  
  38.             if(msg==1){  
  39.                 alert("验证码正确!");  
  40.             }else{  
  41.                 alert("验证码错误!");  
  42.             }  
  43.         });  
  44.     });  
  45.     //google验证  
  46.     $("#getcode_gg").click(function(){  
  47.         $(this).attr("src",'code_gg.php?' + Math.random());  
  48.     });  
  49.     $("#chk_gg").click(function(){  
  50.         var code_gg = $("#code_gg").val();  
  51.         $.post("chk_code.php?act=gg",{code:code_gg},function(msg){  
  52.             if(msg==1){  
  53.                 alert("验证码正确!");  
  54.             }else{  
  55.                 alert("验证码错误!");  
  56.             }  
  57.         });  
  58.     });  
  59.     //算术验证  
  60.     $("#getcode_math").click(function(){  
  61.         $(this).attr("src",'code_math.php?' + Math.random());  
  62.     });  
  63.     $("#chk_math").click(function(){  
  64.         var code_math = $("#code_math").val();  
  65.         $.post("chk_code.php?act=math",{code:code_math},function(msg){  
  66.             if(msg==1){  
  67.                 alert("验证码正确!");  
  68.             }else{  
  69.                 alert("验证码错误!");  
  70.             }  
  71.         });  
  72.     });  
  73. });  
  74. </script>  

 code_num.php

PHP Code
  1. <?php  
  2. session_start();  
  3. getCode(4,60,20);  
  4.   
  5. function getCode($num,$w,$h) {  
  6.     $code = "";  
  7.     for ($i = 0; $i < $num$i++) {  
  8.         $code .= rand(0, 9);  
  9.     }  
  10.     //4位验证码也可以用rand(1000,9999)直接生成  
  11.     //将生成的验证码写入session,备验证页面使用  
  12.     $_SESSION["freejs_num"] = $code;  
  13.     //创建图片,定义颜色值  
  14.     Header("Content-type: image/PNG");  
  15.     $im = imagecreate($w$h);  
  16.     $black = imagecolorallocate($im, 0, 0, 0);  
  17.     $gray = imagecolorallocate($im, 200, 200, 200);  
  18.     $bgcolor = imagecolorallocate($im, 255, 255, 255);  
  19.   
  20.     imagefill($im, 0, 0, $gray);  
  21.   
  22.     //画边框  
  23.     imagerectangle($im, 0, 0, $w-1, $h-1, $black);  
  24.   
  25.     //随机绘制两条虚线,起干扰作用  
  26.     $style = array (  
  27.         $black,  
  28.         $black,  
  29.         $black,  
  30.         $black,  
  31.         $black,  
  32.         $gray,  
  33.         $gray,  
  34.         $gray,  
  35.         $gray,  
  36.         $gray  
  37.     );  
  38.     imagesetstyle($im$style);  
  39.     $y1 = rand(0, $h);  
  40.     $y2 = rand(0, $h);  
  41.     $y3 = rand(0, $h);  
  42.     $y4 = rand(0, $h);  
  43.     imageline($im, 0, $y1$w$y3, IMG_COLOR_STYLED);  
  44.     imageline($im, 0, $y2$w$y4, IMG_COLOR_STYLED);  
  45.   
  46.     //在画布上随机生成大量黑点,起干扰作用;  
  47.     for ($i = 0; $i < 80; $i++) {  
  48.         imagesetpixel($im, rand(0, $w), rand(0, $h), $black);  
  49.     }  
  50.     //将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成  
  51.     $strx = rand(3, 8);  
  52.     for ($i = 0; $i < $num$i++) {  
  53.         $strpos = rand(1, 6);  
  54.         imagestring($im, 5, $strx$strpossubstr($code$i, 1), $black);  
  55.         $strx += rand(8, 12);  
  56.     }  
  57.     imagepng($im);  
  58.     imagedestroy($im);  
  59. }  
  60. ?>  

 chk_code.php

PHP Code
  1. <?php  
  2. session_start();  
  3.   
  4. $action = $_GET['act'];  
  5. $code = trim($_POST['code']);  
  6. if($action=='num'){ //检验数字验证码  
  7.     if($code==$_SESSION["freejs_num"]){  
  8.        echo '1';  
  9.     }  
  10. }elseif($action=='char'){  
  11.     if($code==$_SESSION["freejs_char"]){  
  12.        echo '1';  
  13.     }  
  14. }elseif($action=='zh'){  
  15.     $code = uniDecode($code,'utf-8');  
  16.     $ses = iconv('gbk','utf-8',$_SESSION["freejs_zh"]);  
  17.     if($code==$ses){  
  18.        echo '1';  
  19.     }  
  20. }elseif($action=='gg'){  
  21.     //echo $_SESSION["freejs_gg"];exit;  
  22.     if(strtolower($code)==$_SESSION["freejs_gg"]){  
  23.        echo '1';  
  24.     }  
  25. }elseif($action=='math'){  
  26.     if($code==$_SESSION["freejs_math"]){  
  27.        echo '1';  
  28.     }  
  29. }else{  
  30.   
  31. }  
  32.   
  33. //处理接收中文字符串  
  34. function uniDecode($str$charcode) {  
  35.     $text = preg_replace_callback("/%u[0-9A-Za-z]{4}/", toUtf8, $str);  
  36.     return mb_convert_encoding($text$charcode'utf-8');  
  37. }  
  38. function toUtf8($ar) {  
  39.     foreach ($ar as $val) {  
  40.         $val = intval(substr($val, 2), 16);  
  41.         if ($val < 0x7F) { // 0000-007F  
  42.             $c .= chr($val);  
  43.         }  
  44.         elseif ($val < 0x800) { // 0080-0800  
  45.             $c .= chr(0xC0 | ($val / 64));  
  46.             $c .= chr(0x80 | ($val % 64));  
  47.         } else { // 0800-FFFF  
  48.             $c .= chr(0xE0 | (($val / 64) / 64));  
  49.             $c .= chr(0x80 | (($val / 64) % 64));  
  50.             $c .= chr(0x80 | ($val % 64));  
  51.         }  
  52.     }  
  53.     return $c;  
  54. }  
  55. ?>  

其他的几个freejs.net并不免费提供,上面2个也使用的比较多


原文地址:http://www.freejs.net/article_biaodan_31.html