只读表单字段

时间:2014-12-19 03:51:49

标签: php wordpress forms

我正在尝试使用插件在wordpress中设置自定义表单,并按照以下说明进行教程:http://code.tutsplus.com/tutorials/creating-a-custom-wordpress-registration-form-plugin--cms-20968。我不打算创建一个“注册用户”插件,我只是以它为例在wordpress中创建自定义表单。对于我的问题,我不认为使用wordpress是相关的,所以我在一般部分中发布这个问题。

现在我想处理一些安全问题。

我有一个这个表单的输入字段,它从我的数据库中取值“name”并将其显示给表单字段中的用户。然后将此“名称”再次发送到数据库。我不希望用户能够修改此字段。我在表单中使用了“readonly”,但是任何人都可以编辑页面的来源并编辑“名称”,所以这不是那么安全。

如何阻止访问者编辑此字段?

如有必要,我也可以使用JavaScript。

2 个答案:

答案 0 :(得分:1)

我希望它可以帮助您停止传递错误的编辑值

在回显你的表单时,使用hash_mac

创建这样的隐藏输入....
$secret="mysecretstring":
$string =strtolower($name_retrived_from_db);
$hmac = hash_hmac("sha1", $string, $secret);

echo '<input type="hidden" name="foo" value="'.$hmac.'">';
echo '<input type="text" name="given_name" value="'.$name_retrived_from_db.'" readonly>';

然后在接收端,用$ hmac验证给定的名称

 $secret="mysecretstring":
$string =strtolower($_POST['given_name']);
$hmac = hash_hmac("sha1", $string, $secret);
$foo = $_POST['foo'];

如果$ hamac和$ foo匹配则没有人会编辑你的输入。让你的“mysecretstring”无法猜测。

  if ($hmac == $foo ) {
// Your read only input has not been edited
} else {
//Input  Edited
}

答案 1 :(得分:-1)

首先,你要保留它,然后添加一个额外的隐藏输入字段,并在将它提供给readonly字段时为其赋值,然后在提交表单时获取隐藏输入字段的值我希望它会有所帮助。