恼人的持久$ _GET变量

时间:2013-03-21 21:28:29

标签: php

我的网页中有<a href>,其中包含以下链接:

<a href=\"?remove=0\">Remove</a>

哪个好。然后我通过以下方式引用它:

if(isset($_REQUEST['remove']))

检查是否已设置,然后执行相对操作(从数组中删除值)。

但是,当我在我的php页面中单击另一个表单(设置为method='POST')时,$_GET值保留在URL栏中,因此由于某种原因再次传递 < / strong>并且正在破坏我的计划。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

听起来你错过了表单中的action=道具。如果您没有指定表单应发布到的位置,则会将其发布到当前URL,包括查询字符串。

发布到当前网址:

<form method="post">

您指定的网址:

<form method="post" action="mypage.php">

答案 1 :(得分:0)

删除听起来像危险的操作。它不应该响应GET请求而执行:用户可能会重新加载页面,意外删除某些内容,或者搜索机器人可能会关注该链接并删除该内容(当然,假设它具有权限)。现在甚至浏览器都会进行预取 - 如果其中一个预取链接是删除链接会发生什么?

因此,检查

是明智的
if (isset($_POST['remove']))

并将链接转换为删除表单。