繁体   English   中英

如何将带引号的字符串正确保存到数据库以进一步显示?

[英]How to properly save string with quotation marks to database for further displaying?

我想在数据库上保存一些表单数据。 表格:

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” 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 &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now
echo $b; // I'll "walk" the <b>dog</b> now

更多信息在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM