设为首页 收藏本站
查看: 410|回复: 0

[经验分享] PHP+AJAX验证码的简单代码示例

[复制链接]

尚未签到

发表于 2017-4-9 09:03:41 | 显示全部楼层 |阅读模式
vcode.php

<?php   
session_start();//开启session功能  
header("Cache-Control: no-cache, must-revalidate");  

$im = imagecreate(60,30);//定义图片宽度和高度  
$vcode=getVCode();//获取要显示的字符  
$bg = imagecolorallocate($im, 255, 255, 255);//定义图片背景  
$txt = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));//定义要显示字符的颜色  
imagestring($im, 8, 0, 0, $vcode, $txt);//写入字符串到图片  
header(Content-type: image/jpeg);//定义Content-type  
imagejpeg($im);//以JPEG格式显示图片  
$_SESSION[vcode]=$vcode;//写入SESSION  
  
function getVCode(){    //随机生成用户指定个数的字符串  
  $codenum=4;  
  $checkcode="";  
  $string="";//要显示的可选字符串,请自行定义;  
  for($i=0;$i<$codenum;$i  ) {   
  $number=rand(0,2);   
  switch($number){  //根据可选字符串可灵活定义;  
       case 0 : $rand_number=rand(0,10);break;     
       case 1 : $rand_number=rand(11,36);break;   
       case 2 : $rand_number=rand(37,62);break;   
  }   
  $code=substr($string,$rand_number,1);  
  $checkcode=$checkcode.$code;   
  }   
  return  $checkcode;  
}      
?>


loginform.html

<!--详细信息-->
<form name="loginform">
<table class="dtable">
        <tr>
          <td width="100"> 用户名 </td><td><input class="txtbox" name="loginname" type=text size="30"/></td>
        </tr>
        <tr>
          <td width="100"> 密码 </td><td><input class="txtbox" name="loginpwd" type=password size="30"/></td>
        </tr>
        <tr>
          <td width="100"> 验证码 </td>
          <td><input class="txtbox" name="loginvcode" type=text size="10"/>
          <img id="vcode" src="vcode.php" alt="验证码" align="absmiddle"/>
          <a href="javascript:getVCode();">换一张</a></td>
        </tr>
</table>
<table>
        <tr><td colspan="2">
          <input class="btn" name="ok" type="button" value="登录" >
          <input class="btn" name="reset" type="reset" value="重写">
          <input class="btn" name="exit" type="button" value="退出" >
        </td></tr>
</table>
<table>
        <tr><td colspan="2">
          还没有注册? <a href="javascript:setType('usr');Show('0','addform');">马上注册</a>
          忘记密码? <a href="javascript:setType('usr');Show('0','pwdform');">取回密码</a>
        </td></tr>
</table>
</form>


vcode.js

//该函数用来获取验证码
function getVCode() {
        var vcode=document.getElementById('vcode');
        vcode.src = 'vcode.php?nocache='+new Date().getTime();
}

//该函数用来验证验证码
function usrVCode() {
        if(!checkLogin())return false;
        var loginvcode=document.loginform.loginvcode.value;
        var xmlhttp1=createAjax();
        var data='&loginvcode='+loginvcode;
if (xmlhttp1) {
  var state=document.getElementById('state');
          xmlhttp1.open('get',?do=vcodedo'+data,true);  
  xmlhttp1.send(null);
  xmlhttp1.onreadystatechange=function() {
    if (xmlhttp1.readyState==4 && xmlhttp1.status==200) {
             setTimeout("state.style.display = 'none';",1000);
     var myres=xmlhttp1.responseText;
             var result=(myres==1)?"恭喜您,验证码输入正确!":"很抱歉,验证码输入错误!";
             if(myres==0)alert(result);
             if(myres==1)usrLogin();
            }
    else {
             state.style.display = "";
     state.style.left=(document.body.offsetWidth-350)/2;
             state.style.top=(document.body.offsetHeight-235)/2+document.body.scrollTop;
    }
          }
}
}

这是我的一个项目中用到的,有问题可以到http://www.yjzzj.com/flashsay/询问。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-362241-1-1.html 上篇帖子: php 中this关键字 :: 符号 magic method 下篇帖子: 百万级PHP网站Poppen.de的架构分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表