我想在数据库中保存一些表单数据。 表格:
echo '<form action="post" method="'.$_SERVER['PHP_SELF'].'">
<input type="text" name="first_name" value="htmlspecialchars($_POST['first_name']).' />
<input type="text" name="last_name" value="htmlspecialchars($_POST['last_name']).' />
<input type="submit" name="submit" />
</form>';
如果某些输入为空,则会刷新到同一页面并在顶部显示错误,表示填写输入。
问题是当我只填充一个输入值aaa“aaa而另一个保存为空时,比我提交的。我得到错误说填充另一个输入和填充值从aaa”aaa变为aaa&amp; QUOT; AAA
因此,当我将数据保存在数据库中时,某些数据会被转义而某些数据不会被转义。
我想使用htmlspecialchars_decode,但是如果我输入aaa&amp; quot; aaa它会将它转换为aaa“aaa,当我想要保存它时(aaa&amp; quot; aaa)。
我能做什么?
谢谢!
答案 0 :(得分:0)
我建议您使用Javascript Validation检查每个字段,然后如果一切正常则将其保存在数据库中。
答案 1 :(得分:0)
如果您需要验证用户数据,当然您需要在前端(javascript)和后端(出于安全原因)进行验证。
无论如何,首先我看到你的PHP代码中的错误。没有一些适当的连接符号和引号。正确的代码应该是:
echo '<form action="post" method="'.$_SERVER['PHP_SELF'].'">
<input type="text" name="first_name" value="'.htmlspecialchars($_POST['first_name']).'" />
<input type="text" name="last_name" value="'.htmlspecialchars($_POST['last_name']).'" />
<input type="submit" name="submit" />
</form>';
如果您确实要显示由用户插入的配额标记,则可以使用html_entity_decode($your_variable_here);
$orig = "I'll \"walk\" the <b>dog</b> now";
$a = htmlspecialchars($orig);
$b = html_entity_decode($a);
echo $a; // I'll "walk" the <b>dog</b> now
echo $b; // I'll "walk" the <b>dog</b> now
更多信息here