Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Cookies/Sessions登录系统_Php_Cookies_Session - Fatal编程技术网

Php Cookies/Sessions登录系统

Php Cookies/Sessions登录系统,php,cookies,session,Php,Cookies,Session,当用户登录时,我得到他/她的ID并将其保存在会话变量中。我想知道的是,这是一种方法吗?还是我应该用饼干?所以它会自动登录等等 session_start(); ifcorrectlogin { $_SESSION['id'] = mysql_result($loginQuery, 0, 'user_id'); } 你如何认证你的用户 //新手可以很容易地操纵Cookies。使用会话管理登录/注销。如果您愿意,您可以将用户的电子邮件地址/用户名存储在cookie中,并在当前会话过期后下次访问

当用户登录时,我得到他/她的ID并将其保存在会话变量中。我想知道的是,这是一种方法吗?还是我应该用饼干?所以它会自动登录等等

session_start();


ifcorrectlogin {
$_SESSION['id'] = mysql_result($loginQuery, 0, 'user_id');
}
你如何认证你的用户


//新手可以很容易地操纵Cookies。使用会话管理登录/注销。如果您愿意,您可以将用户的电子邮件地址/用户名存储在cookie中,并在当前会话过期后下次访问时为他们填写用户名框。

我会尝试找到会话引擎,这样您就不必处理其他问题。如果你做错了一点小事,安全问题就会咬你的屁股。我使用django,它内置了一个会话引擎。我不知道该领域还有其他产品,尽管我认为大多数框架都会有


他们在django中的做法是在用户的Cookie中放置加密哈希,每个页面视图都会更新,并将所有其他会话信息保存在服务器上的数据库中,以防止用户篡改和安全问题。

是的,这是一种方法。会话本身已经有了cookie的支持,可以消除围绕该会话进行的任何编程工作。只要用户打开浏览器实例,会话(实际上是cookie)就会一直存在,或者直到会话在服务器端超时为止,因为用户在一定时间内(通常约30分钟)没有访问该站点

登录时,只需将获得的
用户
放入
$\u会话
。对于受限页面上的每个请求,您只需检查登录的
用户是否在
$\u会话中可用,并相应地处理请求,即继续执行请求或重定向到登录或错误页面。注销时,只需从
$\u会话中删除
用户

如果您想在此计算机上添加“记住我”选项,则需要自己添加另一个比会话寿命更长的cookie。您只需要确保为cookie生成一个长的、唯一的、难以猜测的值,否则很容易被破解。看看PHP是如何通过检查webbrowser中名为
phpsessionid
的cookie来实现的。

正如前面提到的,PHP中的
会话
-函数是可行的,您的基本想法是正确的。但仍有许多不同的认识,其中一些存在陷阱。 例如,正如所解释的,使用cookie可能会导致安全漏洞

我的PHP有点生疏,但我记得
session.
-函数也可以使用URL中编码的会话ID。(还有一个选项可以让它自动添加到所有本地链接(作为GET)和表单目标(作为POST)。但这也不是没有风险的。)通过复制SID防止会话劫持的一种方法是记住IP地址,并将其与任何具有有效会话ID的请求与发送此请求的IP进行比较

正如你所看到的,底层方法只是一个开始,还有很多事情要考虑。因此,的建议值得考虑:通过使用经过良好测试的库,您可以获得良好的安全级别,而无需花费宝贵的开发时间来开发自己的会话系统。我建议将此方法应用于您希望在现实世界中部署的任何系统


OTOH,如果你想了解PHP会话和安全问题,你一定要自己去做,如果你只是想知道如何不去做;-)

欢迎来到StackOverflow。第一个问题很好!谢谢准备好回答更多的问题;第一句话有点自相矛盾。PHP在cookie的帮助下维护会话。只要确保cookie值足够强就行了。巴卢斯,我想我知道我的答案可能会有点混乱。在阅读您的文章后,我觉得我们提供了相同的解决方案。因此,如果我理解正确,如果用户希望被“记住”,我应该在cookie和数据库中存储一个唯一的字符串,当用户再次访问时,我检查cookie是否存在,如果确实存在,我会将其与数据库中的cookie进行比较?几乎不错。当未登录的用户访问时,请在数据库中检查相关的
用户
,然后“自动”登录。我曾经发布过一个答案,它正好涵盖了这一点,你可能会发现它也很有用: