登录并保持登录状态


Login and Stay Logged in

嘿,所以我有一个网站要求用户输入他们的用户名和密码,然后它检查我的MySQL数据库以查看凭据是否正确。现在如果是,我希望它,以便用户可以访问网站的其他部分,但不会让他们内容地重新输入他们的信息。基本上让他们登录网站。

以前从未做过这样的事情,我正在努力超越课堂项目的要求。我将如何实现这一目标?

有两种可能的解决方案,但行为不同:

第一:是使用 PHP 会话。会话支持允许您在$_SESSION超全局数组中的请求之间存储数据。当访问者访问您的网站时,PHP 将自动(如果session.auto_start设置为 1)或根据您的请求(明确通过 session_start() 或隐式通过 session_register()检查是否已随请求一起发送特定的会话 ID。如果是这种情况,将重新创建先前保存的环境。例如,您可以存储用户是否使用以下方式登录:

session_start();
$_SESSION['loged_in']="yes"; 

并使用以下方法检索值:

session_start();
if($_SESSION['loged_in']=="yes"){ echo "logged in!"; }

第二:是 PHP Cookie。PHP 透明地支持 HTTP cookie。Cookie 是一种在远程浏览器中存储数据的机制,从而跟踪或识别返回用户。您可以使用 setcookie() 或 setrawcookie() 函数设置 cookie。Cookie 是 HTTP 标头的一部分,因此在将任何输出发送到浏览器之前必须调用 setcookie()。这与 header() 的限制相同。您可以使用输出缓冲函数来延迟脚本输出,直到您决定是否设置任何 cookie 或发送任何标头。

Cookie 在本地存储凭据,并在用户再次访问同一网页时使其再次可用。当您选中"保持登录"复选框时,这是您存储登录详细信息的地方。它与会话的不同之处在于,即使浏览器关闭并且计算机关闭,也可以再次访问cookie。

您应该使用 cookie。如何 : http://php.net/manual/fr/features.cookies.php

使用会话变量,您可以验证用户是否已连接。

有两种方法可以做到这一点

  1. 会期
  2. 饼干

如果您使用的是会话,则用户每次关闭浏览器后都必须登录。如果您使用Cookie,那么它会在用户计算机上本地保存登录信息(因为您必须在各种网站上看到"记住我"),用户将自动登录。您可以同时使用这两个选项,并根据用户的自由裁量权提供"记住我"选项

现在,存在与 Cookie 相关的安全问题(因为您永远不会在银行网站上看到"记住我"等,您可能会看到它以记住用户名)。

此外,在这种设置中,您必须检查每个页面上的用户凭据,这些凭据只能由授权用户访问。

编写SQL注入预防代码,如果编码不正确,则非常简单,而且它不是火箭科学。

要从这种设置开始,您可以按照一些 youtube 教程进行操作。有很多这样的。这是教程 http://www.developphp.com/list_php_video.php#How_to_Build_a_Social_Network_Website 的链接对于初学者来说,这是一个很好的教程。教程 1-9 将解决您的目的。一旦您成为专家,您就可以编写自己的自定义和干净的代码。这些教程将帮助您了解您想要设计的系统的基础知识,然后根据您的学习和感知。那么天空就是极限:)