0

为了保证安全被告知

如果要显示我,请在发送到 Mysql 之前使用 mysql_real_escape_string

我做的很好:

....

   $b = mysql_real_escape_string($b);
   $r_int = mysql_real_escape_string($r_int);
   $r_ext= mysql_real_escape_string($r_ext);

   $id_tmp = $_SESSION['id'];
   $insert = "INSERT INTO table (nombre, coment, iduser,fecha)
                           VALUES ('$b','$r_int','$id_tmp',NOW())";
....

但如果这些值包含任何<a href="where">go</a>它会变成<a href="\where\">go</a>

和..我不能去!哈哈,

我该如何解决这个问题并保持安全?

谢谢你!

4

2 回答 2

2

听起来您可能已magic_quotes_gpc打开或打开了其中的一个。较旧的 PHP 版本自动转义了所有内容,因此通过这样做mysql_real_escape_string()(正如您应该做的那样),您实际上添加了另一层转义。

正确的解决方案是关闭魔术引号。它们已被弃用,应该关闭,您继续使用mysql_real_escape_string().

NOTE: Turning off magic_quotes has to be done from php.ini, or via a php_value in httpd.conf/.htaccess. You can't do it from an in-script ini_set(), because by the time that ini_set executes, PHP's already done the magic quoting.

于 2011-02-25T01:53:22.137 回答
1

PHP的stripslashes函数

echo stripslashes($string);

取出斜线并像原来一样显示它

于 2011-02-25T01:50:17.060 回答