【发布时间】:2014-01-10 07:41:19
【问题描述】:
我有一个评论框表单正在运行,我只是注意到当我使用' 时,它会在它前面创建一个\。例如,如果我写“how's”,它会在它发布到的数据库中以及它何时显示在页面上时都显示为“how\'s”。我在显示“正文”文本时使用了stripslashes 函数,我认为该文本应该去掉斜线。
我的服务器正在运行 php 版本 5.3.6,如果有帮助的话。
我正在使用这段代码将评论框正文中的文本发布到我的数据库中:
$body = mysql_prep($_POST['body']);
它使用的功能是这样的:
function mysql_prep($string) {
global $connection;
$escaped_string = mysqli_real_escape_string($connection, $string);
return $escaped_string;
}
旁注:您不需要回答这个问题,但这是我用来使用户输入的文本免受黑客、坏人等所有攻击的功能。我做得好吗,还是我让自己对问题持开放态度? (除了这个可能是因为这个函数的斜线问题)
这是我用来显示文本的代码:
<div id="comments">
<?php while($comment_text = mysqli_fetch_assoc($display_comments)) { ?>
<div class="comment" style="margin-bottom: 2em;">
<div class="author">
<b><?php echo htmlentities($comment_text["author"]); ?>:</b>
</div>
<div class="meta-info" style="font-size: 0.8em;">
<?php echo datetime_to_text($comment_text["created"]); ?>
</div>
<div class="body">
<?php echo stripslashes($comment_text["body"], '<strong><em><p>'); ?>
</div>
</div>
<?php } ?>
<?php if(empty($display_comments)) { echo "No Comments."; } ?>
</div>
非常感谢任何帮助或建议,谢谢!!
【问题讨论】:
-
我没有看到
stripslashes()。我只看到strip_tags()(它做了其他事情)。 -
在准备 MySQLi 查询时,您将不需要
mysqli_real_escape_string()函数。 -
哦,天哪,你说得对@Gerald Schneider!我想我只是把它拿出来,然后放上stripslashes吧?除非我这样做是为了搞砸……
-
实际上,我只是尝试将其切换出来,但我仍然会收到斜线......但我会更新我的问题以反映这一点
-
它返回什么
var_dump(get_magic_quotes_gpc())?是真是假?
标签: php mysql stripslashes