我的 php 文件中有以下代码:
session_start();
include "connect.php";
if (isset($_POST['email']) && isset($_POST['password'])) {
$email = htmlspecialchars(mysqli_real_escape_string($conn, $_POST['email']));
$password = htmlspecialchars(mysqli_real_escape_string($conn, $_POST['password']));
function process() {
include "connect.php";
if (isset($_POST['email']) && isset($_POST['password'])) {
$email = $_POST["email"];
$password = $_POST["password"];
}
mysqli_select_db($conn, "users");
$sql = "SELECT * FROM users WHERE email='$email' AND password='$password'";
$result = mysqli_query($conn, $sql);
$count = mysqli_num_rows($result);
if ($count >= 1) {
$_SESSION['id'] = $id;
$_SESSION['email'] = $email;
$_SESSION['password'] = $password;
header('location:index.php');
} else {
echo "Email/Password is incorrect";
}
}
if ($email != "" or $password != "") {
if (isset($_POST['submit'])) {
process();
} else {
echo "Error: " . mysql_error();
}
}
}
我该如何防止登录页面中的 SQL 注入(inject)? 我在互联网上搜索,大多数网站都说我必须使用 mysqli_real_escape_string() 函数,但是当我再次在我的网站中使用 sql 注入(inject)时,这似乎并没有改变一切。 请帮忙:)
最佳答案
是的,使用 PDO 并使用 try/catch block 准备语句。使用prepare时,每个参数都作为安全参数传递,消除了注入(inject)风险。
关于php - 如何防止网站中的sql注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20914426/