问题是不论输入正确的验证码还是错误的验证码 点击"提交" 之后都提示错误...请大侠帮忙解决
yz.php 首页<?php @header("content-type:text/html; charset=UTF-8");
//打开session
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP验证码示例</title>
</head>
<body>
验证码:
<img src="ShowKey.php" name="KeyImg" id="KeyImg" width="70" height="23" />
<a href="#" onClick="change('KeyImg')">换一张</a>
<br>
<form action="yz_pd.php" method="post">
输入验证码:<input name="imgId" style="width:60">
<input type="submit" value="确定">
</form>
</body>
<script language="javascript1.2" type="text/javascript">
function change(id){
document.getElementById(id).src ='ShowKey.php?'+Math.random(1);
}
</script>
</html>
yz_pd.php 提交的判断页<?php
//开启session
session_start();
//得到用户输入的验证码,并转换成大写
$imgId_req = $_REQUEST['imgId'];
echo $imgId_req;
$imgId_req = strtoupper($imgId_req);
echo $imgId_req;
//验证该字符串是否注册了session变量
if (session_is_registered($imgId_req) == true) {
echo "<font color=blue >通过验证!</font>";
} else {
echo "<font color=red >验证错误!</font>";
}
//关闭session,以清除所有注册过的变量
session_destroy();
?>
ShowKey.php 生成验证码文件<?php
session_start();
//设置COOKIE或Session
function esetcookie($name,$str,$life=0){
//本函数将字符串 str 全部变小写字符串使验证码输入不区分大小写----在提交表单进行session比较同样需要次函数转化
$_SESSION[$name]=strtolower($str);
}//获取随机字符 此函数区分字符大小写 如果不区分大小写可加入函数strtolower
function domake_password($len)
{
$chars = array(
/*"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z",*/ "0", "1", "2",
"3", "4", "5", "6", "7", "8", "9"
);
$charsLen = count($chars) - 1;
shuffle($chars);// 将数组打乱
$output = "";
for ($i=0; $i<$len; $i++)
{
$output .= $chars[mt_rand(0, $charsLen)]; //获得一个数组元素
}
return $output;
} //显示验证码
function ShowKey(){
$key=domake_password(4);//获取随机值
$set=esetcookie("checkkey",$key);//将随机值写入cookie或session
//是否支持gd库
if(function_exists("imagejpeg"))
{
header ("Content-type: image/jpeg");
$img=imagecreate(47,20);
$blue=imagecolorallocate($img,102,102,102);
$white=ImageColorAllocate($img,255,255,255);
$black=ImageColorAllocate($img,71,71,71);
imagefill($img,0,0,$blue);
imagestring($img,5,6,3,$key,$white);
for($i=0;$i<90;$i++) //加入干扰象素
{
imagesetpixel($img,rand()%70,rand()%30,$black);
}
imagejpeg($img);
imagedestroy($img);
}
elseif (function_exists("imagepng"))
{
header ("Content-type: image/png");
$img=imagecreate(47,20);
$blue=imagecolorallocate($img,102,102,102);
$white=ImageColorAllocate($img,255,255,255);
$black=ImageColorAllocate($img,71,71,71);
imagefill($img,0,0,$blue);
imagestring($img,5,6,3,$key,$white);
for($i=0;$i<90;$i++) //加入干扰象素
{
imagesetpixel($img,rand()%70,rand()%30,$black);
}
imagepng($img);
imagedestroy($img);
}
elseif (function_exists("imagegif"))
{
header("Content-type: image/gif");
$img=imagecreate(47,20);
$blue=imagecolorallocate($img,102,102,102);
$white=ImageColorAllocate($img,255,255,255);
$black=ImageColorAllocate($img,71,71,71);
imagefill($img,0,0,$blue);
imagestring($img,5,6,3,$key,$white);
for($i=0;$i<90;$i++) //加入干扰象素
{
imagesetpixel($img,rand()%70,rand()%30,$black);
}
imagegif($img);
imagedestroy($img);
}
elseif (function_exists("imagewbmp"))
{
header ("Content-type: image/vnd.wap.wbmp");
$img=imagecreate(47,20);
$blue=imagecolorallocate($img,102,102,102);
$white=ImageColorAllocate($img,255,255,255);
$black=ImageColorAllocate($img,71,71,71);
imagefill($img,0,0,$blue);
imagestring($img,5,6,3,$key,$white);
for($i=0;$i<90;$i++) //加入干扰象素
{
imagesetpixel($img,rand()%70,rand()%30,$black);
}
imagewbmp($img);
imagedestroy($img);
}
else
{
//不支持验证码
header("content-type:image/jpeg\r\n");
header("Pragma:no-cache\r\n");
header("Cache-Control:no-cache\r\n");
header("Expires:0\r\n");
$fp = fopen("data/vdcode.jpg","r");
}
}
ShowKey();
?>
yz.php 首页<?php @header("content-type:text/html; charset=UTF-8");
//打开session
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP验证码示例</title>
</head>
<body>
验证码:
<img src="ShowKey.php" name="KeyImg" id="KeyImg" width="70" height="23" />
<a href="#" onClick="change('KeyImg')">换一张</a>
<br>
<form action="yz_pd.php" method="post">
输入验证码:<input name="imgId" style="width:60">
<input type="submit" value="确定">
</form>
</body>
<script language="javascript1.2" type="text/javascript">
function change(id){
document.getElementById(id).src ='ShowKey.php?'+Math.random(1);
}
</script>
</html>
yz_pd.php 提交的判断页<?php
//开启session
session_start();
//得到用户输入的验证码,并转换成大写
$imgId_req = $_REQUEST['imgId'];
echo $imgId_req;
$imgId_req = strtoupper($imgId_req);
echo $imgId_req;
//验证该字符串是否注册了session变量
if (session_is_registered($imgId_req) == true) {
echo "<font color=blue >通过验证!</font>";
} else {
echo "<font color=red >验证错误!</font>";
}
//关闭session,以清除所有注册过的变量
session_destroy();
?>
ShowKey.php 生成验证码文件<?php
session_start();
//设置COOKIE或Session
function esetcookie($name,$str,$life=0){
//本函数将字符串 str 全部变小写字符串使验证码输入不区分大小写----在提交表单进行session比较同样需要次函数转化
$_SESSION[$name]=strtolower($str);
}//获取随机字符 此函数区分字符大小写 如果不区分大小写可加入函数strtolower
function domake_password($len)
{
$chars = array(
/*"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z",*/ "0", "1", "2",
"3", "4", "5", "6", "7", "8", "9"
);
$charsLen = count($chars) - 1;
shuffle($chars);// 将数组打乱
$output = "";
for ($i=0; $i<$len; $i++)
{
$output .= $chars[mt_rand(0, $charsLen)]; //获得一个数组元素
}
return $output;
} //显示验证码
function ShowKey(){
$key=domake_password(4);//获取随机值
$set=esetcookie("checkkey",$key);//将随机值写入cookie或session
//是否支持gd库
if(function_exists("imagejpeg"))
{
header ("Content-type: image/jpeg");
$img=imagecreate(47,20);
$blue=imagecolorallocate($img,102,102,102);
$white=ImageColorAllocate($img,255,255,255);
$black=ImageColorAllocate($img,71,71,71);
imagefill($img,0,0,$blue);
imagestring($img,5,6,3,$key,$white);
for($i=0;$i<90;$i++) //加入干扰象素
{
imagesetpixel($img,rand()%70,rand()%30,$black);
}
imagejpeg($img);
imagedestroy($img);
}
elseif (function_exists("imagepng"))
{
header ("Content-type: image/png");
$img=imagecreate(47,20);
$blue=imagecolorallocate($img,102,102,102);
$white=ImageColorAllocate($img,255,255,255);
$black=ImageColorAllocate($img,71,71,71);
imagefill($img,0,0,$blue);
imagestring($img,5,6,3,$key,$white);
for($i=0;$i<90;$i++) //加入干扰象素
{
imagesetpixel($img,rand()%70,rand()%30,$black);
}
imagepng($img);
imagedestroy($img);
}
elseif (function_exists("imagegif"))
{
header("Content-type: image/gif");
$img=imagecreate(47,20);
$blue=imagecolorallocate($img,102,102,102);
$white=ImageColorAllocate($img,255,255,255);
$black=ImageColorAllocate($img,71,71,71);
imagefill($img,0,0,$blue);
imagestring($img,5,6,3,$key,$white);
for($i=0;$i<90;$i++) //加入干扰象素
{
imagesetpixel($img,rand()%70,rand()%30,$black);
}
imagegif($img);
imagedestroy($img);
}
elseif (function_exists("imagewbmp"))
{
header ("Content-type: image/vnd.wap.wbmp");
$img=imagecreate(47,20);
$blue=imagecolorallocate($img,102,102,102);
$white=ImageColorAllocate($img,255,255,255);
$black=ImageColorAllocate($img,71,71,71);
imagefill($img,0,0,$blue);
imagestring($img,5,6,3,$key,$white);
for($i=0;$i<90;$i++) //加入干扰象素
{
imagesetpixel($img,rand()%70,rand()%30,$black);
}
imagewbmp($img);
imagedestroy($img);
}
else
{
//不支持验证码
header("content-type:image/jpeg\r\n");
header("Pragma:no-cache\r\n");
header("Cache-Control:no-cache\r\n");
header("Expires:0\r\n");
$fp = fopen("data/vdcode.jpg","r");
}
}
ShowKey();
?>
//验证该字符串是否注册了session变量
if (session_is_registered($imgId_req) == true) {
echo "<font color=blue >通过验证!</font>";
} else {
echo "<font color=red >验证错误!</font>";
} 这段代码的方法 判断错误
你改成 if ($_SESSION['checkkey'] == $imgId_req) {