php 验证码
1.
<!DOCTYPE html>
<html>
<head>
<title>留言页面</title>
</head>
<body>
<form method="post" action="">
验证码:<input type="text" size="10" name="check">
<img src="EX5_10_image.php">
<input type="submit" name="ok" value="提交">
</form>
</body>
</html>
<?php
session_start(); //启动session
if(isset($_POST['ok']))
{
$checkstr=$_SESSION['string']; //使用$_SESSION变量获取EX5_10_image.php页面上的验证码
$str=$_POST['check']; //用户输入的字符串
if(strcasecmp($str,$checkstr)==0) //不区分大小写进行比较
echo "<script>alert('验证码输入正确!');</script>";
else
echo "<script>alert('输入错误!');</script>";
}
?>
2.
<?php
session_start(); //启动session
header('Content-type: image/gif'); //输出头信息
$image_w=100; //验证码图形的宽
$image_h=25; //验证码图形的高
$number=range(0,9); //定义一个成员为数字的数组
$character=range("Z","A"); //定义一个成员为大写字母的数组
$result=array_merge($number,$character); //合并两个数组
$string=""; //初始化
$len=count($result); //新数组的长
for($i=0;$i<4;$i++)
{
$new_number[$i]=$result[rand(0,$len-1)]; //在$result数组中随机取出4个字符
$string=$string.$new_number[$i]; //生成验证码字符串
}
$_SESSION['string']=$string; //使用$_SESSION变量传值
$check_image=imagecreatetruecolor($image_w,$image_h); //创建图片对象
$white=imagecolorallocate($check_image, 255, 255, 255);
$black=imagecolorallocate($check_image, 0, 0, 0);
imagefill($check_image,0,0,$white); //设置背景颜色为白色
for($i=0;$i<100;$i++) //加入100个干扰的黑点
{
imagesetpixel($check_image, rand(0,$image_w), rand(0,$image_h),$black);
}
for($i=0;$i<count($new_number);$i++) //在背景图片中循环输出4位验证码
{
$x=mt_rand(1,8)+$image_w*$i/4; //设定字符所在位置X坐标
$y=mt_rand(1,$image_h/4); //设定字符所在位置Y坐标
//随机设定字符颜色
$color=imagecolorallocate($check_image,mt_rand(0,200),mt_rand(0,200),mt_rand(0,200));
//输入字符到图片中
imagestring($check_image,5,$x,$y,$new_number[$i],$color);
}
imagepng($check_image);
imagedestroy($check_image);
?>
3.
array_merge()函数可以将一个或多个数组合并,一个数组中的值附加在前一个数组的后面,返回作为结果的数组。语法格式如下:
array array_merge(array $array1 [, array $array2 [, array $... ]])
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前面的一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。例如:
<?php
$array1=array("color"=>"red",2,4);
$array2=array("a","color" => "green",4);
$result=array_merge($array1, $array2); //合并两个数组
print_r($result);
//输出:Array ( [color] => green [0] => 2 [1] => 4 [2] => a [3] => 4 )
?>