让用户在再次访问同一页面时登录?

时间:2009-12-09 22:05:11

标签: php cookies session

目前我正在使用会话登录用户。但当我关闭浏览器并再次打开它时,我必须再次登录。你如何保持用户登录2周。

是通过cookies吗?

4 个答案:

答案 0 :(得分:9)

所以你想要一个“在这台电脑上记住我”选项吗?这是一种与语言无关的方法:

  1. 创建一个至少包含cookie_iduser_id列的数据库表。如有必要,还可添加cookie_ttlip_lock。我想这些列名不言自明。
  2. 首次登录时(如果需要选中“记住我”选项),生成一个代表cookie_id的长而独特且难以猜测的密钥,并将其存储在数据库中user_id。同时将其存储为具有前指定cookie名称的cookie的cookie值。例如。 remember。给cookie一个很长的寿命,例如一年。
  3. 在每个请求中,检查用户是否已登录。如果没有,请检查与cookie名称cookie_id关联的cookie值remember。如果它存在且根据数据库有效,则自动登录与user_id关联的用户并再次推迟cookie年龄。
  4. 关于安全风险,如果密钥很长且足够混合(至少30个混合字符),那么强制登录的机会可以忽略不计。此外,您可能已经了解了可选列ip_lock的用途。它应该代表用户的IP地址。您最终可以添加一个额外的复选框“锁定登录到此IP(仅当您具有静态IP)”,以便服务器可以使用用户的IP地址作为额外验证。

    如果一个用户在没有IP锁的情况下劫持了cookie值怎么办?好吧,对此没什么可做的。和它一起生活。 “记住我”的事情很有趣,因为每个论坛和帐户劫持都不会那么大,但我肯定不会将它用于管理面板和那种控制服务器端东西的网页。

    毕竟这是相当直接的。祝你好运。

答案 1 :(得分:1)

阅读本文:http://www.php.net/manual/en/session.configuration.php

您需要的设置是session.cookie_lifetime。当浏览器关闭时,会删除会话cookie(例如没有生命周期的会话cookie)。如果您希望会话保持更长时间,请在php.inihttpd.conf.htaccess中设置该设置。甚至可以使用ini_set

编辑:实际上您可以使用此功能:

session_set_cookie_params (86400*30);
session_start()

86400 * 30为30天。

见这里:http://www.php.net/manual/en/function.session-set-cookie-params.php

答案 2 :(得分:0)

是。您使用cookie来实现“自动登录”(或“记住我”)功能。

google search或SO search results应指向正确的方向。

答案 3 :(得分:0)

是的,你应该使用cookies来做到这一点。这是手动输入:http://php.net/manual/en/features.cookies.php

或者,您可以查看此功能:http://php.net/manual/en/function.session-set-cookie-params.php。它允许您修改会话cookie设置,例如它的生命周期......

相关问题