2
回答
验证码图片与SESSION中的值不同步
科大讯飞通用文字识别100000次/天免费使用。立即申请   

验证码图片与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>帐&nbsp;&nbsp;&nbsp;号:</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>密&nbsp;&nbsp;&nbsp;码:</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>&nbsp;&nbsp;<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>帐&nbsp;&nbsp;&nbsp;号:</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>邮&nbsp;&nbsp;&nbsp;箱:</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>密&nbsp;&nbsp;&nbsp;码:</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>重&nbsp;&nbsp;&nbsp;复:</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>昵&nbsp;&nbsp;&nbsp;称:</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>姓&nbsp;&nbsp;&nbsp;名:</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>帐&nbsp;&nbsp;&nbsp;号:</b></font></td>
<td><input name="username" type="text" style="width:150px"></td></tr><tr>
<td><font style=font:15px face=微软雅黑 color=#009393><b>邮&nbsp;&nbsp;&nbsp;箱:</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

<?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 .php   此代码来自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]([\x40-\x7e]|\xa1-\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; ?>

PHP
举报
顶部