按下按钮时:
<form action="index.php" method="get">
<input type="hidden" name="act" value="run">
<input type="submit" value="Truncate map">
</form>
if (!empty($_GET['act'])) {
mysql_query("TRUNCATE TABLE mapinfo");
}
它将我重定向到index.php?act=run
我想摆脱它,所以添加:header("Refresh: 0; url=$page");
:
if (!empty($_GET['act'])) {
mysql_query("TRUNCATE TABLE mapinfo");
$page = $_SERVER['PHP_SELF'];
header("Refresh: 0; url=$page");
}
但首先加载index.php?act=run
,而不是将浏览器重定向到index.php
,这样可以刷新2页。
如何以漂亮的方式做到这一点?
答案 0 :(得分:1)
而不是使用刷新标头,请使用
header("Location: $page");
答案 1 :(得分:1)
除此之外,使用此脚本存在一些主要安全问题,为什么不使用以下内容:
<form action="index.php" method="post">
<input type="hidden" name="act" value="run">
<input type="submit" value="Truncate map">
</form>
if (!empty($_POST['act'])) {
mysql_query("TRUNCATE TABLE mapinfo");
}
这将执行 POST 请求,而不是 GET 请求。但请注意,您仍应在POST请求后重定向用户(Post/Redirect/Get)。仍然,请求参数被隐藏。
注意不要在生产环境中使用这些脚本,它们远非安全!
答案 2 :(得分:-1)
这真是最好的方式。你可以取消设置$_GET['act']
变量,这样它就不会影响控制流的其余部分,或者像正常一样呈现页面的其余部分(即你不需要重定向,只需渲染页面的其余部分)好像从未设置$_GET['act']
变量。)