我的注册后端php将用户重定向到前端,如下所示:
header('Location:registrationView.php?warning='.urlencode($error));
在前端我回显我的变量,它告诉用户完全填写注册表格,如下所示:
if ($_GET)
{
echo htmlspecialchars($_GET["warning"]);
}
如果用户决定手动将现在看起来像http://localhost/registrationView.php?warning=Fill+complete+form
的URL更改为以下内容,那么就会使用上面的get方法:
http://localhost/registrationView.php?blahblah
或
http://localhost/registrationView.php?warning=blahblah
他当然要么出错,要么将网站上显示的文字改为“blahblah”!
有没有办法阻止对URL的这种操作,还是有更好的方法从后端返回警告消息?
答案 0 :(得分:2)
我喜欢使用session代替错误。
如果要返回错误,我通常会做类似的事情。
$_SESSION["error"] = "my error text.";
我经常尝试在他们做某事之后将他们发送到成功页面。
在成功页面的顶部,我放了这样的东西,将它们重定向回原始页面。
if (!empty($_SESSION["error"])){
header('Location: original_page.php');
}
然后,在原始页面中,我放了这样的东西。
if (!empty($_SESSION["error"])){
echo $_SESSION["error"];
$_SESSION["error"] = null ;
unset($_SESSION["error"]);
}
这样他们就会显示错误,如果他们开始尝试输入随机内容,就不会执行任何代码。
我从不使用$ _GET来处理任何可能被操纵的东西。