ECSHOP session
<?php
class cls_session
{
var $session_table = '';
; // SESSION 过期时间
var $session_name = '';
var $session_id = '';
var $session_expiry = '';
var $session_md5 = '';
;
function __construct($session_table,$session_name){
$this->cls_session($session_table,$session_name);
}
function cls_session($session_table,$session_name){
$GLOBALS['_SESSION'] = array();
$this->session_name = $session_name;
$this->session_table = $session_table;
if (!empty($_COOKIE[$this->session_name])){
$this->session_id = $_COOKIE[$this->session_name];
}
else{
$this->session_id = '';
}
$this->_time = time();
if ($this->session_id){
$this->load_session();
}
else{
$this->gen_session_id();
setcookie($this->session_name, $this->session_id);
}
register_shutdown_function(array($this, 'update_session'));
}
function gen_session_id(){
$this->session_id = md5(uniqid(mt_rand(), true));
return $this->insert_session();
}
function insert_session(){
return mysql_query('INSERT INTO ' . $this->session_table . " (sesskey, expiry,data) VALUES ('" . $this->session_id . "', ". $this->_time .",'a:0:{}')");
}
function load_session(){
$result = mysql_query('SELECT data, expiry FROM ' . $this->session_table . " WHERE sesskey = '" . $this->session_id . "'");
$session = mysql_fetch_array($result);
if (!empty($session['data']) && $this->_time - $session['expiry'] <= $this->max_life_time){
/***********************************************
* unserialize()还原已经序列化的SESSION变量 *
* 保证了SESSION变量的页面间传值的作用 *
***********************************************/
$GLOBALS['_SESSION'] = unserialize($session['data']);
}
}
;
$userid ;
/************************************************************************
* 用serialize函数将所有你所赋值的SESSION变量转化为一个序列化的字符串。 *
* SESSION本质不会发生变换,存入数据库中,用于下次调用。 *
************************************************************************/
$data = serialize($GLOBALS['_SESSION']);
$this->_time = time();
return mysql_query('UPDATE ' . $this->session_table . " SET expiry = " . $this->_time . ", userid = '" . $userid . "', adminid = '" . $adminid . "', data = '$data' WHERE sesskey = '" . $this->session_id . "'");
}
}
// database host
$db_host = "localhost";
// database name
$db_name = "ecshop";
// database username
$db_user = "root";
// database password
$db_pass = "dingran";
$link = mysql_connect($db_host, $db_user, $db_pass);
if ($link){
mysql_select_db($db_name);
}
else{
exit('mysql connection error:'.mysql_error());
}
/* 初始化session */
$sess = new cls_session('ecs_sessions','ECSCP_ID');
;
header("Location: e.php"); //在e.php再加载一次cls_session类,输出session变量
}
?>
ECSHOP session的更多相关文章
- ecshop session机制
ecshop session机制 2014-06-12 1455 懒人程序 ecshop的cls_session.php分析,主要是讲述ecshop中的session机制.我们都知道 ...
- ecshop session丢失问题
ecshop session丢失问题 电子商务PHP 用ecshop搭建了一个电子商务的系统,本地测试一切正常.放到服务器上出现问题: 症状: 点着点着经常无故退出,感觉session被清空 ...
- php 的session机制 和ecshop session机制
一.默认机制,用磁盘文件来实现PHP会话.php.ini配置:session.save_handler = files 1.session_start() A. session_start()是ses ...
- ecshop换用redis做缓存
<?php /** * ecshop SESSION 保存类 * ================================================================ ...
- memory_limit session.cache_expire ecshop初始化注释说明
memory_limit session.cache_expire ecshop初始化注释说明 memory_limit = 128M; 一个脚本所能够申请到的最大内存字节数(可以使用K和M作为单位) ...
- 将ecshop中的session机制重写,从DB移植到Memcache中去
<?php if (!defined('IN_ECS')) { die('Hacking attempt'); } /*------------------------------------- ...
- ECshop中的session机制理解
ECshop中的session机制理解 在网上找了发现都是来之一人之手,也没有用自己的话去解释,这里我就抛砖引玉,发表一下自己的意见,还希望能得到各界人士的指导批评! 此session机制不需 ...
- python 登录并获取session,使用session新增ecshop的草稿
,"consignee":"冬天","email":"12345@qq.com","address" ...
- php ecshop 二级域名切换跳转时session不同步,解决session无法共享同步导致无法登陆或者无法退出的问题
echshop基础上做了单点登录的 一级域名与二级域名 退出时 清空session 都是一级域名的session 因为二级域名的session是设置在二级域名上的 echshop基础上没有做单点登录的 ...
随机推荐
- Git学习 -- 删除文件
1 从版本库删除文件 git rm <file> git commit -m "xxx" 2 工作区中文件被误删,但版本库中没有删除,可以恢复到工作区 git chec ...
- Linux 监控文件事件
某些应用程序需要对文件或者目录进行监控,来侦测其是否发生了某些事件.Linux很贴心的为我们提供了inotify API,也是Linux的专有. inotify API 在使用之前一定要有一个inot ...
- Git 分支-利用分支进行开发的工作流程
3.4 Git 分支 - 利用分支进行开发的工作流程 利用分支进行开发的工作流程 现在我们已经学会了新建分支和合并分支,可以(或应该)用它来做点什么呢?在本节,我们会介绍一些利用分支进行开发的工作流程 ...
- Windows修改hosts文件及位置
文件位置 C:\Windows\System32\drivers\etc 中的hosts文件 修改方式 指定IP 域名 192.168.66.7 www.baidu.com
- 使用float和display:block将内联元素转换成块元素的不同点
使用float和display:block将内联元素转换成块元素的不同点 使用float和display:block将内联元素转换成块元素的不同点:内联元素可以转换成块级元素,常用的方法比如可以为内联 ...
- oracle sql 分页
Oracle实现分页时,需要引入一个rownum的函数,rownum可以给记录一个类似于id的字段. 以下收整理了常用的几种sql分页算法,数据库以Oracle中emp为例.查询结果如下: SQL&g ...
- 细菌(disease)
细菌(disease) 题目描述 近期,农场出现了D(1≤D≤15)种细菌.John要从他的N(1≤N≤1000)头奶牛中尽可能多地选些产奶,但是如果选中的奶牛携带了超过K(1≤K≤D)种不同细菌,所 ...
- 开发板S3C2440挂起NFS步骤
第一.安装.配置.启动FTP.SSH或NFS服务 参考韦东山的嵌入式linux应用开发完全手册 http://pan.baidu.com/s/1o79h3n0 第二.windows.linux以及开发 ...
- Memory
A - Memory Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit Sta ...
- (困难) CF 484E Sign on Fence,整体二分+线段树
Bizon the Champion has recently finished painting his wood fence. The fence consists of a sequence o ...