为了账号安全,请及时绑定邮箱和手机立即绑定

关于验证码验证的问题,很多人都不能验证,直接进入了管理页面,我来为大家解惑下

在dologin。php页面下有下列这些代码

verifys=$_POST['verifys'];

$verify1=$_SESSION['verify'];

$autoFlag=$_POST['autoFlag'];//7天自动

echo $verify1."<br/>";

echo $username."<br/>";

echo $password."<br/>";

echo  $verifys;

if($verifys==$verify1){


正在回答

5 回答

我是跟着老师做的,代码都一样,但在填写好验证码,点击提交,它就提示验证码错误,请重新登录,如图:http://img1.sycdn.imooc.com//565719bb0001902a07090458.jpg

提交后,就会出现:http://img1.sycdn.imooc.com//56571a220001a6fe06000406.jpg

代码和老师的一样啊:我想一定是if($verify==$verify1)出了问题,不然验证码对了,还提示错,我想就$verify,$verify1两者不相等,可是我又不知道哪里错了,都是跟着老师做的,请指教!!!

<?php

require_once '../include.php';//与数据库打交道,把它包含进来,它设置了链接数据库的操作

//session_start();//下面用到session则这里要开启一下

$username=$_POST['username'];

$password=md5($_POST['password']);//给密码加密

$verify=$_POST['verify'];

$verify1=$_SESSION['verify'];//还要接受一下验证码的值

$autoFlag=$_POST['autoFlag'];//接收来自自动登陆复选框的name的值


if($verify==$verify1){

    $sql="select * from imooc_admin where username='{$username}' and password='{$password}'";

    $row=checkAdmin($sql);//调用一下在admin.inc.php中设置好的函数,并返回给row

    //var_dump($row);//打印管理员信息

    if($row){

        //如果选了一周内自动登陆

        if($autoFlag){

            setcookie("adminId",$row('id'),time()+7*24*3600);//当前时间戳加这么多秒,就是一周

            setcookie("adminName",$row('username'),time()+7*24*3600);

        }

        $_SESSION['adminName']=$row['username'];

        $_SESSION['adminId']=$row['id'];//也要判断一下存储管理员的id号,有的话就登陆成功

        alertMes("登陆成功", "index.php");

    }else{

        alertMes("登陆失败,请重新登陆","login.php");

    }

}else{

    alertMes("验证码错误,请重新登陆", "login.php");

}


0 回复 有任何疑惑可以回复我~
#1

低语忆霖 提问者

遇到问题要先自己想想解决办法,既然你觉得这两个不同,你就先把if()判断函数以下的部分都注释掉,上面echo两个验证码$verify,$verify1,看看一不一样,或者再去login页面把$_SESSION['verify'];输出,看下和当前页面的验证码值一不一样
2015-12-02 回复 有任何疑惑可以回复我~

验证时总是出现验证码错误,那是我们的语法不严格,使用$_SESSION的变量以及任何其他的变量前($_POST,$_GET..)需要检测变量是否已经设置。
使用$uname = isset($_SESSION['MM_username']) ? $_SESSION['MM_username'] : '';
而不是$uname = $_SESSION['MM_username'];

这样既可以消除那种没有定义的警告,又能使验证成功,而且还解决了无法接收到表单传递的数据。


当然实际项目中往往是屏蔽notice信息的,使用error_reporting(E_ALL ^ E_NOTICE);或者在php.ini里作相应修改即可。不过这种方式也会造成一些很麻烦的错误,所以说最好改掉这些错误警告,而不是一味的屏蔽

0 回复 有任何疑惑可以回复我~

为什么我include.php最后面加上connect();然后图片就不显示了。。

0 回复 有任何疑惑可以回复我~
#1

低语忆霖 提问者

connect是连接数据库,如果连接数据库出错,产生致命错误,就不会显示了,你去connect下仔细查看一下
2015-12-02 回复 有任何疑惑可以回复我~

为什么在提交登录时总是跳到验证码页面?


0 回复 有任何疑惑可以回复我~
#1

低语忆霖 提问者

alertMes()里的地址你看下 是哪个地址
2015-11-25 回复 有任何疑惑可以回复我~

上面代码是我测试用的,http://img1.sycdn.imooc.com//5653e5cf0001421706280428.jpg这图是老师那下的源代码,为了查看为什么无法验证,我进行 了下列测试,,输出echo $verify;echo $verify1,然后发现两个一样。,猜测估计是$verify自动调用$_SESSION['verify']的值,然后,我改为我自己的那样,变为$verifys,当然结果就能验证了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
手把手教你实现电商网站后台开发
  • 参与学习       117284    人
  • 解答问题       1999    个

手把手教你用PHP搭建电子商务平台,由浅入深教你搭建电商系统

进入课程

关于验证码验证的问题,很多人都不能验证,直接进入了管理页面,我来为大家解惑下

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信