【用户验证】这样的思路验证用户是否登录的有没有漏洞、有关问题

WBOY
Freigeben: 2016-06-13 11:59:29
Original
951 Leute haben es durchsucht

【用户验证】这样的思路验证用户是否登录的有没有漏洞、问题

本帖最后由 default7 于 2014-05-25 13:31:32 编辑 考虑的是服务器最大限度的减少SQL查询。
SESSION如果浏览器关闭就失效,所以改用COOKIE,写了如下方式来检测用户是否登录。

代码如下:
<br>/**<br> * 初始化,用户COOKIE数据验证 by default7#zbphp.com<br> */<br>public function authCheck()<br>{<br>    if (cookie('uid')) {<br>        $uid = cookie('uid');<br>        $umd5 = cookie('umd5');<br>        $udata = cookie('udata');<br>        if (isUid($uid) && isMd5($umd5) && $udata && ($strDecode = authcode($udata, 'DECODE'))<br>            && md5($strDecode) == $umd5 && ($data = json_decode($strDecode)) && $data['uid'] == $uid) {<br><br>            //每隔60s必须查询SQL检测一次<br>            if ($this->time - $data['lastactive'] > self::INTERVAL) {<br>                if (($rsUser = M('Member')->where("mid='$uid'")->getField('mid,uname,pwd,vip,viptime1,viptime2,lastactive,isfbd'))<br>                    && strtolower($rsUser['uname']) == strtolower($data['uname'])<br>                    && strtolower($rsUser['email']) == strtolower($data['email'])<br>                    && md5($rsUser['pwd'].$data['salt']) == $data['upwd']<br>                ) {<br><br>                    if($rsUser['isfbd'] == 't'){<br>                        $this->error('您的账号已被封禁,请联系管理员!');<br>                        $this->resetUser();<br>                        return;<br>                    }<br><br>                    //更新最后在线时间<br>                    M('Member')->setField('lastactive',$this->time);<br><br>                    //重新生成加密密匙<br>                    $data['salt'] = uniqid();<br>                    $data['upwd'] = md5($rsUser['pwd'].$data['salt']);<br><br>                }else{<br><br>                    $this->error('账号信息(邮箱或密码)发生变化,请重新登录!','',U('Member/Index/login?f='.__URL__));<br>                    $this->resetUser();<br>                    return;<br><br>                }<br>            }<br><br>            $data['lastactive'] = $this->time;<br><br>            $this->UserData = $data;<br><br>            $strEncode = json_encode($data);<br><br>            //配置COOKIE默认10天过期<br>            cookie('uid',$data['uid']);<br>            cookie('umd5',md5($strEncode));<br>            cookie('udata',authcode($strEncode,'ENCODE'));<br><br>            return;<br>        }<br><br>        $this->resetUser();<br>    }<br>}<br><br>/**<br> * 注销SESSION 所有<br> *<br> * @return bool<br> */<br>public function resetUser()<div class="clear">
                 
              
              
        
            </div>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!