消毒这个最简单,最有效的方法是什么:
$q = "SELECT * FROM `admin` "
."WHERE `username`=' ".$_POST["username"]."' "
."AND `passcode`=' ".$_POST["password"]."' "
另外,我正在学习PHP,所以如果你能提供解释,提示,建议或更多方法来清理内容以防止SQL注入,那将是最受欢迎的
答案 0 :(得分:1)
我喜欢使用$ mysqli prepared statements
- 这是PHP网站的一个例子:
说明(请参阅底部以获取使用代码的示例):
您可以使用?
标记替换查询中的变量,然后在以后使用bind
变量。
$city = "Amersfoort";
/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* bind parameters for markers */
$stmt->bind_param("s", $city);
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($district);
/* fetch value */
$stmt->fetch();
printf("%s is in district %s\n", $city, $district);
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
使用您的代码的示例:
$q = "SELECT * FROM `admin` "
."WHERE `username`= ? AND passcode = ?";
/* create a prepared statement */
if ($stmt = $mysqli->prepare($q)) {
/* bind parameters for markers */
$stmt->bind_param("ss", $_POST['username'], $_POST['password']);
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($district);
/* fetch value */
$stmt->fetch(); // This can also be while($stmt->fetch()){ Code here }
printf("%s is in district %s\n", $city, $district);
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
答案 1 :(得分:0)
如果你真的必须知道它会是这样的:
$q = "SELECT * FROM `admin` "
."WHERE `username`=' ".mysql_real_escape_string($_POST["username"])."' "
."AND `passcode`=' ".mysql_real_escape_string($_POST["password"])."' "
但正如其他人所说,你应该使用最有可能的PDO或mysqli,因为所有的mysql_命令都已被弃用。