我想在数据库中保存一些表单数据。形式:
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";啊。
因此,当我在数据库中保存数据时,有些数据是转义的,有些数据不是。
我想使用htmlspecialchars_decode,但如果我要键入aaa";aaa当我想按原样保存时,它会将其转换为aaa"aaa"(aaa&aaa)。
我能做什么?
谢谢!
我建议您使用Javascript验证来检查每个字段,如果一切正常,则将其保存在数据库中。
如果您需要对用户数据进行验证,那么您当然需要在前端(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更多信息请点击此处