Php 在写入数据库之前清理数据的更好方法
我正在使用PHP和MySQL来支持一个基本论坛。当用户使用撇号(')或在帖子中插入链接时,mysql\u real\u escape\u string函数将\添加到文本中。显示文章时,链接不起作用,所有撇号前面都有一个\Php 在写入数据库之前清理数据的更好方法,php,sql-injection,mysql-real-escape-string,Php,Sql Injection,Mysql Real Escape String,我正在使用PHP和MySQL来支持一个基本论坛。当用户使用撇号(')或在帖子中插入链接时,mysql\u real\u escape\u string函数将\添加到文本中。显示文章时,链接不起作用,所有撇号前面都有一个\ 问题是我在输出文本之前没有做什么,还是我在写入MySQL之前没有正确清理数据?是否打开了magicquotes?您可以通过如下方式创建一个PHP页面来快速检查: <?php var_dump(get_magic_quotes_gpc()) ?> 如果页面显示类
问题是我在输出文本之前没有做什么,还是我在写入MySQL之前没有正确清理数据?是否打开了magicquotes?您可以通过如下方式创建一个PHP页面来快速检查:
<?php var_dump(get_magic_quotes_gpc()) ?>
如果页面显示类似于
int(1)
,那么罪魁祸首不是mysql\u real\u escape\u string
,而是PHP本身。这是一个安全功能,但不是很安全,而且大多只是令人讨厌。在清理每个变量之前,您首先需要使用撤消斜杠。您还可以使用以下命令关闭魔引号:
if ( version_compare(PHP_VERSION, '5.3.0', '<') ) {
set_magic_quotes_runtime(0);
}
if(版本比较(PHP版本,'5.3.0','