php中验证码问题

abc_57699 2015-03-07 12:35:11
这个login首页
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<head>
<title>login</title>
<load href="__PUBLIC__/Js/jquery.js"/>
<load href="__PUBLIC__/Css/basic.css"/>
<script>
$(function(){
$("img[title='login']").click(function(){
$('form[name="myform"]').submit();
});
});
</script>
<style>

</style>
</head>
<body>
<form action="__URL__/dologin" method="post" name="myform">
用户名:<input type="text" name="username" /><br/>
密 码:<input type="password" name="passeord" /><br/>
验证码:<input type="text" name="code " /><img src="__APP__/Public/code" onclick="this.src=this.src+'?'+Math.random()" /><br/>
<img src="__PUBLIC__/Images/login.gif" title="login" class="submit" />
<img src="__PUBLIC__/Images/register.gif" />
</form>
</body>
</html>



这个是Thinkphp中的控制器(login方法)
<?php
class LoginAction extends action{
public function login(){
$this->display();
}
public function dologin(){
//dump($_POST);//接受值
//判断用户在数据库中是否存在
//存在 允许登陆
//不存在 显示错误信息

$username=$_POST['username'];
$password=$_POST['password'];
$code=$_POST['code'];

//如果$code不等于$_SESSION['code']
if(md5($code)!=$_SESSION['code']){
$this->error('验证码不正确');
}
$user=M("user");
$where['username']=$username;
$where['password']=$password;
$arr=$user->where($where)->find();
dump($arr);
//exit;//暂停
if($count>0){
$_SESSION['username']=$username;
$_SESSION['id']=$arr['id'];
$this->success('用户登陆成功',U('index/index'));
}else{
$this->error('该用户不存在');
}

}

}
?>
这个是数据库







...全文
285 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲雪星枫 2015-03-08
  • 打赏
  • 举报
回复
if(md5($code)!=$_SESSION['code']){ 在这句前加入 echo $code.'<br>'; echo md5($code).'<br>'; echo $_SESSION['code']; 看看两个是否一致,如果$code为空请检查 $_POST['code'],如果$_SESSION['code']为空,请检查session_start();是否已开启。
heiyu4585 2015-03-08
  • 打赏
  • 举报
回复
verify有个check方法你好像没用, 我写的供参考
 $verify = new \Think\Verify();
            if(!$verify->check($_POST['captcha'])){
                echo "验证码错误";
}else{}
官方的 // 检测输入的验证码是否正确,$code为用户输入的验证码字符串
function check_verify($code, $id = ''){
    $verify = new \Think\Verify();
    return $verify->check($code, $id);
}
abc_57699 2015-03-07
  • 打赏
  • 举报
回复
忘记了还有点 index控制器的 <?php class IndexAction extends Action{ public function index(){ //这里也有点问题的 //if(isset($_SESSION['username']) && //$_SESSION['username']!=' '){ // $this->display(); //}else{ // $this->redirect('login/login'); //} } public function top(){ $this->display(); } public function left(){ $this->display(); } public function right(){ $this->display(); } } ?>
xuzuning 2015-03-07
  • 打赏
  • 举报
回复
Thinkphp 已经提供了验证码功能,你为什么不用? 如果什么都是自己弄,那要使用框架做什么 见 Thinkphp 开发手册:19.8 验证码
abc_57699 2015-03-07
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
你把最重要的漏掉了:没有说明遇到了什么问题
不能判断验证码是否正确,错的也是错的,对的也是错的
xuzuning 2015-03-07
  • 打赏
  • 举报
回复
你把最重要的漏掉了:没有说明遇到了什么问题
abc_57699 2015-03-07
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
Thinkphp 已经提供了验证码功能,你为什么不用? 如果什么都是自己弄,那要使用框架做什么 见 Thinkphp 开发手册:19.8 验证码
朋友能不能帮忙把代码改下,新手不太会看了效果不也太好,验证码是按手册上弄的,就是不会怎么判断验证码是否正确

21,892

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧