获取用户ID以继续登录

时间:2015-05-21 14:07:59

标签: php mysql database web

我正在制作一个小网页,我想提取用户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>";
    }
?>

对于有经验的程序员来说,这段代码可能看起来很恐怖,据我所知,但请提出建议。

1 个答案:

答案 0 :(得分:0)

每当您将用户输入用作SQL查询的一部分时,就会冒SQL注入漏洞的风险。虽然你可以使用准备好的声明或大量的消毒,但到目前为止我看到的最强大的方法是这样的:

Public LowerBound as Integer

显然你需要根据自己的需要调整一下。

此方法从不将用户输入传递给数据库,但数据库仅用于读取。

请注意,这种方法对于数百或数千名用户来说已经足够了,但对于大量现有用户来说却不是这样。

还有一点:您可能希望使用用户的ID进行进一步处理,而是使用不容易被猜到的内容。也许是用户电子邮件的MD5或类似的东西。