它是一个不好的做法,混合GET和POST? (注意,这是在PHP)
如
<form action="delete.php?l=en&r=homepage" method="post">
<!-- post fields here -->
</form>
它是一个不好的做法,混合GET和POST? (注意,这是在PHP)
如
<form action="delete.php?l=en&r=homepage" method="post">
<!-- post fields here -->
</form>
事实上,这将发送POST请求向服务器发出请求,所以在技术上你是不是将两者混合在一起:您正在使用POST使用URL参数。 没有什么根本的错,只要你不使用你的网址参数应在形式隐藏字段。
有简单的规则:你不变的东西,不改变服务器使用GET(可能带有URL参数),然后发布该修改服务器的事情。 如果您的网址参数包含的东西你想删除的ID,那么这将是不好的做法。
编辑,年后
有人问我为源,所以这里是HTTP的非常规范的相关部分
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
该公约已经确定,GET和HEAD方式不应该采取行动以外检索意义。 这些方法应该被认为是“安全”。 这允许用户代理代表其他方法,如POST,PUT和DELETE,以特殊的方式, 让用户知道的是正在请求操作可能是不安全的事实 。
你去那里,GET应该不会改变任何东西,POST是更改服务器(不安全的操作)的事情。 我应该能够调用get任意数量的时间。 它比幂等多:这是应该(尽可能)无副作用! 用GET请求甚至可能不会到达服务器,如果缓存是参与 。
所以是:你有一个表单,要知道,如果你使用GET或POST? 然后,更改服务器=> POST,不改变服务器=> GET。 而且,由于一个URL可以与任何动词(GET或POST),不要把该更改服务器的URL中的数据,因为有人可能会将该网址复制,做一个GET和改变你的服务器没有你知道访问。 试想一下,如果有人复制的Facebook网址,然后10万人开始删除随机的东西会发生什么? 不好。 最近的框架(节点,红宝石)反对,更好地绝缘,但不是基本的PHP,所以它的拇指该语言的一个很好的规则。
它仍然是一个POST,你只是其中的URL查询字符串。 我看不出这是一个问题。 这可能是清洁剂,通过使用隐藏的输入字段,包括在后数据的变量。 此外,在服务器上,你可能不希望升你的文章数据值(语言?)。 如果它总是在查询字符串,可以在相同的代码,你在其他地方确定的语言,而不是POST请求的特殊情况。
不,这是好的。 我做的正是这个对我公司的网站,例如用户管理页面上。 正常的网址是:
/admin/user?name=jkugelman
然后删除帖子发到这个相同的页面,用户,除了我发布一个变量,而不是做一个GET,因为删除是一个有状态的行动,应该用POST来完成。 它看起来是这样的:
<!-- Post back to self -->
<form action="/admin/user?name=jkugelman">
<input type="submit" name="delete" value="Delete"
onchange="return confirm('Are you sure?')" />
</form>