如何防止从表单输入中添加\?

时间:2011-02-07 18:17:34

标签: php html forms

html表单接受textarea输入,我在显示时使用$ _POST值将输入值放入textarea。 例如。

<html>
<?php if($_POST['input'){
<form method="post" action="<?=$PHP_SELF?>">
<textarea name="input" cols="60" rows="20"><?=$_POST['input']?></textarea>
<input type="submit" value="Test it">
</form>
<?php
} else {
?>
Please copy in a text of your choice
<br /><br />
<form method="post" action="<?=$PHP_SELF?>">
<textarea name="input" cols="60" rows="20"></textarea>
<input type="submit" value="Test it">
</form>
</html>

一切正常,除了反斜杠'\'添加到每个单引号和双引号。 如何设置一些设置以防止添加反斜杠?

3 个答案:

答案 0 :(得分:2)

禁用魔术引号 - 请参阅http://php.net/manual/en/security.magicquotes.php - 如果您在共享主机上并且您的主机是愚蠢的并且不想/允许您更改它(请参阅该页面了解它为何愚蠢),请使用{对于stripslashes()数组中的每个值,我都会{1}}。

在旁注中,不要将输入值(包括$_GET, $_POST, $_COOKIE)回显到HTML输出而不通过PHP_SELF发送,否则您会遇到安全问题。有关详细信息,请参阅http://en.wikipedia.org/wiki/Cross-site_scripting

答案 1 :(得分:2)

经过长时间的搜索,我解决了这个问题:

在您要显示textarea内容的页面中,只需添加此

即可
< ? php echo stripslashes($shortcode_name) ? > 

当然,您需要将$shortcode_name替换为您的短代码。 就这些。 解决

答案 2 :(得分:0)

您也可以使用stripslashes

<textarea name="input" cols="60" rows="20"><?php echo stripslashes($_POST['input']); ?></textarea>