"
验证码图片与SESSION中的值不同步?
不知什么原因,求解决
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]([\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;
?>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。