如何创建已设置输入元素但必须保持固定的表单?
How to create a form where input elements are already set but one must remain fixed?
我正在从 MVC 应用程序中的另一个文件中输入我的表单预设数据值。数据集属性之一,即 ID,将保持固定且无法更新。只能更新姓名、电话号码等。我的问题是我需要设置一些我可以提交的东西,就像其他预设数据一样;然而,与其他预设数据不同,我不能将其放入表格中,因为用户可能会更改它。
<form action="crud.ctrl.php?act=update" method="post">
<label>ID: <?=$data1["id"]?> <br /><br>
<label>First Name:</label> <br><input type="text" name="fnameUP" id="fnameUP" value="<?= $data1["fname"] ?>"> <br />
<label>Last Name:</label> <br><input type="text" name="lnameUP" value="<?= $data1["lname"] ?>""> <br />
<label>Phone:</label> <br><input type="text" name="phoneUP" value="<?= $data1["phone"] ?>""> <br />
<label>Email:</label> <br><input type="text" name="emailUP" value="<?= $data1["email"] ?>""> <br />
<label>Location:</label> <br><input type="text" name="locationUP" value="<?= $data1["location"] ?>""> <br />
<label>MC:</label> <br><input type="text" name="mcUP" value="<?= $data1["mc"] ?>""> <br />
<label>Position:</label> <br><input type="text" name="posUP" value="<?= $data1["pos"] ?>""> <br />
<label>Department:</label> <br><input type="text" name="deptUP" value="<?= $data1["dept"] ?>""> <br />
<input type="submit">
</form>
解决此问题的一种方法是在原始 table 中添加另一个唯一列。例如,您可以 'salt' ID 并对其进行哈希处理,或者使用其他形式创建足够长的字符串,以防止用户猜测任何现有的 "IDs".
例如,然后将该列作为隐藏输入字段包含在表单中
<input type="hidden" name="custom_id" value="<?=$data1["custom_id"]?>">
这样即使用户确实弄乱了 ID,他也很少有机会能够更改另一条记录。您的散列越复杂,机会就越小。
如果这不够安全,我的下一个想法是在数据库中有另一个 column/table,在检索将显示在表单中的数据时生成哈希,并且只允许更新记录具有该值集。这样,只有 "editable" 行是有人在过去 X 分钟内请求编辑表单的行。
我正在从 MVC 应用程序中的另一个文件中输入我的表单预设数据值。数据集属性之一,即 ID,将保持固定且无法更新。只能更新姓名、电话号码等。我的问题是我需要设置一些我可以提交的东西,就像其他预设数据一样;然而,与其他预设数据不同,我不能将其放入表格中,因为用户可能会更改它。
<form action="crud.ctrl.php?act=update" method="post">
<label>ID: <?=$data1["id"]?> <br /><br>
<label>First Name:</label> <br><input type="text" name="fnameUP" id="fnameUP" value="<?= $data1["fname"] ?>"> <br />
<label>Last Name:</label> <br><input type="text" name="lnameUP" value="<?= $data1["lname"] ?>""> <br />
<label>Phone:</label> <br><input type="text" name="phoneUP" value="<?= $data1["phone"] ?>""> <br />
<label>Email:</label> <br><input type="text" name="emailUP" value="<?= $data1["email"] ?>""> <br />
<label>Location:</label> <br><input type="text" name="locationUP" value="<?= $data1["location"] ?>""> <br />
<label>MC:</label> <br><input type="text" name="mcUP" value="<?= $data1["mc"] ?>""> <br />
<label>Position:</label> <br><input type="text" name="posUP" value="<?= $data1["pos"] ?>""> <br />
<label>Department:</label> <br><input type="text" name="deptUP" value="<?= $data1["dept"] ?>""> <br />
<input type="submit">
</form>
解决此问题的一种方法是在原始 table 中添加另一个唯一列。例如,您可以 'salt' ID 并对其进行哈希处理,或者使用其他形式创建足够长的字符串,以防止用户猜测任何现有的 "IDs".
例如,然后将该列作为隐藏输入字段包含在表单中
<input type="hidden" name="custom_id" value="<?=$data1["custom_id"]?>">
这样即使用户确实弄乱了 ID,他也很少有机会能够更改另一条记录。您的散列越复杂,机会就越小。
如果这不够安全,我的下一个想法是在数据库中有另一个 column/table,在检索将显示在表单中的数据时生成哈希,并且只允许更新记录具有该值集。这样,只有 "editable" 行是有人在过去 X 分钟内请求编辑表单的行。