qq_42715875 2019-09-29 21:34 采纳率: 0%
浏览 669

php+mvc模式的登陆口验证码可以点击刷新,不会自动刷新,求大神解决

1:描述问题:网站首页登陆口不管如何刷新[F5],验证码都不会变。但是点击验证码的话可以变为新的验证码!而且我们使用验证码登陆成功后同时退出来,此时登陆口的验证码还是之前使用过的验证码,没有更新!请大神帮我解决下,贴出正确的代码!因为本人不是很懂,只会照葫芦画瓢!万分感谢!无解决方案的请别回复了谢谢!

文件名:PassportController 代码如下,这个应该是控制器

/* 生成验证码 */
public function verify()
{
      $config = [
          'fontSize' => 19, // 验证码字体大小
          'length' => 4, // 验证码位数
          'imageH' => 34
      ];
      $Verify = new Verify($config);
      $Verify->entry();
  }

  /* 验证码校验 */
 public function check_verify($code, $id = '')
  {
      $verify = new \Think\Verify();
      $res = $verify->check($code, $id);
     $this->ajaxReturn($res, 'json');
  }

public function accessRules()
{
    return array(
            array('allow',  // 允许所有用户访问 'login' 动作.
                    'users'=>array('*'),
            ),
            array('allow', // 允许认证用户访问所有动作
                    'users'=>array('@'),
            ),
            array('deny',  // 拒绝所有的用户。
                    'users'=>array('*'),
            ),
    );
}
/*
    异地登录检测
*/
public function actionPlaceOtherLogin()
{
    if(isset($_POST['username']) && $_POST['username']!="" && isset($_POST['pwd']) && $_POST['pwd'])
    {
        $siteLogin=new SiteLoginForm;
        $siteLogin->username=$_POST['username'];
        $siteLogin->password=$_POST['pwd'];
        $siteLogin->verifyCode=$_POST['verifyCode'];
        $siteLogin->rememberMe=false;
        if($siteLogin->validate())//用户名密码正确
        {
            $userinfo=User::model()->findByAttributes(array(
                'Username'=>$_POST['username'],
                'PassWord'=>md5($_POST['pwd'])
            ));
            if($userinfo->Status==0)//用户帐号没有被冻结,处于正常状态
            {
                if($userinfo->PlaceOtherLogin==0)//用户没有开启异地登录,则允许用户直接提交登录
                {
                    echo "true";
                }else//开启异地登录
                {
                    //1.检查此次登录的ip与最近一次登录的ip是否相同
                    $lastLoginLog=Loginlog::model()->find(array(
                        'condition'=>'userid='.$userinfo->id,
                        'order'=>'id desc'
                    ));
                    if($lastLoginLog->loginip===XUtils::getClientIP())//如果本次登录ip与最近一次登录ip相同则允许用户直接提交
                    {
                        echo "true";
                    }else//如果不同则返回通知使用短信验证
                    {
                        echo $userinfo->Phon;//需要手机接手短信验证码,返回手机号码,以便发送短信进行验证
                    }
                }
            }else//帐号被冻结
            {
                echo "LOCK";
            }
        }else {
            echo "FAIL";
        }
    }
}



// 登陆口的文件名:index  代码如下
//

<link rel="stylesheet" type="text/css" href="<?php echo VERSION2;?>2_files/index.css">
<div class="banNer"><!--首页幻灯-->
    <ul class="rslides" id="slider">
      <li style="background: url(<?php echo VERSION2;?>img/banner/banner_tg.jpg) no-repeat center top;">
      <li style="background: url(<?php echo VERSION2;?>img/banner/003.jpg) no-repeat center top;">
      </li>
    </ul>
    <!--登录区域-->
    <div class="login_frame_bg" <?php if(Yii::app()->user->getId())echo 'style="display:none;"';?>>
        <div class="login_frame">
        <span class="warningSpan"<?php if(isset($_GET['loginStatus']) && $_GET['loginStatus']=='fail') echo 'style="display:block;"';?>>用户名或密码错误</span>
        <div id="myForm">
        <table>
            <form method="post" onsubmit="return checkLogin()" action="<?php echo $this->createUrl('passport/login');?>">
            <tbody>
                <tr>
                    <td>
                        <div class="login_mailbox">
                            <input type="hidden" name="User[position]" value="index" />
                            <input id="lusername" type="text"  name="User[Username]" autocomplete="off" placeholder="用户名">
                        </div>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p class="zq" id="miaoname" style="margin:-15px 0px 10px;"></p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <div class="login_ps">
                            <input id="lpassword" type="password" name="User[PassWord]" name="LoginForm[password]" placeholder="请输入密码">
                        </div>
                    </td>
                </tr>

                <tr>
                    <td>
                        <table>
                            <tr>
                                <td>
                                    <input type="text" name="User[VerifyCode]"
                                           class=""
                                           placeholder="请输入右边验证码"
                                           style="     width: 170px;
                                                        margin-right: 5px;
                                                        border-radius: 5px;
                                                        line-height: 35px;
                                                        border: 1px solid #fff;
                                                        padding-left: 5px;"
                                           id="verifyCode"
                                    />
                                </td>
                                <td>
                                    <?php
                                    $this->widget(
                                        'CCaptcha',
                                        array('showRefreshButton'=>false,
                                            'clickableImage'=>true,
                                            'imageOptions'=>array(
                                                'alt'=>'点击换图',
                                                'title'=>'点击换图',
                                                'style'=>'cursor:pointer; 
                                            background:#fff; height:27px; 
                                            border-radius:5px;'
                                            )
                                        )
                                    );
                                    ?>
                                </td>

                            </tr>
                        </table>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p  class="zq" style="height: 10px;"></p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p id="miaopwd" class="zq" style="margin:-15px 0px 10px;"></p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <li style=" color:#fff; font-size:12px;"><input name="User[rememberMe]" type="checkbox" style="position: relative; top: 3px; width:12px;" /> 下次自动登录<a href="javascript:;" class="forgetPwd" style=" float:right; margin-right:28px; color:white;">忘记密码?</a></li><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <button class="login-btn" id="login_btn">登录</button>
                    </td>
                </tr>
                <tr>
                    <td>
                        <span><a href="<?php echo $this->createUrl('passport/regist');?>" id="a">还没有账号?点击注册>></a></span>
                    </td>
                </tr>
            </tbody>
            <form>
        </table>
        </div>
        </div>
    </div>
<div class="indIntr" style="background="achose.png" ><!--系统优势-->
    <div class="why_main4 clearfix">

    </div>
</div>

        <script>
    //登录表单检测
    function checkLogin()
    {
        if($("#lusername").val()=="")
        {
            layer.tips('用户名不能为空', '#lusername');
            return false;
        }else if($("#lpassword").val()=="")
        {
            layer.tips('密码不能为空', '#lpassword');
            return false;
        }else if($("#verifyCode").val()=="")
        {
            layer.tips('验证码不能为空', '#verifyCode');
            return false;
        }else
        {
            var submitStatus=0;//提交状态初始化verifyCode
            var phone=0;//手机号码初始化
            //检查是否开启异地登录
            $.ajax({
                type:"POST",
                url:"<?php echo $this->createUrl('passport/placeOtherLogin');?>",
                data:{
                    "username":$("#lusername").val(),
                    "pwd":$("#lpassword").val(),
                    "verifyCode":$("#verifyCode").val(),
                },
                async:false,
                success:function(msg)
                {
                    if(msg=="true")//不用检测
                    {
                        submitStatus=1;
                    }else if(msg=="FAIL")//用户名或密码不正确
                    {

                    }
                    else if(msg=="LOCK")//用户帐户被冻结
                    {
                        submitStatus=3;
                    }else//需要发送手机验证码
                    {
                        phone=msg;//赋值用户手机号
                        submitStatus=2;
                    }
                }
            });
            /*alert(submitStatus);
            exit;*/
            //检查是否开启异地登录
            if(submitStatus==0)//用户名密码不正确
            {
                layer.tips('用户名,密码或验证码不正确', '#lusername', {
                    tips: [1, '#0FA6D8'] //还可配置颜色
                });
                return false;
            }else if(submitStatus==3)
            {
                //询问框
                layer.confirm('<span style="color:red;">您的帐户已被冻结,如有需要请联系客服人员</span>', {
                   btn: ['知道了'] //按钮
                });
                return false;
            }else if(submitStatus==1)//直接提交
            {
                return true;
            }else//2表示需要发送短信验证码
            {
                //发送验证码
                $.ajax({
                    type:"POST",
                    url:"<?php echo $this->createUrl('site/sms');?>",
                    data:{"phone":phone,"phoneCode":"DONE"},
                    async:false,
                    success:function(msgCode)
                    {
                        if(msgCode=="SUCCESS")
                        {
                            //询问框
                            layer.confirm('<span style="color:red;">短信发送成功(异地登录请输入手机验证码)</span><br/>验证码<input class="text1 phoneCodeVal" name="phoneCodeVal" />', {
                               btn: ['确定提交'] //按钮
                            },function(){
                               if($(".phoneCodeVal").val()=="")//验证码不为空
                               {
                                    layer.tips('验证码不能为空', '.phoneCodeVal');
                               }else{
                                   //发送手机号与验证码去验证正确性
                                    $.ajax({
                                        type:"POST",
                                        url:"<?php echo $this->createUrl('passport/userCheckPhoneAndCode');?>",
                                        data:{"phone":phone,"phoneCode":$(".phoneCodeVal").val()},
                                        async:false,
                                        success:function(msgCertain)
                                        {
                                            if(msgCertain=="SUCCESS")//手机验证码检测通过
                                            {
                                                //验证通过直接进行提交登录
                                                $.ajax({
                                                    type:"POST",
                                                    url:"<?php echo $this->createUrl('passport/codePassLogin');?>",
                                                    data:{"username":$("#lusername").val(),"pwd":$("#lpassword").val()},
                                                    async:false,
                                                    success:function(msglogin)
                                                    {
                                                        if(msglogin=="SUCCESS")//登录成功刷新当前页面
                                                        {
                                                             location.reload();                                                            //询问框

                                                        }else//登录异常刷新当前页面
                                                        {
                                                            layer.confirm('<span style="color:red;">登录异常</span>,您可以联系客服人员', {
                                                               btn: ['知道了'] //按钮
                                                            });
                                                        }
                                                    }
                                                });
                                                //验证通过直接进行提交登录
                                            }else if(msgCertain=="CODEFAIL")//验证不正确
                                            {
                                                layer.tips('验证码不正确', '.phoneCodeVal');
                                            }else//手机号异常
                                            {
                                                layer.tips('手机号码异常', '.phoneCodeVal');
                                            }
                                        }
                                    });
                                    //发送手机号与验证码去验证正确性
                                }
                            });
                        }else
                        {
                            //询问框
                            layer.confirm('<span style="color:red;">异地登录验证-短信发送失败,可能发送次数过多</span>,您可以联系客服人员', {
                               btn: ['知道了'] //按钮
                            });
                            phoneAndCodeCheckStatus=0;
                        }
                    }
                });
                //发送短信验证码结束
                return false;
            }
        }  
    }

    //忘记密码
    $(".forgetPwd").click(function(){
        layer.open({
            type: 2,
            title:'找回密码',
            area: ['375px','270px'],
            skin: 'layui-layer-rim', //加上边框
            content: ['<?php echo $this->createUrl('passport/forgetPwd');?>', 'no']
        });
    });



</script>


    // 能帮我解决问题的才回复,或者还需要我提供什么的请留言,谢谢了,
  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-09-30 09:38
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题