动态网站设计都需要用到会话管理(主要是Session)。本节主要介绍Session和Cookie在网站登录时的使用,主要是掌握如何在网站中使用Session来鉴别登录的用户。
1、网站登录过程
主要就是登录成功时,要记录一个Session
注意,课件中提供的can_login()函数仅是一个演示,实际情况是要根据用户名和加密后的密码,到数据库中查询。
2、功能页面也要认证用户
所有要鉴别用户身份的页面,都需要判断是否存在这个Session
实际使用中,读取Session后,还要访问数据库,判断该用户具有哪些权限,决定显示哪些内容。如判断是普通用户,还是网站管理员。
3、清除Session
网站提出“退出”功能,在退出时,要清除用户的Session。
用unset语句删除掉用户有关的Session,对大部分网站就够了。
如果想退出时再安全一点,可以采取以下几个步骤:
参考:php中session原理及安全性问题:
https://www.cnblogs.com/lyFocus/p/6109157.html
4、使用cookie记住用户名
(1)使用复选框,判断用户是否要记住用户名
因为只一个复选项,所以判断有没有$_POST["remember"]变量就可以了。
$remembered = isset($_POST["remember"]);
如果有多个复选项,html input控件的name属性要用"remember[]",那么用$_POST["remember"]变量获得的是一个包括各复选项内容的数组(如果任何一个都没选中,这个变量也为空)。见Task 10.2。
(2)访问登录页面时,有记住用户名的Cookie要取出来
//读取cookie并将用户名赋值给$name,之后显示在name文本框
if (!empty($_COOKIE["login_name"])){
$name = $_COOKIE["login_name"];
}
(3)用户登录成功时,使用Cookie记住用户名
if (can_login($name, $pwd)){
//将认证过的用户名保存到cookie中
if ($remembered){
setcookie("login_name",$name,time()+14*24*60*60);
}
//将name保存到Session
}
注意:这段代码因为要写入Cookie,所以必须要放在<html>标记之前。
5、关于课后练习
参照课堂示例,创建登录页面,并对具体功能页面(如文件上传)进行登录认证。