我试图找到一种有效的方法来阻止用户更改表单中的数据属性。我需要它,因为我在进行查询时使用这些值,如果用户更改了数据ID属性并且查询将删除完全不同的记录,那就不太好了。
我有一个名为'groups'的表,我正在将其中的组列为HTML。数据属性保存组ID,用户可以通过UI删除组。到目前为止我所做的是以下内容:
我没有在html中显示实际的组ID,而是生成一个随机字符串(哈希值的子字符串),这就是我在data属性中作为值插入的内容。然后,我创建一个会话变量,其中包含一个数组,其中我存储了所有组ID和显示的随机字符串:随机字符串是键,实际ID是值。稍后,当发送AJAX调用时,我检查数组键中是否存在数据属性值,如果不存在,则在随机字符串被修改时拒绝该请求。否则密钥存在,我得到与之关联的值。
到目前为止,这是代码:
<?php
$groups = $user->getGroupsByAuthor();
foreach($groups as $group):
$group_id = generateGroupId();
$_SESSION['listed-group-ids'][$group_id] = $group['id'];
?>
<li>
<div class="group-image" style="background-image: url('uploads/<?php echo $group['image'] ?>')"></div>
<h4><?php echo $group['name'] ?></h4>
<small><?php echo $group['description'] ?></small>
<span class="btn-delete-group" data-group-id="<?php echo $group_id ?>"><i class="ion-close"></i></span>
</li>
<?php endforeach; ?>
在解析器文件中,我检查密钥是否存在:
if( empty($_SESSION['listed-group-ids'][$_POST['group-id']]) ){
exit('Do not try to modify values!');
}
delete the record from database...
这可能是一种好方法还是效率不高?你做过的任何其他经历或方法? 提前谢谢。