【问题标题】:Share session between Core Php & CodeIgniter在 Core Php 和 CodeIgniter 之间共享会话
【发布时间】:2017-04-08 12:28:25
【问题描述】:

我有一个在 Core PhP 中的网络应用程序。我们正在逐步将其移至 CI 框架

问题:需要在他们之间共享会话价值。

核心 PHP 应用程序目录结构:|-- /xampp/lms/
核心 PHP 应用程序 URL: http://localhost/lms/index.php p>

CI 应用程序目录结构:|-- /xampp/lms/newlms/
CI 应用程序 URL:http://localhost/lms/newlms/index.php/login

CI 配置:

config.php

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

$config['cookie_prefix']    = '';
$config['cookie_domain']    = '';
$config['cookie_path']      = '/';
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']  = FALSE;

到目前为止我做了什么。

核心 PHP 变化
路径:\xampp\htdocs\lms\configuration.inc.php这是核心 php 中首先调用的文件

session_name('ci_session');
session_start();

echo '<pre>';
echo '<br/>------------- session_save_path-------- <br/>';
print_r(session_save_path());
echo '<br/>------------- session_name-------- <br/>';
print_r(session_name());
echo '<br/>------------- $_COOKIE -------- <br/>';
print_r($_COOKIE);
echo '<br/>------------- $_SESSION -------- <br/>';
print_r($_SESSION);
exit;  

输出:

------------- session_save_path-------- 
\xampp\tmp
------------- session_name-------- 
ci_session
------------- $_COOKIE -------- 
Array (
    [ci_session] => 2b9tj8rek53kapgsuh4k3v2fuuvblvq9
)

------------- $_SESSION -------- 
Array (
    some values which I have set in Core php
)  

会话路径xampp\tmp\sess_2b9tj8rek53kapgsuh4k3v2fuuvblvq9

CI 更改
路径:\xampp\htdocs\lms\newlms\application\modules\login\controllers

Class Login extends MX_Controller {

   function __construct() {
     parent::__construct();
   }

   function index() {
echo '<pre>';
echo '<br/>------------- session_save_path-------- <br/>';
print_r(session_save_path());
echo '<br/>------------- session_name-------- <br/>';
print_r(session_name());
echo '<br/>------------- $_COOKIE -------- <br/>';
print_r($_COOKIE);
echo '<br/>------------- $_SESSION -------- <br/>';
print_r($_SESSION);
exit;
   }
 }

输出:

------------- session_save_path-------- 
\xampp\tmp
------------- session_name-------- 
ci_session
------------- $_COOKIE -------- 
Array (
    [ci_session] => 2b9tj8rek53kapgsuh4k3v2fuuvblvq9
)

------------- Core $_SESSION -------- 
Array (
    [__ci_last_regenerate] => 1479978675
)

------------- CI $_SESSION -------- 
CI_Session Object (
 .. Some values.
)

PS:我试图以最好的方式解释,但在投反对票之前请分享原因。

【问题讨论】:

  • 您使用的是哪个版本的 CI? CI 的会话处理程序只是 php 会话处理程序的包装器
  • @bertmaclin CI 的版本 = 3.1.2

标签: php codeigniter session


【解决方案1】:

按照 bertmaclin 的建议,

CI 的会话处理程序只是 php 会话处理程序的包装器

拥有 tweek CI 的 config.php 和 session 库。

CI config.php:base_url 配置之前添加给定代码。

session_start();

CI Session.php: 在会话库第 142 行的 session_start() 之前添加了 @。

@session_start();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-10
    • 2011-12-20
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多