PHP session_id与帐户系统的使用

时间:2016-06-30 21:45:23

标签: php mysql session cookies

所以,我开始在我的本地服务器上开发一个网站......

我用PHP编写了一个带有MySQL数据库的注册/登录系统。我知道我必须使用会话,但我真的不明白它们。

  1. 如果我刚刚开始没有ID的会话,它将生成一个随机的 ID?
  2. 我认为,我应该生成ID并在之后启动会话 SQL检查(pw和用户名),但在它抛出用户之前 下一页。我是对的吗?
  3. 一旦我按照我在这些问题中提到的那样生成它,我应该将它存储在SQL表中吗?
  4. 他们会自动死亡还是我必须以某种方式杀死他们? (用户点击手动注销页面除外)我已经在某个地方读到了他们将会死的时间,但我认为我必须以某种方式进行设置。
  5. 他们在哪里? (我知道,这是一个高度迟钝的问题)他们在客户端或服务器上?
  6. 是的......我知道,我应该做点别的事......好吧,我只需要一个来源,记录下这种用法,或者这样的描述:Generate - >商店 - >每次页面更改时检查 - >他们会自动杀死自己。

1 个答案:

答案 0 :(得分:1)

基本上,您在每个页面上启动会话。会话在用户访问的第一页上初始化。每当初始化会话时都会生成会话ID,因此将会话ID作为登录标识符是没有用的。与所有PHP代码一样,会话本身在服务器端处理。

所以每个页面都应该在最顶层session_start()

您要做的是存储会话变量,例如$_SESSION['username'],并检查用户是否已登录趋势if(!empty($_SESSION['username'])

中的某些内容

每当您调用'session_abort()'或浏览器关闭时,会话就会消失。您还可以在会话期间(session_set_cookie_params(3600,"/");之前)调用session_start();或类似内容,其中3600是会话处于活动状态的秒数。

所以一个简单的解决方案可能是:

<强> session.php文件

session_start();
if(!empty($_SESSION['username') {
  echo "Hello";
} else {
  echo $loginform;
}

<强> randompage.php

include "session.php";