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基础上没有做单点登录的 ...
随机推荐
- 一个appium 博客
http://www.cnblogs.com/tobecrazy/category/699177.html appium Java控制Appium server start/stop 摘要: 相信很多 ...
- hdu_2546_饭卡(01背包)
题目连接:hdu_2546_饭卡 题意:中文,不解释 题解:先拿5元来买最贵的,最后就是一个01背包,这里也算用到贪心的思想 #include<bits/stdc++.h> #define ...
- Redis学习笔记(二)-key相关命令【转载】
转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...
- RadioGroup+TabHost
=.= //MainActivity public class MainActivity extends TabActivity implements OnCheckedChangeListener ...
- ArrayList和数组间的相互转换
开发中不免碰到List与数组类型之间的相互转换,举一个简单的例子: package test.test1; import java.util.ArrayList; import java.util.L ...
- 直接拿来用!最火的iOS开源项目(一)
直接拿来用!最火的iOS开源项目(一) 发表于2013-06-05 10:17| 39373次阅读| 来源CSDN| 100 条评论| 作者唐小引 iOS开源项目GitHub移动开发最受欢迎的开源项目 ...
- Oracle教程-查询(二)
emp 雇员表字段名称 数据类型 是否为空 备注-------- ----------- -------- --------EMPNO NUMBER(4) ...
- Base64编码Java实现
一.什么是Base64编码 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一.Base64 主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输. 由于一些二进制字符在 ...
- 转 android客户端版本检测更新,服务下载,通知栏显示
看图, 只要点击取消或是下载完毕 通知才会消失! 代码是大部分是借用别人的,再自己修改,达到自己所需要的效果 xml文件 update.xml <?xml version=" ...
- javascript 闭包理解例子
function Jquery(){ this.name = 'ysr'; this.sex = 'man'; return { x: this, age : 26 } } var b = new J ...