从 $_SERVER['HTTP_REFERER'] 之前的 URL 中删除查询


Remove query from URL before $_SERVER['HTTP_REFERER']

在表单提交成功或失败时,我使用以下方法。生成的网址显示为http://example.com/directory/?success=false

我遇到的问题是,当用户在更正验证错误后尝试再次提交表单时,生成的 url 变得http://example.com/directory/?success=false?success=true - 我需要它首先清除任何查询字符串。我该怎么做?

.PHP

# Redirect user to error message
 header('Location: ' . $_SERVER['HTTP_REFERER'] . '?success=false');
}
您可以使用

explode()来断开$_SERVER['HTTP_REFERRER']字符串以摆脱现有的$_GET参数:

$bits = explode('?',$_SERVER['HTTP_REFERRER']);
$redirect = $bits[0];
# Redirect user to error message
header('Location: ' . $redirect . '?success=true');

像这样的事情怎么样:

$i = strchr($_SERVER['HTTP_REFERER'], "?");
$address = substr($_SERVER['HTTP_REFERER'], 0, $i);
header('Location: ' . $address . '?success=false');