理论方面在这篇 Session 与 Cookie
下面是实施的步骤:
1,建立存放Session文件的目录,比如: session_save_dir; Session文件的默认存放路径是系统临时文件夹;
2, 登陆提交用户名和密码,到服务器端的数据库验证,如果验证通过,设置此用户的Session为true。
// 定义一个时间段,下面是一年,在设置Session生存周期时使用
$time = time() + 3600 * 24 * 365;
// 设置存放路径
session_save_path($session_save_dir);
// 启动Session
session_start();
// 用Cookie保存Session的ID和生存周期
setcookie(session_name(), session_id(), $time, "/");
// 注册登陆成功的 username 变量,并赋值 true
$_SESSION["username"] = true;
注: session_set_cookie_params()是用Cookie保存Session的ID和生存周期的函数,但据称如果客户端使用IE 6.0,就有麻烦,所以这里使用setcookie()函数设置。
如果不设置Session的生存周期,Session ID存储在内存中,关闭浏览器后该ID自动注销,再次打开页面时,需重新注册ID。
这也是Cookie和Session结合的好处。
这时打开目录session_save_dir就可以看到类似sess_latp6c8mojr4ld05v7si03re45的文件,文件名后面一部分是32编码后的随机字符串。用记事本打开,显示如下内容: useraname|b:1;
如果username位置是数字,比如, $_SESSION["123"],session文件内容为空,这条是实践后的个人结论,欢迎高手指点。
3, 注销此用户的Session:
session_save_path($session_save_dir);
session_start();
// 注销 变量 username
unset($_SESSION["username"]);
// 注销 Session 文件
session_destroy();
注: 用户可以修改、删除自己对应的那个变量的值。
用户权限验证:
session_save_path($session_save_dir);
session_start();
if (isset($_SESSION[$username]) && $_SESSION[$username] == true) {
echo "你的代码";
} else {
echo "未登陆,无权访问";
}