无法在托管服务器上取消设置$ _SESSION变量

时间:2015-04-09 00:35:03

标签: php session

所以,让我先说一下我不是最有经验的php开发人员,并且对服务器没有最深刻的理解......但是我很难过并且不确定要使用什么,所以我愿意任何建议。

所以我创建了一个网站,您可以在其中浏览一系列页面,并在每个页面上设置不同的$_SESSION变量,直到最后所有$_SESSION变量用于查询数据库。此外,当用户随时返回索引页面时,我需要取消设置所有$_SESSION变量,以便不影响该过程。此外,此过程在我的localhost(我使用wampserver)上完美运行,但由于某种原因,我似乎无法取消托管服务器上的变量。

在索引页面上,我正在设置session_save_path(),然后在线找到此进程以取消设置并删除它,然后创建一个新会话。

<?php
    ini_set('session.save_path', '/home3/www/public_html/test/session');
    session_name();
    session_start();
    session_unset();
    session_destroy();
    session_write_close();
    setcookie(session_name(),'',0,'/');
    session_regenerate_id(true);
?>

这个过程的问题是我的$_SESSION个变量都没有设置在下一页之后,我不明白为什么......

我也尝试过这个没有setcookie()session_regenerate_id()的相同过程,它允许我在所有页面之间传递$_SESSION个变量,但是当我进入时它们不再是未设置的返回索引页面..

我不是最有经验的人,我不完全理解$_SESSION的工作方式,我可能错过了一些相当简单的事情,所以任何建议都会很棒!感谢

1 个答案:

答案 0 :(得分:0)

所以我明白了。不知道为什么会这样,但是在这里。

上面的代码是在索引页面的最开头使用的,这个想法是每次用户点击索引页面时都会擦除$_SESSION

采取这个过程的原因是什么?

<?php
   ini_set('session.save_path', '/home3/www/public_html/test/session');
   session_name();
   session_start();
   session_unset();
   session_destroy();
   session_write_close();
   setcookie(session_name(),'',0,'/');
   session_regenerate_id(true);
?>

并将其放入自己的脚本中,而不是在返回索引页面之前调用它。

<?php
    session_start();
    session_unset();
    session_destroy();
    header('Location: index.php');
?>

同样,不确定这是如何修复它的,但仍然很好,让它工作。