验证码图片与SESSION中的值不同步?
不知什么原因,求解决
实例:http://wwsw.janwan.info
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>wwswERP</title> <script src="js/jquery-1.7.1.min.js" type="text/javascript"></script> <link href="css/main.css" rel="stylesheet" type="text/css" /> <script> function usercheck(){ if ($("#username").val()==""){ $("#sName").html('<font style=font-size:5px face=微软雅黑 color=red>*用户名不能为空</font>'); } else{ //$("#sName").html('用户名输入正确'); $.get("lib/check_regdata.php?ajax_a=0&tttt="+Math.random()+"&ajax_user="+$("#username").val(), function(result){ $("#sName").html(result); });
} }
function mailcheck(){ if ($("#email").val()==""){ $("#sMail").html('<font style=font-size:5px face=微软雅黑 color=red>*邮箱名不能为空</font>'); } else{ //$("#sName").html('用户名输入正确'); $.get("lib/check_regdata.php?ajax_a=1&tttt="+Math.random()+"&ajax_email="+$("#email").val(), function(result){ $("#sMail").html(result); });
} }
function pwdcheck(){ if ($("#password_1").val()==""){ $("#sPwd").html('<font style=font-size:5px face=微软雅黑 color=red>*密码不能为空</font>'); } else{ $("#sPwd").html('<font style=font-size:5px face=微软雅黑 color=red>*密码输入正确</font>'); } }
function pwdsamecheck(){ if ($("#password_1").val()!=""){ if ($("#password_1").val()==$("#password_2").val()){ $("#srPwd").html('<font style=font-size:5px face=微软雅黑 color=red>*密码一致</font>'); } else{ $("#srPwd").html('<font style=font-size:5px face=微软雅黑 color=red>*密码不一致</font>'); } } else{ $("#sPwd").html('<font style=font-size:5px face=微软雅黑 color=red>*请填写密码</font>'); $("#srPwd").html('<font style=font-size:5px face=微软雅黑 color=red>*密码不一致</font>'); } }
function Ninacheck(){ if ($("#nickname").val()==""){ $("#snName").html('<font style=font-size:5px face=微软雅黑 color=red>昵称不能为空</font>'); } else{ $("#snName").html('<font style=font-size:5px face=微软雅黑 color=red>昵称输入正确</font>'); } }
function Trnacheck(){ if ($("#truename").val()==""){ $("#stName").html('<font style=font-size:5px face=微软雅黑 color=red>姓名不能为空,必须为真实姓名</font>'); } else{ $("#stName").html('<font style=font-size:5px face=微软雅黑 color=red>姓名输入正确,必须为真实姓名</font>'); } }
function codecheck(){ if ($("#keycode").val()==""){ $("#scode").html('<font style=font-size:5px face=微软雅黑 color=red>*验证码不能为空</font>'); } else{ $.get("lib/check_regdata.php?ajax_a=2&tttt="+Math.random()+"&ajax_code="+$("#keycode").val(), function(result){ $("#scode").html(result); });
} }
</script> </head> <body id="html_all"> <?php for($s=0;$s<5;$s++) echo "<br>"; ?> <table border="0" background=img/login_bg.jpg style="width:600px;height:300px;" align="center"> <tr> <td> <form action="check_user.php" method="POST" align="center"> <table align="center" border="0"> <tr> <td><font style=font:15px face=微软雅黑 color=#009393><b>帐 号:</b></font></td> <td><input name="a_username" type="text" style="width:150px"></td></tr><tr> <td><font style=font:15px face=微软雅黑 color=#009393><b>密 码:</b></font></td> <td><input name="password" type="password" style="width:150px"></td><td rowspan="2"><img src="lib/checkcode.php?key_class=1" width="100px" height="50px" onclick="this.src='lib/checkcode.php?key_class=1&'+Math.random();"></td></tr><tr> <td><font style=font:15px face=微软雅黑 color=#009393><b>验证码:</b></font></td> <td><input name="keycode" type="text" style="width:150px"></td></tr><tr> <td></td> <td><input name="login"type="image" src="img/login.jpg" value="登陆"></td> <tr></tr> <tr></tr> <td></td> <td></td> <td><a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'"><font color=#009900>注册</font></a> <a href = "javascript:void(0)" onclick = "document.getElementById('light2').style.display='block';document.getElementById('fade2').style.display='block'"><font color=#009900>忘记密码?</font></a></td> </tr> </table> </form> </td> </tr> </table> <?php for($s=0;$s<6;$s++) echo "<br>"; ?> <div id="light" class="white_content"><div align="right"><a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">关闭</a></div><br> <form action="lib/lib.php?reg_user=ture" method="POST" align="center" id="reg"> <div align="center" ><font style=font:15px face=微软雅黑 color=#009393><b>万维思维系统注册</b></font></div><br> <table align="center" border="0"> <tr> <td width="100"><font style=font:15px face=微软雅黑 color=#009393><b>帐 号:</b></font></td> <td><input name="username" type="text" style="width:150px" id="username" onblur="javascript:usercheck();" /></td><td width="250"><span id="sName"></span></td></tr><tr> <td width="100"><font style=font:15px face=微软雅黑 color=#009393><b>邮 箱:</b></font></td> <td><input name="email" type="text" style="width:150px" id="email" onblur="javascript:mailcheck();" /></td><td width="250"><span id="sMail"></span></td></tr><tr> <td width="100"><font style=font:15px face=微软雅黑 color=#009393><b>密 码:</b></font></td> <td><input name="password_1" type="password" style="width:150px" id="password_1" onblur="javascript:pwdcheck();"></td><td width="250"><span id="sPwd"></span></td></tr><tr> <td width="100"><font style=font:15px face=微软雅黑 color=#009393><b>重 复:</b></font></td> <td><input name="password_2" type="password" style="width:150px" id="password_2" onblur="javascript:pwdsamecheck();"></td><td width="250"><span id="srPwd"></span></td></tr><tr> <td width="10"><font style=font:15px face=微软雅黑 color=#009393><b>昵 称:</b></font></td> <td><input name="nickname" type="text" style="width:150px" id="nickname" onblur="javascript:Ninacheck();"></td><td width="250"><span id="snName"></span></td></tr><tr> <td width="100"><font style=font:15px face=微软雅黑 color=#009393><b>姓 名:</b></font></td> <td ><input name="truename" type="text" style="width:150px" id="truename" onblur="javascript:Trnacheck();"></td><td width="250"><span id="stName"></span></td></tr><tr> <td width="100"><font style=font:15px face=微软雅黑 color=#009393><b>验证码:</b></font></td> <td><input name="keycode" type="text" style="width:150px" id="keycode" onblur="javascript:codecheck();"></td><td width="250"><span id="scode"></span></td></tr><tr> <td></td><td rowspan="2" align="left"><img src="lib/checkcode.php?key_class=2" width="100px" height="50px" onclick="this.src='lib/checkcode.php?key_class=2&'+Math.random();"></td></tr><tr></tr><tr> <td></td> <td align=center><br><input name="reg_user" type="image" src="img/reg.gif" value="注册" ></td></tr> </table> </form> </div> <div id="fade" class="black_overlay"></div> <div id="light2" class="white_content"><div align="right"><a href = "javascript:void(0)" onclick = "document.getElementById('light2').style.display='none';document.getElementById('fade2').style.display='none'">关闭</a></div><br> <form action="lib/lib.php?rec_pass=ture" method="POST" align="center"> <div align="center" ><font style=font:15px face=微软雅黑 color=#009393><b>万维思维系统密码恢复</b></font></div><br> <table align="center" border="0"> <tr> <td><font style=font:15px face=微软雅黑 color=#009393><b>帐 号:</b></font></td> <td><input name="username" type="text" style="width:150px"></td></tr><tr> <td><font style=font:15px face=微软雅黑 color=#009393><b>邮 箱:</b></font></td> <td><input name="usermail" type="text" style="width:150px"></td><td rowspan="2"><img src="lib/checkcode.php?key_class=3" width="100px" height="50px" onclick="this.src='lib/checkcode.php?key_class=3&'+Math.random();"></td></tr><tr> <td><font style=font:15px face=微软雅黑 color=#009393><b>验证码:</b></font></td> <td><input name="keycode" type="text" style="width:150px"></td> </tr><tr> <td></td> <td><br><input name="reg"type="image" src="img/REC_PASS.JPG" value="密码恢复"></td></tr> </table> </form> </div> <div id="fade2" class="black_overlay"></div>
</body> </html>
check_data
<?php //header("Content-type: text/html; charset=utf-8"); include "../config.php"; include "lib.php"; $ajax_a=$_GET["ajax_a"]; switch($ajax_a){ case 0: $ajax_user=$_GET["ajax_user"]; if(!isset($ajax_user)){$ajax_user=1;} $send_commond=mysql_query("select * from wwsw_user where username='$ajax_user'"); if (mysql_num_rows($send_commond)>0){ echo "<font style=font-size:5px face=微软雅黑 color=red>*此用户名不可用</font>"; } else{ echo "<font style=font-size:5px face=微软雅黑 color=red>*此用户名可用</font>"; } break; case 1: $ajax_email=$_GET["ajax_email"]; if(!isset($ajax_email)){$ajax_email=1;} if (preg_match("^([a-za-z0-9_-])+@([a-za-z0-9_-])+(.[a-za-z0-9_-])+^", $ajax_email)){ $send_commond=mysql_query("select * from wwsw_user where email='$ajax_email'"); if (mysql_num_rows($send_commond)>0){ echo "<font style=font-size:5px face=微软雅黑 color=red>*此邮箱名不可用</font>"; } else{ echo "<font style=font-size:5px face=微软雅黑 color=red>*此邮箱名可用</font>"; } } else{ echo "<font style=font-size:5px face=微软雅黑 color=red>*邮箱格式不正确</font>"; }
break; case 2: Session_start(); $ajax_code=$_GET["ajax_code"]; $key=$_SESSION["sReg"]; if(!isset($ajax_code)){$ajax_code=2;} if($ajax_code==$_SESSION["sReg"]){ echo "<font style=font-size:5px face=微软雅黑 color=red>*验证码正确</font>"; echo $key; //unset($_SESSION["sReg"]); } else{ echo "<font style=font-size:5px face=微软雅黑 color=red>*验证码不正确</font>"; echo $key; //unset($_SESSION["sReg"]); } break; } ?>
check_code 此代码来自OSCHINA
<?php // +------------------------------------------------------------------------ // 验证码类,该类的对象能动态获取验证码图片,验证码字符保存在SESSION['code']中 // +------------------------------------------------------------------------ // 支持4种格式 数字 字母 汉字 混合 // +------------------------------------------------------------------------ // @Author : HelloChina(sanzi0930@163.com) // +------------------------------------------------------------------------ // @Date: 2012年6月7日11:03:00 // +------------------------------------------------------------------------ // @version 1.0 // +------------------------------------------------------------------------
class Vcode{ protected $width; //验证码宽度 protected $height; //验证码长度 protected $codeNum; //验证码字符个数 protected $codeType; //验证码类型 protected $fontSize; //字符大小 protected $fontType; //字体类型 protected $codeStr; //中文内容 protected $strNum; //中文个数 protected $imageType; //输出图片类型 protected $image; //图片资源 protected $checkCode; //验证码内容 /** +-------------------------------------------------------------------------------- * 取得验证码信息 +-------------------------------------------------------------------------------- * @param integer $width 验证码宽度 * @param integer $height 验证码高度 * @param integer $codeNum 验证码字符个数
* @param integer $codeType 验证码字符类型 1为数字 2为字母 3为汉字 4为混编 * @param integer $fontSize 验证码字体的大小 * @param string $fontType 验证码字体类型 * @param string $imageType 验证码输出图片类型 * @param string $codestr 中文验证码内容 +-------------------------------------------------------------------------------- */ public function __construct($width=100, $height=50, $codeNum=4, $codeType=4, $fontSize=12, $fontType='heiti.ttf' ,$imageType='jpeg', $codeStr='去我饿人他一哦平啊是的飞个好就看了在想才吧你吗'){ $this->width = $width; $this->height = $height; $this->codeNum = $codeNum; $this->codeType = $codeType; $this->fontSize = $fontSize; $this->fontType = $fontType; $this->codeStr = $codeStr; $this->strNum = strlen($this->codeStr)/3-1; $this->imageType = $imageType; $this->checkCode = $this->getCheckCode(); }
//+-------------------------------------------------------------------------------- //* 生成验证码字符 //+-------------------------------------------------------------------------------- //* @return string //+-------------------------------------------------------------------------------- public function __toString(){
$string = implode('', $this->getCheckCode()); $key_class=$_GET["key_class"]; session_start(); if($key_class==1){$_SESSION["sLogin"]=$string;} if($key_class==2){$_SESSION["sReg"]=$string;} if($key_class==3){$_SESSION["sRec"]=$string;} // $_SESSION["sLogin"]=$string; //登陆session中 $this->getImage(); //输出验证码 return ''; }
protected function getCheckCode(){ $string = array();
switch($this->codeType){ case 1: //数字字符串 $string = array_rand(range(0,9), $this->codeNum); break; case 2: //大字母字符串 $string = array_rand(array_flip(range('A', 'Z')), $this->codeNum); break; case 3: //汉字字符串
for($i=0; $i<($this->codeNum); $i++){ $start = mt_rand(0, $this->strNum); $string[$i]= self::msubstr($this->codeStr,$start); } break; case 4: //混合字符串 for($i=0; $i<($this->codeNum); $i++){ $rand=mt_rand(0,2); switch($rand){ case 0: $ascii = mt_rand(48,57); $string[$i] = sprintf('%c',$ascii); break; case 1: $ascii = mt_rand(97,122); $string[$i] = sprintf('%c',$ascii); break; case 2: $start = mt_rand(0, $this->strNum); $string[$i] = self::msubstr($this->codeStr,$start); break; }
}
} return $string; } //+-------------------------------------------------------------------------------- //* 中文截取 ThinkPHP中的中文截取checkCode //+-------------------------------------------------------------------------------- //* @return string //+-------------------------------------------------------------------------------- static protected function msubstr($str, $start=0, $length=1, $charset="utf-8") { if(function_exists("mb_substr")) $slice = mb_substr($str, $start, $length, $charset); elseif(function_exists('iconv_substr')) { $slice = iconv_substr($str,$start,$length,$charset); }else{ $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; $re['big5'] = "/[\x01-\x7f]|\x81-\xfe/"; preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); } return $slice; } //+-------------------------------------------------------------------------------- //* 分配画布资源 //+-------------------------------------------------------------------------------- protected function createRes(){ $this->image = imagecreatetruecolor($this->width,$this->height); } //+-------------------------------------------------------------------------------- //* 填充背景颜色 //+--------------------------------------------------------------sanzi0930@163.com------------------
protected function bgColor(){ $write = imagecolorallocate($this->image, 255, 255, 255); imagefill($this->image, 0, 0, $write); } //+-------------------------------------------------------------------------------- //* 背景线条 //+-------------------------------------------------------------------------------- protected function filledLine(){ //横线
$lineColor1 = imagecolorallocate($this->image, 0xda, 0xd9, 0xd1); for($j=3; $j<=$this->height-3; $j=$j+3){ imageline($this->image, 2, $j, $this->width-2, $j, $lineColor1); } //竖线 $lineColor2 = imagecolorallocate($this->image, 0xda,0xd9,0xd1); for($j=2;$j<100;$j=$j+6){ imageline($this->image, $j, 0, $j+8, $this->height, $lineColor2); } }
//+-------------------------------------------------------------------------------- //* 画边框 //+-------------------------------------------------------------------------------- protected function bgBorder(){ $bordercolor = imagecolorallocate($this->image, 0x9d, 0x9e, 0x96); imagerectangle($this->image, 0, 0, $this->width-1, $this->height-1, $bordercolor); }
//+-------------------------------------------------------------------------------- //* 字符颜色 $this->getCheckCode() //+-------------------------------------------------------------------------------- protected function textColor(){ $fontColor[] = imagecolorallocate($this->image, 0x15, 0x15, 0x15); $fontColor[] = imagecolorallocate($this->image, 0x95, 0x1e, 0x04); $fontColor[] = imagecolorallocate($this->image, 0x93, 0x14, 0xa9); $fontColor[] = imagecolorallocate($this->image, 0x12, 0x81, 0x0a); $fontColor[] = imagecolorallocate($this->image, 0x06, 0x3a, 0xd5); return $fontColor; }
//+-------------------------------------------------------------------------------- //* 把字符写到画布上去 //+--------------------------------------------------------------------------------
protected function writeText(){ $fontColor = $this->textColor(); $rndstring = $this->getCheckCode();
for($i=0; $i<4; $i++){ $c = mt_rand(-30, 30); $x=floor($this->width/$this->codeNum)$i+5; $y = $this->height/2+$this->fontSize/2; imagettftext($this->image, $this->fontSize, $c, $x, $y, $fontColor[$i], $this->fontType, $rndstring[$i]); } } //+-------------------------------------------------------------------------------- // 输出图片格式 //+-------------------------------------------------------------------------------- protected function output(){ $func='image'.$this->imageType; $header='Content-type:image/'.$this->imageType; if(function_exists($func)){ header($header); $func($this->image); }else{ echo '本系统不支持此方法'; return false; } } //+-------------------------------------------------------------------------------- //* 输出验证码 //+-------------------------------------------------------------------------------- protected function getImage(){ $this->createRes(); $this->bgColor(); $this->bgBorder(); $this->filledline(); $this->writeText(); $this->output(); } //+-------------------------------------------------------------------------------- //* 销毁图片 //+-------------------------------------------------------------------------------- public function __destruct(){ imagedestroy($this->image); }
}
$code = new Vcode(); echo $code;
?>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。