session执行原理
客户端 登录 服务器, 在服务器上存储了session, 服务器会为该客户端创建一个session文件,
并把 session id 存储到 客户端的cookie上
关于session的配置
session.save_handler = files session保存在文件中 session.save_path = "c:/wamp/tmp" 保存文件的路径 session.use_cookies = 1 是否使用cookie session.use_only_cookies = 1 是否只使用cookie session.name = PHPSESSID cookie中sessionid的键名 session.auto_start = 0 是否自动开启session session.cookie_lifetime = 0 sessionid在 cookie的生存周期 session.cookie_path = / session.cookie_domain = session.cookie_httponly = session.serialize_handler = php 文件中存储session数据的方法 session.gc_probability = 1session.gc_divisor = 1000session.gc_maxlifetime = 1440 session默认保存时间 秒 session.use_trans_sid = 0
自定义session
① 设置 session的处理 方式为 用户自定义
session_module_name('user') 或 ini_set('')
② 设置回调函数 控制session的处理流程
session_set_save_handler(open, close, read, werite, destroy, gc)open(sess_path, sess_name)close()read(sess_id)write(sess_id, sess_data)destroy(sess_id)gc(sess_lifetime)
session存储在 自定义文件中
它的意义不大就不说了
session存储在 数据库中
定义一个类来执行操作
1 | <?php |
数据库建表
1
2
3
4
5create table session(
sess_id char(32) not null primary key,
sess_data text not null,
sess_time int not null
)engine=innodb default charset=utf8;
测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<?php
header("Content-type:text/html;charset=utf-8");
require "./DbSession.class.php";
$_SESSION['username'] = "jiabrother";
$_SESSION['age'] = "45";
$_SESSION['grade'] = "s33";
//session_destroy();
echo "<hr>";
var_dump($_SESSION);
var_dump($_COOKIE);
?>
<a href="2.php">2.php</a>
session存储在 memcache
1 | <?php |
测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<?php
header("Content-type:text/html;charset=utf-8");
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', '127.0.0.1:11211');
session_start();
var_dump($_SESSION);
var_dump($_COOKIE);
$mem = new Memcache();
$mem->addServer('127.0.0.1', 11211);
echo $mem->get('okgmpf6dije13a88u4ikad6h31');
?>
本文为 小风原创文章,转载无需和我联系,但请注明来自 小风博客www.hotxf.com