我通过html表单触发了两种不同类型的操作:
- 数据库搜索(例如searchUser)
- 数据库更改(例如createNewUser、updateUserData)
现在有不同的方式来触发的动作
2.1-将操作参数放入查询字符串
<form action="index.php?page_id=xx&user_id=yy&action=updateUserData" method="post">
<input ... />
</form>
2.2-创建一个名为动作的输入字段
<form action="index.php?page_id=xx&user_id=yy" method="post">
<input name="action" value="updateUserData" type="hidden" />
<input ... />
</form>
(对于搜索表单,这两种不同的方式无关紧要,因为在那里我使用method="get")
现在我的问题是:什么会更好——2.1或2.2
我倾向于2.2,因为我不希望操作由URL(例如书签、链接)触发
因为在这两种情况下都使用method=post,所以使用版本2。
- URL有一个最大长度,你可能会碰到很多参数(几千个字符)
- 使用javascript(jQuery等)更容易操作列表输入字段
- 普通用户看不到所有那些难看的URL
请记住:隐藏字段是隐藏的,但访问它们只需要几秒钟的时间。因此,永远不要相信用户数据,并始终逃避您的数据。"因为我不希望URL触发操作"总是假设所有用户都是邪恶的。如果这个链接会造成损坏,那么表单也会造成损坏。请使用一些身份验证。
2.2会更好。
if(isset($_POST['action'])){ //If form has been submitted
$userid=$_POST['userid'];
//Rest of code to add user
}else{
//Form not submitted
}