在托管服务器上取消设置$_SESSION变量时出现问题


Having trouble unsetting $_SESSION variables on hosted server

因此,让我在前言中说,我不是最有经验的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的工作原理,我可能错过了一些非常简单的东西,所以任何建议都很好!感谢

所以我想明白了。不确定为什么这样做有效,但现在开始了。

上面的代码是在索引页的最开始使用的,其思想是,每当用户点击索引页时,它都会擦除$_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');
?>

同样,不确定这是如何修复的,但仍然很高兴它能正常工作。