2

我正在从一本书中构建一个基本的登录脚本,该脚本使用会话来管理用户是否登录。

这很好,但是当我关闭浏览器然后重新打开它时,我必须重新登录。而以 Facebook 为例,即使我关闭了浏览器,我仍然保持登录状态。我猜这是使用cookies完成的。使用 cookie 安全吗?这个饼干应该持续多久?有时网站会明确表示“请记住在访问结束时退出”。为什么这是必要的?

目前我的脚本有点像这样:

session_start();

if (is_set($_POST["login_button_pressed"])){
     if (form_verified_successfully()){
          $user_details = get_user_details_from_database();
          $_SESSION['username'] = $user_details['username'];
     }
}

修改上述内容以使用 cookie 会很容易吗?如果是这样,怎么办?

谢谢

4

1 回答 1

4

Acookie是一个小文本文件,保存在用户硬盘上的临时目录中。放置它的浏览器可以访问此 cookie。它可以保存数据,例如以前访问过的 URL(用户阅读与未阅读的帖子)、用户的凭据甚至用户购物车的内容或他们在论坛中未完成的帖子。您将选择 cookie 对该系统的有效期,我见过的最常见的是 24 小时、7 天、14 天和 30 天。

Asession附加到与 Web 服务器交互的实际软件,即浏览器、命令提示符或其他应用程序。一旦浏览器关闭或应用程序关闭,会话数据将丢失。

您可能希望用户再次登录的原因,您已授予访问权限的数据是非常私密的信息,15 分钟后抓取计算机的另一个用户不应访问(银行、帐户设置)或您提供的数据对用户是时间敏感的,您希望强制用户再次登录并在他们回来时获得新数据。

大多数社交网站,如 Facebook、LinkedIn、Google+、Twitter 和其他几个论坛和博客都会给你一个 cookie,让你保持登录状态长达一个月或更长时间,这样你就可以轻松地返回并浏览网站并发布到你的个人资料。但是,如果您更改帐户设置,他们会提示您再次登录,并且只会让您在当前会话期间访问网站的这些部分。这是出于安全原因。

我希望这会有所帮助。如需快速参考,请在 上运行 Google 搜索sessions vs cookies。您应该能够找到与您使用的任何语言/平台相关的文章。有很多关于 PHP、Java、.net 和其他讨论优点、缺点和最佳实践的文章。

更改为 cookie: 至于您的最后一个问题,更改为使用 cookie 应该不难。很可能它将通过_COOKIE而不是引用_SESSION,但您必须告诉 cookie 保留哪些信息以及保持活动多长时间。一个快速的谷歌搜索setting cookie [language]应该提供大量的教程。替换[language]为 PHP、Java、Spring、.net 等。

于 2013-03-19T18:41:11.947 回答