我正在制作一个小网页,我想提取用户ID,以便检查该帐户是否存在。我这样做是通过连接到MySQL数据库,并检查该帐户是否存在。我对这一切都很陌生,只知道PHP&的绝对基础知识。 MySQL的。这是我的login.php:
的login.php
<?php
$server = "fooServer";
$user = "foo";
$pass = "foo";
$db = "newsContent";
$conn = new mysqli($server, $user, $pass, $db);
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
?>
<?php
$email = $_POST['email']; //Taken from my index.php
$password = $_POST['password']; //Taken from my index.php
/*I used this so as to extract the id. I then wanted to
proceed with the procedure if the id existed, and alert the user if it didn't*/
$sql = "SELECT id FROM fooTable WHERE username='$email' && password='$password'";
if ($conn->query($sql) === TRUE) {
echo "
<script>
alert('Login Successful');
window.location.href='news.php';
</script>";
} else {
<script>
alert('Login unuccessful. User account does not exist');
window.location.href='news.php';
</script>";
}
?>
对于有经验的程序员来说,这段代码可能看起来很恐怖,据我所知,但请提出建议。
答案 0 :(得分:0)
每当您将用户输入用作SQL查询的一部分时,就会冒SQL注入漏洞的风险。虽然你可以使用准备好的声明或大量的消毒,但到目前为止我看到的最强大的方法是这样的:
Public LowerBound as Integer
显然你需要根据自己的需要调整一下。
此方法从不将用户输入传递给数据库,但数据库仅用于读取。
请注意,这种方法对于数百或数千名用户来说已经足够了,但对于大量现有用户来说却不是这样。
还有一点:您可能希望使用用户的ID进行进一步处理,而是使用不容易被猜到的内容。也许是用户电子邮件的MD5或类似的东西。