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

Php 如何正确地将带引号的字符串保存到数据库中以便进一步显示?,php,html,database,forms,security,Php,Html,Database,Forms,Security,我想在数据库中保存一些表单数据。 表格: 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($_POS

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

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>';
如果某个输入为空,它会刷新到同一页面,并在顶部显示错误,即填充输入

问题是,当我只将一个输入填充为aaaaaa值,另一个保存为空时,我就提交了。然后我得到一个错误,即填充另一个输入,填充值从AAAAA变为AAAAA

因为当我在数据库中保存数据时,一些数据被转义,而一些数据则没有

我想使用htmlspecialchars_解码,但如果我输入AAAAA,当我想将其另存为AAAAA时,它会将其转换为AAAAA

我能做什么


谢谢大家!

我建议您使用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

$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
更多信息

@AbdulJabbarWebBestov,但你不能用javascript验证一切,例如gdpicture。一定是在客户端解决它的方法,我就是找不到!你说的好照片是什么意思?你可以用javascript验证一切。也许我不完全理解你。但我的观点是,您可以通过htmlspecialchars保存表单中的任何数据,然后通过html_entity_decode从数据库中获取数据。所以,如果用户输入了他会得到的就业信息,如果他输入了,他也会得到,如果你担心潜在的XSS,那么这里不是银弹,你只需要逃离所有潜在的危险数据,当您生成html作为变量时。如果您不想在输入中看到,并且将使用htmlspecialchars作为变量,您可以在客户端使用JavaScript替换。使用类似的方法:your_js_string.replace//g,'\'