session保存验证码用户名,验证登陆信息

用户名:<input name="username" id="username" type="text" />
密&nbsp;&nbsp;码:<input  name="password"  type="password"/>
验证码: <input type="text" name="ckcode"><img src="/TP_xiangmu/Public/8yanzhengma.php" style="cursor:pointer" οnclick="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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值