php jquery ajax 验证码,php+jQuery+ajax网页验证码

一般我们在做网页的时候,再设计用户登录,注册或者留言的时候都经常用到验证码,下面是一种简单实用的php网页验证码的生成和检验过程。

testcode.php

验证码

.wrong{ color:red;}

.right{ color:black;}

function check_code(){

var URL = "checkCode.php";

var RequestData = 'action=checkcode&code='+$('#R-code').val();

$.ajax({

type:'POST',

url:URL,

data:RequestData,

async:false,

cache: false,

success:function(responseData){

var Result = eval('('+responseData+')');

if(Result.verifycode=='Y'){

$('#info-code').removeClass().html('验证码输入正确').addClass("right");

}

else $('#info-code').removeClass().html('验证码输入错误').addClass("wrong");

}

});

}

function refresh_code(){

document.getElementById("imgcode").src="createCode.php?a="+Math.random();

}

function getCodeHtml(){

$codehtml='

'

.'

Code Test

'

.'Code:'

.'验证码看不清?换一张
'

.'
'

.''

.'

';

echo $codehtml;

}

echo getCodeHtml();

?>

createCode.php

session_start();

$codeNum=4; //验证码个数

$codeWidth=80; //验证码宽度

$codeHeight=18; //验证码高度

$code=' ';

for($i=0;$i

switch(rand(0,2))

{

case 0:$code[$i]=chr(rand(48,57)); break; //数字

case 1:$code[$i]=chr(rand(65,90)); break; //大写字母

case 2:$code[$i]=chr(rand(97,122));break; //小写字母

}

}

$_SESSION["VerifyCode"]=$code;

$image=imagecreate($codeWidth,$codeHeight);

imagecolorallocate($image,255,255,255);

//生成干扰像素

for($i=0;$i<80;$i++){

$dis_color=imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));

imagesetpixel($image,rand(1,$codeWidth),rand(1,$codeHeight),$dis_color);

}

//打印字符到图像

for($i=0;$i

$char_color=imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));

imagechar($image,60,($codeWidth/$codeNum)*$i,rand(0,5),$code[$i],$char_color);

}

header("Content-type:image/png");

imagepng($image); //输出图像到浏览器

imagedestroy($image); //释放资源

?>

checkCode.php

session_start();

@$postcode = $_POST['code'];

if((strtoupper($postcode)) == strtoupper(($_SESSION["VerifyCode"])))

echo '{"verifycode":"Y"}';

else echo '{"verifycode":"N"}';

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值