我有一个在 Core PhP 中的网络应用程序。我们正在逐步将其迁移到CI Framework。
问题:需要在它们之间共享 session 值。
核心 PHP 应用目录结构:|--/xampp/lms/
核心 PHP 应用程序网址: http://localhost/lms/index.php
CI 应用程序目录结构: |--/xampp/lms/newlms/
CI 应用程序网址: 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
)
session 路径 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:我已尝试以最佳方式进行解释,但在否决投票之前,请分享原因。
最佳答案
正如 bertmaclin 所建议的那样,
CI's session handler is just a wrapper of the php session handler
有 tweek CI 的 config.php 和 session 库。
CI config.php: 在 base_url 配置之前添加给定代码。
session_start();
CI Session.php:在 session 库第 142 行的 session_start() 之前添加了 @。
@session_start();
关于php - 在 Core Php 和 CodeIgniter 之间共享 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40782372/
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是
在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee
我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
使用rails4,ruby2。我在rails配置中为我的cookiesession设置了30分钟的超时时间。问题是,如果我转到表单,让session超时,然后提交表单,我会收到此ActionController::InvalidAuthenticityToken错误。如何在Rails中优雅地处理这个错误?比如说,重定向到登录屏幕? 最佳答案 在您的ApplicationController:rescue_fromActionController::InvalidAuthenticityTokendoredirect_tosome_p
我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于
由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A
在许多ruby类之间共享记录器实例的最佳(正确)方法是什么?现在我只是将记录器创建为全局$logger=Logger.new变量,但我觉得有更好的方法可以在不使用全局变量的情况下执行此操作。如果我有以下内容:moduleFooclassAclassBclassC...classZend在所有类之间共享记录器实例的最佳方式是什么?我是以某种方式在Foo模块中声明/创建记录器还是只是使用全局$logger没问题? 最佳答案 在模块中添加常量:moduleFooLogger=Logger.newclassAclassBclassC..
我正在尝试使用Sinatra中的重定向和session在网站周围传递一些数据。这是一个简化的示例,使用PrettyPrint进行调试:require'pp'require'rubygems'require'sinatra'enable:sessionsget'/'dosession[:foo]='12345'puts'session1'ppsessionredirectto('/redir')endget'/redir'doputs'session2'ppsession'helloworld'end查看Thin的输出,我看到:>>Listeningon0.0.0.0:4567,CTRL