我使用以下命令将已记录的URI保存到SESSION中:
$_SESSION['uri'] = $_SERVER["REQUEST_URI"];
现在我有一个将要提交的表单,如果没有条目,页面应该重新加载GET参数中的信息。所以我通常想通过简单地使用str_replace('&error=empty', '', $_SESSION['uri']);
检查存储的URI是否已经包含带有GET参数的String,但似乎这个函数不起作用,我不知道为什么。
以下是提交表单的原始代码示例:
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');
}
标头功能是必要的,因为如果表单将被提交并且没有条目,则所有GET参数都将丢失。这就是为什么我必须存储原始URI并使用header-function来保存信息。上面代码的问题是,在提交表单时没有条目时,它会再次添加&error=empty
。我认为这将是检查URI中是否已存在该字符串并使用str_replace()
替换它的最佳解决方案
那么我做错了什么?
提前致谢。
答案 0 :(得分:1)
$_SESSION['uri'] = str_replace('&error=empty', '', $_SESSION['uri']);
我认为您错过了将str_replace()
的返回值分配给您的会话变量。 str_replace()
不会直接修改您通过参数传递的变量,它会根据函数调用返回一个新值。