PHP开发之验证码
很多网站登录时都会有个验证码,下面我们就来介绍验证码功能的实现方法。
在前段登录页面代码中有这么一段:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="format-detection" content="telephone=no" /> <title>登录页面实例展示</title> <link rel="stylesheet" type="text/css" href="/phpMyAdmin/login.css"/> </head> <body> <p> <span> <input type="text" name="code" id="code" class="pf_ipt_verify w230" placeholder="验证码" autocomplete="off" tabindex="3"/> <img src="/phpMyAdmin/code.php" onClick="this.src='/phpMyAdmin/code.php?nocache='+Math.random()" style="cursor:hand"> </span> </p> </body> </html>
这个就是我们在页面上见到的验证码的图片。给验证码图片一个点击事件,就可以实现点击一次图片,更换不同的数字了。
另外,验证码是如何生成的呢,就是下面这段代码:
<?php
session_start();
Header("Content-type:image/PNG");
$im = imagecreate(150,45);
$back = imagecolorallocate($im, 245, 245, 245);
imagefill($im, 0,0, $back);
$vcodes = "";
for($i = 0; $i < 4; $i++){
$font = imagecolorallocate($im, rand(100, 255), rand(0, 100), rand(100, 255));
$authnum = rand(0, 9);
$vcodes .= $authnum;
imagestring($im, 5, 50 + $i * 10, 20, $authnum, $font);
}
$_SESSION['VCODE'] = $vcodes;
for($i=0;$i<200;$i++) {
$randcolor = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255));
imagesetpixel($im, rand()%150, rand()%150, $randcolor); //
}
imagepng($im);
imagedestroy($im);
?>这是代码生成的后台程序。
在登录的后端代码中对代码进行判断,一是判断有没有输入,二是判断输入的对不对,代码如下:
if(!$_POST['code']){
echo('验证码不能为空');
return;
}else if($_POST['code']!=$_SESSION['VCODE']){
echo('验证码不正确');
return;
}

我的太阳
3967
8年前 添加回复 0