1、session基本操作
2、浏览器禁用 cookie 解决方法
当服务端与客户端通信后会生成会话后,会建立一个和浏览器的唯一会话PHPSESSID。这个id会在服务端保存,也会用cookie形式保存在客户端中。
禁用cookie后session不能把唯一id通过cookie方式在客户端中进行存储,这时候php会在浏览器地址栏中以url明文get的方式来传递phpsessionid,来进行客户端和服务端的唯一识别通信。
这样一来程序的安全性大大降低了。所有在php.ini默认是关闭通过地址栏传递phpsessionid的,如果没开启就不能使用session,所以需要php.ini配置支持才行。
session.use_only_cookies = 1; // 开启仅使用cookies存放会话idsession.use_trans_sid = 1; // 允许Sessionid通过URL明文传输,默认为0关闭
或可以使用代码实现:
if (!function_exists('session_create_id')) {function session_create_id(){return uniqid();}// 获取SESSION_ID$session_id = isset($_GET['SESSION_ID']) ? $_GET['SESSION_ID'] : session_create_id();// 设置 SESSION_IDsession_id($session_id);// 输出 session_idecho $session_id;
3、浏览计数器
利用 session 可以记录用户的访问页面的次数,代码如下:
4、使用 session 实现登录功能
Session 是存储在服务器端的,远程用户没办法修改 Session 文件的内容,因此我们可以单纯存储一个 $admin 变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。
而且可以减少每次为了验证 Cookie 而传递密码的不安全性了(Session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。即使密码进行了 md5 加密,也是很容易被截获的。
下面是一个简单的用户登录示例:
首先自定义一个用户的用户名和密码保存在 session 中,第一次登录时将 form 表单提交的用户名和密码和 session 中的用户名和密码比较,若用户名和密码相同,则保存一个用户已登录的 session 值;若不相同,则登录失败。之后用户再次登录时,只需判断是否存在用户已登录的 session 值即可,若存在,则用户已登录;若不存在,则用户还没有登录过。
PHP Session 会话基础知识介绍
CURL数据传输神器,PHP怎么使用