请帮忙解释这段代码有什么问题? (第76行是中间的一行)
require("dbConfig.php");
$sql = 'SELECT * FROM dbUsers WHERE username='$_SESSION["valid_user"]'';
$r = mysql_query($sql);
答案 0 :(得分:2)
请汇总你的字符串
$sql = 'SELECT * FROM dbUsers WHERE username="'.mysql_real_escape_string($_SESSION["valid_user"]).'"';
建议:
1.学会防止MySQL注入:Good Link
2.建议不要使用扩展名来编写新代码。相反,应该使用mysqli或PDO_MySQL扩展。更多阅读:PHP Manual
答案 1 :(得分:0)
你错过了.
:
$sql = 'SELECT * FROM dbUsers WHERE username='$_SESSION["valid_user"]'';
应该是:
$sql = "SELECT * FROM dbUsers WHERE username='".$_SESSION["valid_user"]."'";
答案 2 :(得分:0)
试试这个:
$sql = 'SELECT * FROM dbUsers WHERE username='.$_SESSION["valid_user"];
答案 3 :(得分:0)
尝试(如果您清理用户输入,则会阻止SQL注入):
<?php
require("dbConfig.php");
$sql = "SELECT * FROM dbUsers WHERE username='".filter_var(mysql_real_escape_string($_SESSION["valid_user"]),FILTER_SANITIZE_STRING)."'";
$r = mysql_query($sql);
?>
编辑:添加了mysql_real_escape_string()以转义输入字符串,但是即使这对SQL注入也不是100%有效,如here所述。