欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP验证码生成程序几种方法

程序员文章站 2024-01-09 11:23:10
...
PHP验证码生这个功能常用于用用户注册登录或发布信息时一个安全验证的基本功能,下面小编来给大家介绍一些常用的PHP验证码生成代码与应用实例。

例1,直接使用数组,此方法比较简单

代码如下 复制代码






$arr=array(2,3,4,5,8,1,9,7,"a","b","c","d","e","f","中","国","南","北","大","小","多","少");
$b=array_rand($arr,3);

?>



/>



echo “code:";
foreach($b as $key)
{
echo $arr[$key];
}
?>


(以上语句另存为一个php文件)

header(“Content-Type:text/html;charset=utf-8");
echo $_POST["yanzhengma"];
echo $_POST["code"];
if($_POST["yanzhengma"]==$_POST["code"])
{
echo “验证码正确";
}
else
{
die(“");
}
?>

(以上语句另存为yz.php)


例2,也是用数组只不是数据多了一点

代码如下 复制代码

function UPCAbarcode($code) {
$lw = 2; $hi = 100;
$Lencode = array('0001101','0011001','0010011','0111101','0100011',
'0110001','0101111','0111011','0110111','0001011');
$Rencode = array('1110010','1100110','1101100','1000010','1011100',
'1001110','1010000','1000100','1001000','1110100');
$ends = '101'; $center = '01010';
/* UPC-A Must be 11 digits, we compute the checksum. */
if ( strlen($code) != 11 ) { die("UPC-A Must be 11 digits."); }
/* Compute the EAN-13 Checksum digit */
$ncode = '0'.$code;
$even = 0; $odd = 0;
for ($x=0;$x if ($x % 2) { $odd += $ncode[$x]; } else { $even += $ncode[$x]; }
}
$code.=(10 - (($odd * 3 + $even) % 10)) % 10;
/* Create the bar encoding using a binary string */
$bars=$ends;
$bars.=$Lencode[$code[0]];
for($x=1;$x $bars.=$Lencode[$code[$x]];
}
$bars.=$center;
for($x=6;$x $bars.=$Rencode[$code[$x]];
}
$bars.=$ends;
/* Generate the Barcode Image */
$img = ImageCreate($lw*95+30,$hi+30);
$fg = ImageColorAllocate($img, 0, 0, 0);
$bg = ImageColorAllocate($img, 255, 255, 255);
ImageFilledRectangle($img, 0, 0, $lw*95+30, $hi+30, $bg);
$shift=10;
for ($x=0;$x if (($x=45 && $x=85)) { $sh=10; } else { $sh=0; }
if ($bars[$x] == '1') { $color = $fg; } else { $color = $bg; }
ImageFilledRectangle($img, ($x*$lw)+15,5,($x+1)*$lw+14,$hi+5+$sh,$color);
}
/* Add the Human Readable Label */
ImageString($img,4,5,$hi-5,$code[0],$fg);
for ($x=0;$x ImageString($img,5,$lw*(13+$x*6)+15,$hi+5,$code[$x+1],$fg);
ImageString($img,5,$lw*(53+$x*6)+15,$hi+5,$code[$x+6],$fg);
}
ImageString($img,4,$lw*95+17,$hi-5,$code[11],$fg);
/* Output the Header and Content. */
header("Content-Type: image/png");
ImagePNG($img);
}

UPCAbarcode('12345678901');

?>

例3,这个是一个比较完整的ajax刷新验证码实例


vcode.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 $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

代码如下 复制代码















用户名
密码
验证码
PHP验证码生成程序几种方法
换一张











还没有注册? 马上注册
忘记密码? 取回密码

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;
}
}
}
}

上一篇:

下一篇: