session保存验证码用户名,验证登陆信息
2013-05-20 21:18
232 查看
用户名:<input name="username" id="username" type="text" />
密 码:<input name="password" type="password"/>
验证码: <input type="text" name="ckcode"><img src="/TP_xiangmu/Public/8yanzhengma.php" style="cursor:pointer" onclick="refreshcode(this,this.src)">//引用验证码类
<script language="javascript" type="text/javascript">
function refreshcode(obj,url){
obj.src=url+"?nowtime="+Math.random();//点击刷新验证码
}
</script>
php文件
public function denglu(){
$username=$_POST['username'];
$password=$_POST['password'];
$goods=M('User');//ThinkPHP中链接数据库
$lists=$goods->where("username='".$username."'")->where("password='".$password."'")->select();//ThinkPHP中查询数据库里是否有此用户名,不在TP框架中写,用sql语句查询
if($lists){//如果存在,说明数据库中有这个用户名
session_start();//开启session保存验证码
if(trim(strtolower($_POST["ckcode"]))==strtolower($_SESSION["ckcode"])){//验证码不区分大小写
$_SESSION["user"]=$username;//保存登陆的用户名
$user=$_SESSION['user'];
//setcookie("name",$username);//用cookie做
$this->assign('user',$user);
$this->success('登录成功','__URL__/index');}else{$this->error('验证码错误!','__URL__/index'); }
}else{
$this->error('登录信息错误','__URL__/index');
}
}
下面是验证码类
<?php
ob_clean();
$im=imagecreatetruecolor(80,20);//创建画布
$bgcolor=imagecolorallocate($im,220,230,230);//调色
$border=imagecolorallocate($im,0,0,255);//设置边框的颜色
$tcolor=imagecolorallocate($im,255,0,0);
$green=imagecolorallocate($im,0,0xff,0);
imagefill($im,10,10,$bgcolor);//填充背景色
imagerectangle($im,1,1,79,19,$border);//绘制边框,也就是一个矩形,画布(0,0,80,20)边框(1,1,79,19)
$num = rand(48,122);
//rand产生一个随机整数rand(5,10)产生5-10的随机数包括5,10
for($i=0;$i<4;$i++){
$num_case=rand(0,2);//产生随机数0-2,根据数值的不同决定产生的是数字|小写|大写
switch($num_case){
case 0:$num=rand(48,57);break;//数字
case 1:$num=rand(65,90);break;//大写
default:$num=rand(97,122);//小写
}
$text[$i]=sprintf("%c",$num);//将随机产生的assii码转换为相应的字符
imagettftext($im,rand(10,20),rand(0,30),15*$i,20,$tcolor,"ahronbd.ttf",$text[$i]);
}//用 TrueType 字体向图像写入文本
for($i=0;$i<100;$i++){
imagesetpixel($im,rand(1,79),rand(1,22),$green);//产生100个点
}
session_start();
$_SESSION["ckcode"]=implode($text);//保存到session中。和4logon.php$_SESSION["ckcode"]联系
header("Content-type:image/png");//设置输出类型
imagepng($im);//以PNG格式将图像输出到浏览器或文件
imagedestroy($im);//销毁图像释放内存
?>
记得要把字体引用进来ahronbd.ttf
密 码:<input name="password" type="password"/>
验证码: <input type="text" name="ckcode"><img src="/TP_xiangmu/Public/8yanzhengma.php" style="cursor:pointer" onclick="refreshcode(this,this.src)">//引用验证码类
<script language="javascript" type="text/javascript">
function refreshcode(obj,url){
obj.src=url+"?nowtime="+Math.random();//点击刷新验证码
}
</script>
php文件
public function denglu(){
$username=$_POST['username'];
$password=$_POST['password'];
$goods=M('User');//ThinkPHP中链接数据库
$lists=$goods->where("username='".$username."'")->where("password='".$password."'")->select();//ThinkPHP中查询数据库里是否有此用户名,不在TP框架中写,用sql语句查询
if($lists){//如果存在,说明数据库中有这个用户名
session_start();//开启session保存验证码
if(trim(strtolower($_POST["ckcode"]))==strtolower($_SESSION["ckcode"])){//验证码不区分大小写
$_SESSION["user"]=$username;//保存登陆的用户名
$user=$_SESSION['user'];
//setcookie("name",$username);//用cookie做
$this->assign('user',$user);
$this->success('登录成功','__URL__/index');}else{$this->error('验证码错误!','__URL__/index'); }
}else{
$this->error('登录信息错误','__URL__/index');
}
}
下面是验证码类
<?php
ob_clean();
$im=imagecreatetruecolor(80,20);//创建画布
$bgcolor=imagecolorallocate($im,220,230,230);//调色
$border=imagecolorallocate($im,0,0,255);//设置边框的颜色
$tcolor=imagecolorallocate($im,255,0,0);
$green=imagecolorallocate($im,0,0xff,0);
imagefill($im,10,10,$bgcolor);//填充背景色
imagerectangle($im,1,1,79,19,$border);//绘制边框,也就是一个矩形,画布(0,0,80,20)边框(1,1,79,19)
$num = rand(48,122);
//rand产生一个随机整数rand(5,10)产生5-10的随机数包括5,10
for($i=0;$i<4;$i++){
$num_case=rand(0,2);//产生随机数0-2,根据数值的不同决定产生的是数字|小写|大写
switch($num_case){
case 0:$num=rand(48,57);break;//数字
case 1:$num=rand(65,90);break;//大写
default:$num=rand(97,122);//小写
}
$text[$i]=sprintf("%c",$num);//将随机产生的assii码转换为相应的字符
imagettftext($im,rand(10,20),rand(0,30),15*$i,20,$tcolor,"ahronbd.ttf",$text[$i]);
}//用 TrueType 字体向图像写入文本
for($i=0;$i<100;$i++){
imagesetpixel($im,rand(1,79),rand(1,22),$green);//产生100个点
}
session_start();
$_SESSION["ckcode"]=implode($text);//保存到session中。和4logon.php$_SESSION["ckcode"]联系
header("Content-type:image/png");//设置输出类型
imagepng($im);//以PNG格式将图像输出到浏览器或文件
imagedestroy($im);//销毁图像释放内存
?>
记得要把字体引用进来ahronbd.ttf
相关文章推荐
- JSP中怎样用session保存并验证用户登录信息
- laravel框架——保存用户登陆信息(session)
- 将登陆成功后的信息保存到session中
- 用户登陆界面使用Session保存并导入用户名
- php用户登陆 验证用户名密码和注销用户信息
- 项目记录:登陆( 保存用户名密码 kaptcha验证码 shiro权限管理 RSA加密 非明文保存)
- 玩转web之servlet(六)---session介绍及简单使用(登录验证中保存信息)
- 玩转web之servlet(六)---session介绍及简单使用(登录验证中保存信息)
- 玩转web之servlet(六)---session介绍及简单使用(登录验证中保存信息)
- Android实现勾选保存用户名登陆信息、进入自动读取用户登陆信息
- php登录验证(包括用户名、密码、验证码、数据库、是否已登陆验证、自动登录和注销登录)
- 登陆页面时JSP Session保存了用户信息 Flex 怎么获取 Session
- java web 程序---登陆验证session。提示登陆
- 如何在Service层获取用户session中保存的用户信息的方法(Filter+ThreadLocal)
- iOS学习(三十三)使用NSUserDefaults简单的登陆界面保存用户名,下次启动并显示出来
- Application、Session、Cookie、ViewState和Cache等对象保存信息的区别
- Facebook 自定义登录按钮,登陆完毕后清除缓存的Session信息
- forms角色验证,以普通用户身份登陆管理页面先弹出警告信息窗口
- 实现session登陆时间的验证,验证用户登录页面的一个监听器
- 财富信息不需要传userID后台会根据保存的session提供数据