php验证码相关

php验证码相关

0x01.实现验证码

// verification_code.php
<?php

function GetRandStr($length){
	 //字符组合
	 $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	 $len = strlen($str)-1;
	 $randstr = '';
	 for($i=0;$i<$length;$i++) {
	  	$num=mt_rand(0,$len);
	  	$randstr .=" ".$str[$num];
	 }

	 return $randstr;
}

$code = GetRandStr(4);
session_start();
$_SESSION['code'] = str_replace(" ", "", $code);
// var_dump($_SESSION);die();
//var_dump(str_replace(" ", "", GetRandStr(4)));die();

//创建新的true-color图像。此函数返回给定尺寸的空白图像
$im = imageCreateTrueColor(100, 50);
// magecolorallocate — 为一幅图像分配颜色
$white = imageColorAllocate($im, 255, 255, 255);
$black = imageColorAllocate($im, 0, 0, 64);
//区域填充
imageFill($im, 0, 0, $white);
// 两个给定点之间绘制一条线段,用来干扰验证码识别
imageLine($im, 0, rand(20,50), 200, rand(20,50), $black);
//水平绘制字符串
imageString($im, 12, 6, 20, $code, $black);
header('Content-type: image/png');
imagePng($im);
imageDestroy($im);
?>

0x02. 调用验证码以及实现点击更换

<img id="checkpic" onclick="chang_pic();" src='./verification_code.php' />
<script type="text/javascript">
function chang_pic(){document.getElementById('checkpic').src="./verification_code.php?"+Math.random();
} 
</script>
<p>点击图片更换验证码</p>

0x03. 后端接受验证码以及判断验证码是否正确

// 这里的判断主要是利用上面验证码中开启了SESSION,然后将验证码写入了SESSION中去判断$_SESSION['code']
<?php
header("Content-Type:text/html;charset=utf-8");
session_start();

$username = $_POST["username"];
$password = $_POST["password"];
$captcha = $_POST["captcha"];

if (!empty($username) && !empty($password) && !empty($captcha)) {

	if (strtolower($captcha) == strtolower($_SESSION['code'])) {

		if ($username == "admin" && $password == "123456") {
			echo "登陆成功!";
		}else{
			echo "账户或密码错误!";
		}
	}
	else{
		echo "验证码错误!";
	}
}
else{
	echo "请输入账号密码以及验证码!";
}

?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值