为了保持安全被告知
如果我要显示
,请在发送到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>
和..我不能去!哈哈,
我该如何解决这个并保持安全?
谢谢你!答案 0 :(得分:2)
听起来你可能已经开启magic_quotes_gpc
或其中一个。较旧的PHP版本会自动转义所有内容,因此通过执行mysql_real_escape_string()
(您应该如此),您实际上添加了另一层转义。
正确的解决方案是关闭magic quotes。它们已被弃用,应该关闭,并继续使用mysql_real_escape_string()
。
注意:关闭magic_quotes必须从php.ini或httpd.conf / .htaccess中的php_value完成。你不能从in-script ini_set()中做到这一点,因为在执行ini_set时,PHP已经完成了魔术引用。
答案 1 :(得分:1)
PHP的stripslashes函数
echo stripslashes($string);
取出斜杠并像原来那样显示