значэння сеансу CodeIgniter доступу са знешніх файлаў

У маім CodeIgniter праекце я дадаў КСК шукальніка.

яна мае патрэбу ў некаторых значэннях сесіі, якая кантралюецца CodeIgniter. Як я магу атрымаць доступ да значэнняў сеансу CI з знешніх файлаў?

4

6 адказы

<?php
    ob_start();
    include('index.php');
    ob_end_clean();
    $CI =& get_instance();
    $CI->load->library('session'); //if it's not autoloaded in your CI setup
    echo $CI->session->userdata('name');
?>
4
дададзена
Гэта не працуе для мяне таксама. Гэта ўключыць ( «index.php»); файл, я ўключыў яго з папкі external_codeigniter. Ці можаце вы дапамагчы ў гэтым?
дададзена аўтар Ashutosh Singh, крыніца
Гэта не працуе для мяне: Ваш шлях да тэчцы сістэмы не адлюстроўваецца правільна ўсталяваць. Калі ласка, адкрыйце наступны файл і выправіць гэта: index.php
дададзена аўтар Jorge Olivares, крыніца

Калі вы хочаце атрымаць доступ да сесіі (і яны заснаваныя файл) з-за межаў CodeIgniter, і вы не хочаце, каб загрузіць CI, вы можаце зрабіць гэта:

define('ENVIRONMENT', 'development');

$ds = DIRECTORY_SEPARATOR;
define('BASEPATH', dirname(dirname(dirname(__FILE__))));
define('APPPATH', BASEPATH . $ds . 'application' . $ds);
define('LIBBATH', BASEPATH . "{$ds}system{$ds}libraries{$ds}Session{$ds}");

require_once LIBBATH . 'Session_driver.php';
require_once LIBBATH . "drivers{$ds}Session_files_driver.php";
require_once BASEPATH . "{$ds}system{$ds}core{$ds}Common.php";

$config = get_config();

if (empty($config['sess_save_path'])) {
    $config['sess_save_path'] = rtrim(ini_get('session.save_path'), '/\\');
}

$config = array(
    'cookie_lifetime'   => $config['sess_expiration'],
    'cookie_name'       => $config['sess_cookie_name'],
    'cookie_path'       => $config['cookie_path'],
    'cookie_domain'     => $config['cookie_domain'],
    'cookie_secure'     => $config['cookie_secure'],
    'expiration'        => $config['sess_expiration'],
    'match_ip'          => $config['sess_match_ip'],
    'save_path'         => $config['sess_save_path'],
    '_sid_regexp'       => '[0-9a-v]{32}',
);


$class = new CI_Session_files_driver($config);

if (is_php('5.4')) {
    session_set_save_handler($class, TRUE);
} else {
    session_set_save_handler(
        array($class, 'open'),
        array($class, 'close'),
        array($class, 'read'),
        array($class, 'write'),
        array($class, 'destroy'),
        array($class, 'gc')
    );
    register_shutdown_function('session_write_close');
}
session_name($config['cookie_name']);
session_start();
var_dump($_SESSION);
1
дададзена

Два рашэнні прыходзіць на розум (якія не звязана з дэкадаваннем печыва канфігурацыйны)

1) Скапіюйце іх на звычайныя PHP сесій, калі вы прызначаеце ўнутры CI:

$_SESSION['name'] = $this->session->userdata('name');

Такім чынам, у вас ёсць яго даступным для кожнага файла PHP на вашым серверы; Я лічу, што гэта самае хуткае рашэнне.

2) захаванне сесій у базе дадзеных, і падлучыцца да яго, каб атрымаць значэння.

0
дададзена
я атрымаў рашэнне з гэтага сайта renownedmedia.com/ блог/& hellip; яго працы, але яго патрэбы некаторыя мадыфікацыі.
дададзена аўтар balaphp, крыніца

Я выкарыстоўваю знешняе прыкладанне для ўваходу і хацеў скарыстаць дадзеныя з CI сесій. Я знайшоў гэтую інфармацыю http://codeigniter.com/forums/viewthread/86380/ пра тое, як каб зрабіць гэта, не працуе нічога з рамак CI. Для мяне гэта ідэальны варыянт, як ён будзе трымаць усё несумяшчальнасці ад выклікаюць праблем.

У выпадку, калі ў вас ёсць пытанні, здабываючы інфармацыю па спасылцы:

  1. Калі з дапамогай CI печыва сесіі затым атрымаць печыва сесіі толькі.
  2. Пры выкарыстанні či сеансу з базай дадзеных затым атрымаць кук сесіі і запыт на матч у базе дадзеных у табліцы ci_session для праверкі сесіі.
  3. Выкарыстоўвайце дадзеныя і дадаць дадзеныя па меры неабходнасці ў печыва (і ў базе дадзеных пры выкарыстанні сеансу базы дадзеных).
0
дададзена
Codeigniter Спасылка не працуе
дададзена аўтар Mr. ED, крыніца

Прывітанне як раз, перш чым я атрымаў гэты код звяртаючыся да дапамогі.

     //path to your database.php file   
     require_once("../frontend/config/database.php");

     $cisess_cookie = $_COOKIE['ci_session'];
     $cisess_cookie = stripslashes($cisess_cookie);
     $cisess_cookie = unserialize($cisess_cookie);
     $cisess_session_id = $cisess_cookie['session_id'];

     $cisess_connect = mysql_connect($db['default']['hostname'], $db['default']      ['username'], $db['default']['password']);
     if (!$cisess_connect) {
       die("<div class=\"error\">" . mysql_error() . "</div>");
     }
     $cisess_query = "SELECT user_data FROM ci_sessions WHERE session_id =        '$cisess_session_id'";

     mysql_select_db($db['default']['database'], $cisess_connect);
     $cisess_result = mysql_query($cisess_query, $cisess_connect);
     if (!$cisess_result) {
       die("Invalid Query");
     }
     $cisess_row = mysql_fetch_assoc($cisess_result);
     $cisess_data = unserialize($cisess_row['user_data']);

    //print all session values 
     print_r($cisess_data);
0
дададзена

Bens адказ з ўключаюць ( «index.php») і атрыманне асобніка CI не дрэнна, але ў маёй сітуацыі гэтыя дзеянні занадта павольна.

Як я CodeIgniter настроены на выкарыстанне файлаў я зрабіў гэта рашэнне, якое трохі хутчэй:

function CIsession()
{
    $pathToSessionFiles = 'path/to/files/set/in/codeigniter/config/';

    $h = md5($_SERVER['REMOTE_ADDR']);//$config['sess_match_ip'] = TRUE;
    foreach( glob($pathToSessionFiles . '*' ) as $f )
    {   
        if( strpos($f, $h) ) { $s[ $f ] = filemtime($f); }
    }
    arsort($s);
    $s = array_keys($s);
    $s = reset($s);
    $s = file($s);
    $s = reset($s);
    $s = explode(';', $s);
    foreach($s as $k => $v)
    {
        $s[$k] = str_getcsv($v, ":", '"');
        $s[$k][0] = substr(reset($s[$k]), 0, strpos(reset($s[$k]), '|'));

        $s[reset($s[$k])] = end($s[$k]);
        unset($s[$k]);
    }

    return $s;
}

Спадзяюся, што гэта дапамагае нехта!

0
дададзена