admin 管理员组文章数量: 887007
PHP会话控制
后台代码 - 会话控制
关于用户的功能:登录、注销:注册、修改密码、上传头像、签名信息
让浏览器记住用户的登录状态。
Cookie
向浏览器写入Cookie信息
将用户的登录状态写到浏览器的Cookie中。
向客户端电脑的浏览器中设置Cookie
setcookie('username',$uName,time()+60*60);
//设置Cookie 成功,返回true;否则,返回false
//uName=ajest
// time() 显示当前时间(unix时间)
参数 | 名字 | 含义 |
name | 名称 | Cookie名称 |
value | 值 | 这个值储存于用户的电脑里,请勿存储敏感信息。 |
expire | 过期时间 | 这个是Unix时间截。如果设置成零,或者忽略参数,Cookie会在会话结束时过期(也就是关掉浏览器时)。 |
path | 有效路径 | 设置成 / 时,Cookie对整个域名domain有效。如果设置成/bbs/,Cookie仅仅对domain 中 /bbs/目录及其子目录有效(如果/bbs/member/)。设置值是设置Cookie时的当前目录。 |
domain | 有效域名 | 设置成子域名(例如www.example),会使Cookie对这个子域名和它的三级域名有效(例如 w2.www.example)。要让Cookie对整个域名有效(包括它的全部子域名),只要设置成域名就可以了(这个例子里是example) |
secure | HTTPS | 设置成TRUE时,只有安全连接存在时才会设置Cookie,如果是在服务器端处理这个需求,程序员需要仅仅在安全连接上发送此类Cookie(通过 $_SERVER["HTTPS"]判断)。 |
httponly | 设置成TRUE,Cookie仅可通过HTTP协议访问。这意思就是Cookie无法通过类似JavaSCript这样的脚本语言访问。要有效尖山XSS攻击时的身份窃取行为,可建议用此设置(虽然不是所有浏览器都支持),不过这个说法经常会有争议。PHP5.2.0中添加。TRUE或FALSE |
读取Cookie信息
var_dump($_COOKIE);
注销Cookie信息
删除Cookie信息,就意味着退出登录。
删除Cookie信息,就是让Cookie失效。
if(setookie('username','',time()-3600) && setookie('id','',time()-3600)){header("location./index.php");
}else{echo "Erroe";
}
使用setcookie删除cookie的时候,需要与当初设置cookie的时候参数一致
完善user表
用户的密码
原来user表中的用户密码是以明文方式存储,这是非常严重的安全隐患。考虑将user表中的password字段采用加密方式存储。
一般采用MD5,加密处理。MD5单项hash加密算法。
update user set password=md5('123456');
增加头像信息
头像是图片
数据库能存图片,但是,数据库中存储的不是图片内容,而是图片的路径。
session
开启session
session_start()
- 开启一个会话
- 一个客户到超市里买东西办会员卡!
- 打开已经存在的会话
- 当这个客户以后再到超市买东西的时候根据上次办的卡号买东西!根据客户端传来的sessionid,把这个sessionid对应的数据读取到$_SESSION这个变量里面
获取和修改session
$_SESSION
销毁session
session_destory();
关键参数
session.save_path //;session.save_path = "/tmp"
session.name //session.name = PHPSESSID
关键函数
session_name(); //读取/设置会话名称
session_id(); //读取/设置当前会话 ID
关于SESSION
- session是-种会话管理技术。PHP中对SESSION技术做了支持。
- SESSION技术简单的说就是将会话信息存放再服务器中。
- 要使用session技术,需要在每个使用session会话控制的页面首行(也不一定是首行),写入session_ start()函数。该函数会检测客户端请求页面时,是否传递了sessionId。
初次登陆网站
- session_ start() 函数会下发sessionld,并存储再Cookie信息中(也就是说,SESSION 技术的实现需要Cookie的支持)。
- 可以使用函数session_ name() ,读取sessionld 的名字。
- 并且,sessionId 的名字写在php. ini配置文件中,也可以自定义sessionId。
- 函数session_ start() 再下发sessionId的时候,也会创建sessionId随机值,可以通过函数session id() 读取到。与此同时,会在缓存目录下生成相应的session缓存。
- 关于缓存目录,可以通过php. ini的选项配置。
重用sessionid
- 可以通过预定义超全局数组变量$_ SESSION, 完成session 信息的读写。尝试写入session变量,并更新session缓存。
- 尝试读取SESSION变量,读取session 变量的时候就比较有意思了。注意URL地址!
- 关闭浏览器就意味着COOKIE失效,那么就会读取不到刚才的SESSION信息。因为sessionld 已经失效了。session_ start() 函数会重新分配sessionld。
- 值得注意的是session缓存依旧在服务器中。
document.cookie="PHPSESSID=p0t201gtnkllbem23g326on8t1";
- session的销毁,直接使用session_ destory() 函数即可。运行此函数,服务器会删除session缓存,但是Cookie信息依然存在。
本文标签: PHP会话控制
版权声明:本文标题:PHP会话控制 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732352952h1533611.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论