我如何在PHP中使用会话?

时间:2012-03-29 08:27:54

标签: php

我正在建立一个基于php的网站,但现在我需要给用户一个会话,即用户可以登录到网站并进行他的会话。他应该注销之后。我怎样才能做到这一点。?

3 个答案:

答案 0 :(得分:2)

在每个脚本的开头放入session_start() 然后创建用户及其密码的数据库。 当用户登录时,您应该检查他的用户名和密码,如果匹配,请将用户ID放入会话

$_SESSION['user_id'] = $user_id;

在所有脚本中,您都可以读取此值$ _SESSION ['user_id'],因此您知道该用户是谁。

注销使用session_destroy

答案 1 :(得分:0)

将任何与会话相关的数据以其用户名作为密钥存储在数据库或其他数据存储中。因此,当他再次登录时,您只需从数据存储中加载数据并恢复其会话。

任何其他会话管理系统(如CodeIgniter或php的内置会话管理系统)都不应用于持久会话。

答案 2 :(得分:0)

用户登录后,您可以使用$ _SESSION [“auth”] = true,验证密码的脚本通常应设置上述会话变量。然后使用header()重定向到受限制的成员页面,如dashboard.php或photos.php。一旦用户注销,您应该使用session_destroy()函数。在每个页面上都有一个session_regenerate_id(true)也更安全,因此重新生成会话ID cookie以防止会话劫持。

<?php
session_start();//start session
session_regenerate_id(true); 
if($_SESSION["auth"] != true) {
header("Location: login.php"); // redirects to login if user is not logged in already
}
else {
//has access
if(!isset($_SESSION["timeout"])) {
$_SESSION["timeout"] = time();
}
else if(isset($_SESSION["time"])) {
if($_SESSION["timeout"] - time() == 1800) {
header("Location: login.php");//timeout incase no activity for 30min , 30min = 1800seconds

}

}

}

?>