str_replace 从 $_SESSION 中删除字符串

str_replace to remove string from $_SESSION

我使用以下方法将请求的 URI 保存到 SESSION 中:

$_SESSION['uri'] = $_SERVER["REQUEST_URI"];

现在我有一个要提交的表单,如果没有输入,页面应该使用 GET-parameters 中的信息重新加载。所以我通常想通过简单地使用 str_replace('&error=empty', '', $_SESSION['uri']); 来检查存储的 URI 是否已经包含带有 GET-parameters 的字符串,但似乎这个功能不起作用,我不知道为什么。

这是提交表单的原始代码中的示例:

if (isset($_POST['send']) === true && empty($_POST['suggestion'])) {
    if ( isset($_GET['error']) === true ) {
        header ('Location: '.$_SESSION['uri'].'withoutstringerror');
    } else {    
        header ('Location: '.$_SESSION['uri'].'&error=empty');
    }

header-function 是必需的,因为如果提交表单但没有条目,所有 GET-parameters 都将丢失。这就是为什么我必须存储原始 URI 并使用 header-function 来保留信息的原因。上面代码的问题是,当提交表单并且没有条目时,它会再次添加 &error=empty 。我认为最好的解决方案是检查 URI 中是否已经存在该字符串并使用 str_replace()

替换它

那我做错了什么?

提前致谢。

$_SESSION['uri'] = str_replace('&error=empty', '', $_SESSION['uri']);

我认为您只是错过了将 str_replace() 中的 return 值分配给您的会话变量。 str_replace() 不会直接修改您通过参数传入的变量,它 return 是一个新值,基于函数调用。