<?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的更多相关文章

  1. ecshop session机制

    ecshop session机制 2014-06-12    1455     懒人程序   ecshop的cls_session.php分析,主要是讲述ecshop中的session机制.我们都知道 ...

  2. ecshop session丢失问题

    ecshop session丢失问题 电子商务PHP 用ecshop搭建了一个电子商务的系统,本地测试一切正常.放到服务器上出现问题: 症状:      点着点着经常无故退出,感觉session被清空 ...

  3. php 的session机制 和ecshop session机制

    一.默认机制,用磁盘文件来实现PHP会话.php.ini配置:session.save_handler = files 1.session_start() A. session_start()是ses ...

  4. ecshop换用redis做缓存

    <?php /** * ecshop SESSION 保存类 * ================================================================ ...

  5. memory_limit session.cache_expire ecshop初始化注释说明

    memory_limit session.cache_expire ecshop初始化注释说明 memory_limit = 128M; 一个脚本所能够申请到的最大内存字节数(可以使用K和M作为单位) ...

  6. 将ecshop中的session机制重写,从DB移植到Memcache中去

    <?php if (!defined('IN_ECS')) { die('Hacking attempt'); } /*------------------------------------- ...

  7. ECshop中的session机制理解

    ECshop中的session机制理解     在网上找了发现都是来之一人之手,也没有用自己的话去解释,这里我就抛砖引玉,发表一下自己的意见,还希望能得到各界人士的指导批评! 此session机制不需 ...

  8. python 登录并获取session,使用session新增ecshop的草稿

    ,"consignee":"冬天","email":"12345@qq.com","address" ...

  9. php ecshop 二级域名切换跳转时session不同步,解决session无法共享同步导致无法登陆或者无法退出的问题

    echshop基础上做了单点登录的 一级域名与二级域名 退出时 清空session 都是一级域名的session 因为二级域名的session是设置在二级域名上的 echshop基础上没有做单点登录的 ...

随机推荐

  1. Image File Execution Options(2)

    跳转转到键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options在里 ...

  2. ping命令使用技巧(一次Ping多个地址)

    打开windows 命令行 窗口, 在命令行输入以下命令: for /l %i in (1,1,255) do ping -n 1  -w 60 192.168.0.%i  | find " ...

  3. sphinx分域搜索

    http://stackoverflow.com/questions/2526407/complex-query-with-sphinx 比如要实现和如下sql代码相同的功能: SELECT * FR ...

  4. 【转】揭秘JavaScript中谜一样的this

    原文:http://www.ituring.com.cn/article/66889 在这篇文章里我想阐明JavaScript中的this,希望对你理解this的工作机制有一些帮助.作为JavaScr ...

  5. angularJs中ngModel的坑

    angular中指令被用的最多的除了ng-repeat之外就非他莫属了吧,由于各种业务的需求,我们经常需要去写一些继承ngModel的指令,来满足各种奇葩需求,最多的莫过于表单的验证啦,另外你在封装一 ...

  6. mysql----快速删除数据表(drop,truncate.delete)

    概念: 三者均可删除数据表 TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快 ...

  7. Python之路: 模版篇

    模块   随着python越来越强大,相同的代码也在不段复杂.为了能够更好更方便的维护,人们越来越愿意把很多写出来的功能函数保存在不同的文件夹中,这样在用的时候调用,不用的时候可以忽略.这就是模块的由 ...

  8. IFields Interface 定义一个字段集合对象

    Description The Fields object represents a collection of columns in a table. The term field is synon ...

  9. javascript 中this的使用场景全

    1. global this 2.function this 3.prototype this 4. object this 5.DOM this 6 HTML this 7 override thi ...

  10. hdu-oj 1874 畅通工程续

    最短路基础 这个题目hdu-oj 1874可以用来练习最短路的一些算法. Dijkstra 无优化版本 #include<cstdio> #include<iostream> ...