Login   Register  
PHP Classes
elePHPant
Icontem

File: zencart_session_handler.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Felix Manea  >  Zencart Bridge  >  zencart_session_handler.php  >  Download  
File: zencart_session_handler.php
Role: Auxiliary script
Content type: text/plain
Description: Zencart session hanlder file (must be used instead of session_start())
Class: Zencart Bridge
Manage users of Zencart installation
Author: By
Last change: - added integration instructions
Date: 2008-11-14 02:22
Size: 3,510 bytes
 

Contents

Class file image Download
<?php
/*
There are two ways to use this session handler:
 1. Replace the session_start() with include "session_handler.php" - this will create your application have the same session as zencart (for admin section integration you need to change the $session_name from zenid to zenAdminID
 2. Call it in html as an image (<img src='session_handler_img.php' alt="">) - this will only help you to keep the zencart session alive and you should be keeping your session timeout to 24 minutes which is the zencart session timeout standard time (hardcoded).
*/
//open zencart class first
require_once("zencart.class.php");

function 
zencart_sess_open($save_path$session_name) {
    return 
true;
}

function 
zencart_sess_close() {
    return 
true;
}

function 
zencart_sess_read($session_id) {
    global 
$session_lifetime$session_read$zencart_path;
    
$tmp_zc = new zencart($zencart_path);
    
  if(
$session_read $tmp_zc->q_fetch(false"SELECT * FROM ".$tmp_zc->cfg_params["DB_PREFIX"]."sessions WHERE sesskey = '$session_id' AND expiry > " time()))
        return 
$session_read['value'];
    else 
        return 
'';
}

function 
zencart_sess_write($session_id$session_data) {
    if (!
$session_data) return FALSE;

    global 
$session_lifetime$session_read$zencart_path;
    
$tmp_zc = new zencart($zencart_path);

    
$expiry time() + $session_lifetime;
    
    
$_session_data $tmp_zc->db_sanitize($session_data);

    if(
$session_read)    
        
$result $tmp_zc->query("UPDATE ".$tmp_zc->cfg_params["DB_PREFIX"]."sessions SET expiry = $expiry, value = '$_session_data' WHERE sesskey = '$session_id' AND expiry > " time());
    else{
        
//$result = $tmp_zc->query("DELETE FROM ".$tmp_zc->cfg_params["DB_PREFIX"]."sessions WHERE sesskey = '$session_id'");
        
$result $tmp_zc->query("INSERT INTO ".$tmp_zc->cfg_params["DB_PREFIX"]."sessions VALUES ('$session_id', $expiry, '$_session_data')");
    }

    return 
TRUE;
}

function 
zencart_sess_destroy($session_id) {
    global 
$zencart_path;
    
$tmp_zc = new zencart($zencart_path);
    
$result $tmp_zc->query("DELETE FROM ".$tmp_zc->cfg_params["DB_PREFIX"]."sessions WHERE sesskey = '$session_id'");
    return 
TRUE;
}

function 
zencart_sess_gc($session_lifetime) {
    global 
$zencart_path;
    
$tmp_zc = new zencart($zencart_path);
    
$query "DELETE FROM ".$tmp_zc->cfg_params["DB_PREFIX"]."sessions WHERE expiry < " time();
    
$result $tmp_zc->query($query);
    return 
mysql_affected_rows();
}

session_set_save_handler("zencart_sess_open""zencart_sess_close""zencart_sess_read""zencart_sess_write""zencart_sess_destroy""zencart_sess_gc");

ini_set("session.save_handler""user" );

$zencart_path dirname(dirname(dirname(__FILE__)))."/zencart/";
$session_cookie_lifetime 0;
$session_cookie_path '/';
$session_cookie_domain '';
$session_cache_expire 60 24 30;
//$session_lifetime = ini_get("session.gc_maxlifetime");
$session_lifetime 60 24 30;
$session_name "zenid";
session_name($session_name);
$session_cookie_secure = @$_SERVER["HTTPS"] == "on"?true:false;
session_set_cookie_params($session_cookie_lifetime$session_cookie_path$session_cookie_domain$session_cookie_secure);
//if(version_compare(phpversion(), "4.3.0", ">=")) ini_set("session.use_only_cookies", $session_use_only_cookies);
if(version_compare(phpversion(), "4.2.0"">=")) session_cache_expire($session_cache_expire);
ini_set("session.url_rewriter.tags"'a=href,area=href,frame=src,input=src,form=fakeentry');

session_start();

?>