CI和用于读取$_SESSION的简单php之间的连接


Connection between CI and simple php for to read $_SESSION

我正在尝试将一个论坛(在Codeigniter中创建)集成到一个网站中(简单的php>>>没有使用框架)。

为了自动登录论坛,当我登录我的网站时,我需要使用论坛的一个功能,该功能需要两个参数$username和$password。

我已经从我的网站上获得了这些信息(用户名和密码),在$_SESSION中。

我如何从论坛上阅读$_SESSION(正如我在基于Codeigniter之前所说的),因为,我没有访问权限。

是否有可能在论坛的核心/配置中定义2个常量,以保存$_SESSION中的这些详细信息,以便从论坛内的任何地方访问?

我知道CI的会话与$_SESSION不同,所以请帮我做一些更实用的事情,以解决我的问题。

谢谢。

阅读此url;-

http://codeigniter.com/forums/viewthread/158923/#766011

http://codeigniter.com/forums/viewthread/188648/#892137

对于那些想用2.0.2 进行本机会话的人来说

只需将native_session.php文件复制到您的应用程序/librarys/并将其重命名为session.php

然后将类名和构造函数名更改为CI_Session

还要添加以下内容,那么它应该可以正常工作。

function sess_destroy()
{
  $this->destroy();
}

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
    Native / Database hybrid
    Code Igniter
    Citrusmedia - Matthew Lymer
*/

class CI_Session
{
    var $sess_table_name            = '';
    var $sess_expiration            = 7200;
    var $sess_match_ip                = FALSE;
    var $sess_match_useragent        = TRUE;
    var $sess_time_to_update        = 300;
    var $encryption_key                = '';
    var $flashdata_key                 = 'flash';
    var $time_reference                = 'time';
    var $gc_probability                = 5;
    var $userdata                    = array();
    var $CI;
    var $now;
    /**
     * Session Constructor
     *
     * The constructor runs the session routines automatically
     * whenever the class is instantiated.
     */
    function CI_Session($params = array())
    {                
        log_message('debug', "Session Class Initialized");
        // Set the super object to a local variable for use throughout the class
        $this->CI =& get_instance();
        // Set all the session preferences, which can either be set
        // manually via the $params array above or via the config file
        foreach (array('sess_table_name', 'sess_expiration', 'sess_match_ip', 'sess_match_useragent', 'sess_time_to_update', 'time_reference', 'encryption_key') as $key)
        {
            $this->$key = (isset($params[$key])) ? $params[$key] : $this->CI->config->item($key);
        }
        // Sessions, start your engines!
        ini_set("session.gc_maxlifetime", $this->sess_expiration);
        session_start();
        // Load the string helper so we can use the strip_slashes() function
        $this->CI->load->helper('string');
        // Are we using a database?  If so, load it
        if( !$this->sess_table_name ) {
            die('Session class database table name not configured');
        }
        $this->CI->load->database();
        // Set the "now" time.  Can either be GMT or server time, based on the
        // config prefs.  We use this to set the "last activity" time
        $this->now = $this->_get_time();
        // Set the session length. If the session expiration is
        // set to zero we'll set the expiration two years from now.
        if ($this->sess_expiration == 0)
        {
            $this->sess_expiration = (60*60*24*365*2);
        }
        // Run the Session routine. If a session doesn't exist we'll
        // create a new one.  If it does, we'll update it.
        if ( ! $this->sess_read())
        {
            $this->sess_create();
        }
        else
        {
            $this->sess_update();
        }
        // Delete 'old' flashdata (from last request)
           $this->_flashdata_sweep();
        // Mark all new flashdata as old (data will be deleted before next request)
           $this->_flashdata_mark();
        // Delete expired sessions if necessary
        $this->_sess_gc();
        log_message('debug', "Session routines successfully run");
    }
    // --------------------------------------------------------------------
    /**
     * Fetch the current session data if it exists
     *
     * @access    public
     * @return    bool
     */
    function sess_read()
    {
        // Unserialize the session array
        // $session = $this->_unserialize($session);
        $session = array();
        foreach( array('session_id', 'ip_address', 'user_agent', 'last_activity') as $key )
        {
            if( !isset($_SESSION[$key]) ) {
                $this->sess_destroy();
                return FALSE;
            }
            $session[$key] = $_SESSION[$key];
        }    
        // Is the session current?
        if (($session['last_activity'] + $this->sess_expiration) < $this->now)
        {
            $this->sess_destroy();
            return FALSE;
        }
        // Does the IP Match?
        if ($this->sess_match_ip == TRUE AND $session['ip_address'] != $this->CI->input->ip_address())
        {
            $this->sess_destroy();
            return FALSE;
        }
        // Does the User Agent Match?
        if ($this->sess_match_useragent == TRUE AND trim($session['user_agent']) != trim(substr($this->CI->input->user_agent(), 0, 50)))
        {
            $this->sess_destroy();
            return FALSE;
        }
        $this->CI->db->where('session_id', $session['session_id']);
        if ($this->sess_match_ip == TRUE)
        {
            $this->CI->db->where('ip_address', $session['ip_address']);
        }
        if ($this->sess_match_useragent == TRUE)
        {
            $this->CI->db->where('user_agent', $session['user_agent']);
        }
        $query = $this->CI->db->get($this->sess_table_name);