通过html表单触发操作(数据库搜索/db更改)的好方法是什么


What would be a good way to trigger an action (db search / db changes) by an html form?

我通过html表单触发了两种不同类型的操作:

  1. 数据库搜索(例如searchUser)
  2. 数据库更改(例如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。

  1. URL有一个最大长度,你可能会碰到很多参数(几千个字符)
  2. 使用javascript(jQuery等)更容易操作列表输入字段
  3. 普通用户看不到所有那些难看的URL

请记住:隐藏字段是隐藏的,但访问它们只需要几秒钟的时间。因此,永远不要相信用户数据,并始终逃避您的数据。"因为我不希望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
    }