
解决Session跨域的几种方法
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本文探讨了多种实现Session在不同域名之间共享的技术方案,旨在帮助开发者轻松应对复杂项目中的跨域问题。
```php
class Session {
// MySQL的主机地址
const db_host = localhost;
// 数据库用户名
const db_user = root;
// 数据库密码
const db_pwd = ;
// 数据库名称
const db_name = thinkphp;
// 数据表名
const db_table = tbl_session;
private $db_handle;
private $lifeTime;
function open($savePath, $sessName) {
// 获取 session 生命周期
$this->lifeTime = get_cfg_var(session.gc_maxlifetime);
// 打开数据库连接
$db_handle = @mysql_connect(self::db_host, self::db_user, self::db_pwd);
$dbSel = @mysql_select_db(self::db_name, $db_handle);
if (!$db_handle || !$dbSel) {
return false;
}
$this->db_handle = $db_handle;
return true;
}
function close() {
// 调用垃圾回收函数
$this->gc(ini_get(session.gc_maxlifetime));
// 关闭数据库连接
return @mysql_close($this->db_handle);
}
function read($sessID) {
// 查询 session 数据
$res = @mysql_query(SELECT session_data AS d FROM . self::db_table .
WHERE session_id = $sessID AND session_expires > .time(), $this->db_handle);
if ($row = @mysql_fetch_assoc($res)) {
return $row[d];
}
return ;
}
function write($sessID, $sessData) {
// 新的过期时间
$newExp = time() + $this->lifeTime;
// 检查数据库中是否有该 session ID 的记录
$res = @mysql_query(SELECT * FROM . self::db_table .
WHERE session_id = $sessID, $this->db_handle);
if (@mysql_num_rows($res)) {
// 更新 session 数据
@mysql_query(UPDATE .self::db_table. SET session_expires = $newExp,
session_data = $sessData
WHERE session_id = $sessID,
$this->db_handle);
// 如果更新成功,返回 true
if (@mysql_affected_rows($this->db_handle)) {
return true;
}
} else {
// 创建新的记录
@mysql_query(INSERT INTO .self::db_table. (session_id, session_expires, session_data) VALUES ($sessID, $newExp, $sessData), $this->db_handle);
if (@mysql_affected_rows($this->db_handle)) {
return true;
}
}
// 如果没有成功,返回 false
return false;
}
}
```
全部评论 (0)


