我有一个已购买商品的列表,就像在易趣或任何其他允许用户反馈的网站上一样,我希望用户发送反馈。但我不确定如何确保一切。
以下是一个简单的例子:
<?php
if(isset($_POST['like'])) {
//this is where i need the item id. But how do I make sure that users don't mess with the form and change the item id?
}
?>
<ul>
<li id="1">
Item title
<form action="" method="post"><button type="submit" name="like">Like</button></form>
</li>
<li id="2">
Another title
<form action="" method="post"><button type="submit" name="like">Like</button></form>
</li>
</ul>
即使我使用jQuery来获取li id,有人仍然可以编辑id并投票给其他一些标题。
我还想添加一个隐藏的输入,但这也是可编辑的。
我该如何解决这个问题?
答案 0 :(得分:0)
但是如何确保用户不会弄乱表单并更改商品ID?
你不是。他们可以更改ID。
假设这是真的并且它在您的控制范围之外,并且下一个逻辑步骤变为:验证服务器端代码中的操作。
允许用户使用他们想要的任何ID发布表单。当然,您可以在JavaScript或隐藏的表单字段中将该ID预填充到您期望的ID 中。不要强迫用户输入ID或类似的任何东西。但只需使用您通常用于此表单的任何内容。
然后,在服务器端代码中,处理表单帖子时,验证登录用户授权以提交/修改该ID的数据。例如,检查用户是否实际购买了他们正在审核的产品。但是,您希望在逻辑上验证用户是否可以执行他们正在执行的操作,在接收表单发布时在服务器端代码中执行验证,而不是在生成表单时发布。
如果用户未经授权(他们更改了ID),请按照您的喜好处理。错误页面,警告消息,忽略它,它取决于您。