Php 停留在现场时保持登录状态
我想在我的网站上创建一个登录表单。如果用户登录,我希望他 1.在他停留在我的站点时保持登录 2.关闭浏览器并重新启动计算机后保持登录状态Php 停留在现场时保持登录状态,php,session,cookies,Php,Session,Cookies,我想在我的网站上创建一个登录表单。如果用户登录,我希望他 1.在他停留在我的站点时保持登录 2.关闭浏览器并重新启动计算机后保持登录状态 我可以使用什么技术?我正在使用PHP5.2编写网站。塔克斯 登录表单背后的基本思想是在用户登录时验证凭据,并设置cookie以在加载新页面时记住凭据 您可以检查setcookie方法(http://us.php.net/setcookie)学习如何设置cookie 您还可以查看会话(http://us.php.net/manual/en/function.se
我可以使用什么技术?我正在使用PHP5.2编写网站。塔克斯 登录表单背后的基本思想是在用户登录时验证凭据,并设置cookie以在加载新页面时记住凭据 您可以检查setcookie方法(http://us.php.net/setcookie)学习如何设置cookie 您还可以查看会话(http://us.php.net/manual/en/function.session-start.php)这是一种为特定用户在服务器端存储数据的方法 以下文章将让您更好地了解如何编写登录表单: 编辑:正如John指出的,在向页面添加登录时,存在许多安全问题。您应该知道cookie可能被劫持,会话可能被盗 防止这种情况的一些技巧:
- 确保人们无法将JavaScript注入您的页面。例如:
- 您应该在需要登录的页面上使用HTTPS连接,因为这将防止通过不受保护的连接窃取cookie
- 如果源IP已更改,您可能希望使cookie无效,以防cookie被盗
- 基督教徒
将此迁移到StackOverflow可能与的重复我希望看到此答案更新为使用此功能(如劫持Cookie等)的安全后果。您应该在所有页面上使用https连接;如果切换回http,初次登录后cookie仍然很容易被盗。请参阅firefox扩展的示例,以实现这一点。此外,您应该在Cookie中存储绝对最小值;与安全无关。所以不要像OP建议的那样使用setcookie;改用会话方法,cookie中将只存储唯一的会话标识符;设置httponly标志,确保仅通过Cookie传输会话id(而不是通过URL),确保仅通过https传输会话Cookie,在用户通过身份验证时使用会话_REGENATE_id(),以防止会话固定攻击。您还可以通过存储一些请求头来添加一些简单的会话劫持检测(如HTTP_用户_代理和可能的IP地址)将原始请求添加到会话中。将所有未来请求与原始请求(或它们的散列)进行比较如果它们不匹配,则要求用户重新验证。抱歉,您完全错了。会话在服务器上指定的超时后终止,或者如果在服务器上显式终止。如果客户端删除会话cookie,它们可能会丢失对会话的引用,这有时会发生(取决于设置)当浏览器关闭时,即使会话仍在服务器上运行,也只是引用丢失了。tizag.com上就是这么说的,我猜他们错了,或者只是过时了。。。