Home  >  Article  >  Backend Development  >  关于Session验证登陆状态的一个疑问?

关于Session验证登陆状态的一个疑问?

WBOY
WBOYOriginal
2016-06-06 20:10:31972browse

写程序也有那么几年头了,框架用的久,原生Session这块几乎没做过什么研究,现在突然想起来,还真有个小疑问:
我一般验证是否登陆类似这样写:

验证:

<code>if(!checkV($_GET['username']) || !checkV($_GET['password']))
{
    return false;
}

if($username == $_GET['username'] && $password == $_GET['password'])
{
    $_SESSION['islogin'] = 1;
}
</code>

状态验证:

<code>function checkLogin()
{
    if(empty($_SESSION['islogin']))
    {
        return false;
    }
    return true;
}
</code>

我总感觉这么写是不是太简单了? 安全方面自己心里没点低,但是这个方法用了挺久也没出过啥问题,望批评指教!

回复内容:

写程序也有那么几年头了,框架用的久,原生Session这块几乎没做过什么研究,现在突然想起来,还真有个小疑问:
我一般验证是否登陆类似这样写:

验证:

<code>if(!checkV($_GET['username']) || !checkV($_GET['password']))
{
    return false;
}

if($username == $_GET['username'] && $password == $_GET['password'])
{
    $_SESSION['islogin'] = 1;
}
</code>

状态验证:

<code>function checkLogin()
{
    if(empty($_SESSION['islogin']))
    {
        return false;
    }
    return true;
}
</code>

我总感觉这么写是不是太简单了? 安全方面自己心里没点低,但是这个方法用了挺久也没出过啥问题,望批评指教!

  • 写法没问题

  • 问题是别人伪造你的session_id,就可以操作该session_id对应的用户,简单解决办法用HTTPS防止中间人

没有问题。心放到肚子里。
最简单的模式就是这样的。其它搞得再复杂还是这样。

你的已经是最佳实践了。

验证之后,存入session,思路没有问题啊。把一些细节完善下就更好了

逻辑上没问题,不过islogin这个没什么意义啊,不如在session里面写入uid或者username,到时候通过这个session值是否存在来判断用户是否登录,其它程序部分需要username的时候还能直接调用$_session['username']这个变量

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:foreach 问题Next article:laravel的filter()方法的使用