php7.3升级后CI框架session失效session不能读取的问题
框架ci3.0.2,php服务器从5升级到7.x后发现session失效了
ci无法设置session的问题
根本原因在,libraries/Session/Session.php 中 133行:
// Sanitize the cookie, because apparently PHP doesn't do that for userspace handlers
if (isset($_COOKIE[$this->_config['cookie_name']])
&& (
! is_string($_COOKIE[$this->_config['cookie_name']])
OR ! preg_match('/^[0-9a-z]{10,40}$/', $_COOKIE[$this->_config['cookie_name']])
)
)
{
unset($_COOKIE[$this->_config['cookie_name']]);
}
session_start();
如果sessionid的长度不是40的话,每次执行都会 unset($_COOKIE[ci_session])。而session_id取值范围和长度在php7中变了(默认是26)
session.sid_length = 26
解决办法:
将上面的/^[0-9a-f]{40}$/, 改成 /^[0-9a-z]{10,40}$/
php7.0升级到php7.1
PHP7 ci框架session存文件,登录的时候session不能读取
config.php配置
$config['sess_driver'] = 'files';//以文件存储session
$config['sess_cookie_name'] = 'ci_sessi'
分享到:
相关推荐
综上所述,实现"session失效重新登录后,返回之前页面,并保留表单数据"的功能,需要综合运用Session管理、登录逻辑设计、页面跳转技术、数据持久化策略以及安全性措施,确保用户体验的同时保障系统的安全性。
当Session失效时,通常会导致用户被重定向到登录页面,以便重新验证其身份。下面将详细讨论EXT Session失效以及如何实现页面跳转至登录页。 首先,EXT是一个JavaScript库,用于构建交互式的、数据驱动的Web应用。它...
一种方法是使用Cookie来持久化Session ID,并在每次请求时用`session_id()`函数设置: ```php session_start(); $_SESSION['count']; // 注册Session变量 if (isset($PHPSESSID)) { session_id($PHPSESSID); } $_...
标题“session失效”提示我们,这个话题将围绕用户在使用应用过程中Session突然丢失或无法正常工作的问题展开。描述中的博文链接指向了一篇关于该主题的博客文章,尽管具体内容没有给出,但我们可以推测博主可能讨论...
Session失效是指当一个Session因过期或被主动销毁而无法继续使用的情况。在实际应用中,Session的生命周期可以通过设置最大非活动间隔(Max Inactive Interval)来控制。该参数定义了从最后操作Session到Session自动...
最近由于一个项目,模块切换为ajax请求数据,当Session失效后,ajax请求后没有返回值,只有响应的html:<html>[removed]window.open(‘http://192.168.0.118:8080/welcomeAction/loginUI.do’,’_top’);...
经了解,他对同一个项目使用tomcat部署了两个环境,一个在开发服务器上,一个在他本机,两个环境代码配置完全相同。两边通过同一个nginx进行反向代理,nginx配置大致如下, location /health/ { proxy_pass ...
CI框架的Session管理是其核心功能之一,它提供了一种高效且灵活的方式来处理用户会话。不同于PHP原生的session机制,CI的Session系统是基于cookie的,但可以通过配置选项将其存储在数据库中,增强了数据的安全性和可...
初步分析:服务器端日志中显示 sessionId 一直在变化,每次请求都会产生一个全新的 sessionId。显然这是导致无法登录的直接唯一原因,如果解决这个问题则可正常登录。 深入分析:出于隐私安全的考虑,IE 会丢失 ...
当用户访问新页面时,浏览器将Session ID发送回服务器,服务器根据ID找到对应的数据并恢复用户的会话状态。 2. **开启Session**: 在PHP中,使用`session_start()`函数来开启一个新的Session。这会在用户的浏览器...
如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建session,并把redis中此session的相关数据赋值给新建的session,最后保存sessionId...
本文介绍了设置Session失效的几种方法,包括在主页面或公共页面中设置Session失效时间、在项目的web.xml中设置Session失效时间、直接在应用服务器中设置Session失效时间等。此外,还介绍了如何在Session失效后执行一...
2. 随机化SESSION ID:每次用户登录后生成新的SESSION ID,增加猜测难度。 3. 设置SESSION cookie为HttpOnly:阻止JavaScript脚本访问SESSION ID,减少通过XSS攻击获取SESSION的可能性。 4. 设置SESSION cookie为...
之后,每次请求时,客户端都会将这个SessionID回传给服务器,以便服务器识别并检索相应Session中的数据。 HTTPHandler是ASP.NET框架中处理HTTP请求的一种组件。它提供了对HTTP请求的低级控制,可以用来实现自定义的...
这是因为后者可能会被浏览器解释为新请求,从而导致SessionID的变化。 5. **Frameset的使用与注意事项:** 使用Frameset时,每个框架都视为独立的文档,因此需要在每个框架的页面加载事件中添加响应代码,如`page_...
客户端在后续的每次请求中都会携带这个Session ID,服务器根据ID找到对应的Session,从而获取或更新用户的登录状态。 以下是一个简单的使用Session实现用户登录的步骤: 1. **创建登录页面**:创建一个HTML或JSP...
基于php7.3的dockerfile DOCKERFILE 。新增了常用的扩展。 # 官方版本默认安装扩展: # Core, ctype, curl # date, dom # fileinfo, filter, ftp # hash # iconv # json # libxml # mbstring, mysqlnd # openssl # ...
6. **管理Session ID**:类可能还提供了管理Session ID的功能,如`regenerate_id`方法,用于在特定条件下生成新的Session ID,防止Session Fixation攻击。 7. **安全措施**:为了提高安全性,类可能包含了防止...
- **定期更新 Session ID**:通过定期重新生成 Session ID 可以降低会话劫持的风险。 - **限制 Session 有效期**:设定合理的 Session 超时时间,确保长时间未操作的用户会话自动结束。 - **Cookie 的安全属性**:...
当用户成功登录后,将用户ID或其他标识符存入Session,然后在后续请求中检查该Session变量是否存在,以判断用户是否已登录。 ```php <?php if (password_verify($enteredPassword, $user['password'])) { $_...