会话变量的值正在取消设置,即“-blank-”没有取消设置它

Posted

技术标签:

【中文标题】会话变量的值正在取消设置,即“-blank-”没有取消设置它【英文标题】:values of sessions vaiables are getting unset i.e. "-blank-" without unsseting it 【发布时间】:2012-12-02 12:01:45 【问题描述】:
include('conection.php');
$db=new Database();
session_start();
echo "<div style=' background-color:white; border:solid white'>".$_SESSION['uid']."</div>";
if(!(isset(**$_SESSION['uid']**)))

    header('location:index.php');

if(isset($_REQUEST['admin']))

    if(base64_decode($_REQUEST['admin'])!=='over779656')
    
        header('location:index.php');
    

$r=explode(" ",base64_decode($_REQUEST['final']));



   **$_SESSION['uid']** 

这个变量的值在超过 2 小时或更长时间后被取消设置,为什么会这样,即使我没有取消设置任何变量,是否有任何服务器问题或任何浏览器问题

【问题讨论】:

是不是因为session过期了?会话超时? 修改你的ini文件并重启你的服务器,同时在header之后使用exit 如果您的 php.ini 位于实时服务器上,并且有许多项目使用相同的 ini 文件,或者您无权访问它。试试我的答案。 请阅读this important information,这可能会影响您在 SO 上找到答案的能力。 【参考方案1】:

在你的php.ini中检查session.gc_maxlifetime并增加那里的时间

【讨论】:

是1440,表示多少分钟 实际上该代码已上传到服务器上,其中 shpuld 检查服务器上的 php.ini 在 php 文件中使用 phpinfo() 并找出 php.ini 的位置 在服务器上做php -i | grep php.ini 会向你展示希望【参考方案2】:

不要在 php.ini 中更改它,而是尝试在运行时更改超时。

ini_set('session.gc_maxlifetime', 5*60*60); // 5 hours

编辑

注意:在session_start()之前使用此代码

【讨论】:

不,这根本不起作用...任何其他替代选项【参考方案3】:

如果您无权访问 php.ini 和/或不想重新启动服务器,您可以尝试以下操作。查看http://php.net/ini_get 的 session.gc_maxlifetime 设置,如下所示:

    ini_get('session.gc_maxlifetime')

你可以用http://php.net/ini_set这样设置它

    ini_set('session.gc_maxlifetime', 3600*24);

但请注意内存问题和长时间运行的脚本。也像另一个答案所说:在 session_start() 之前执行。

【讨论】:

以上是关于会话变量的值正在取消设置,即“-blank-”没有取消设置它的主要内容,如果未能解决你的问题,请参考以下文章

取消设置具有相似名称的所有会话变量

取消设置 php 会话变量

每当我重新加载页面时,仍会设置取消设置 PHP 会话变量 [重复]

为啥不会/如何对 PHP 会话变量进行排序而不是取消设置

在 Yii2 中取消设置会话变量时遇到问题

如何取消设置 jquery 变量的值?