如何在PHP登录脚本中从SQL验证串联?

时间:2018-07-06 14:39:07

标签: php html mysql sql

我正在使用一个包含2个字段(全名和密码)的登录脚本。我的SQL表具有ID,名字,姓氏,密码。用户可以从一个选择中选择自己的名字,然后从名字和姓氏(全名)的连接中动态填充选择,然后输入密码。

//my SQL table
ID  |   firstname  |  lastname  |  password
-------------------------------------------
01      John          Smith        ezaccess


//my SQL query
$query2 = "SELECT CONCAT(firstname, ' ', lastname) AS fullname FROM tbl_users";
$result1 = mysqli_query($DBcon, $query2);


//my HTML select
<select class="form-control" name="fullname" required>
        <option value="">Select name</option>
        <?php while($row1 = mysqli_fetch_array($result1)):;?>
        <option value="<?php echo $row1["fullname"];?>"><?php echo $row1["fullname"];?></option>
        <?php endwhile;?>
</select>

所以这是我迷路的地方,选择了新创建的“全名”。我只是更好地创建一个全名SQL列,然后对其进行验证?我了解我刚刚从查询中创建了全名数组,但是不知道如何在上一个查询中继续使用它来验证我的登录名。

if (isset($_POST['btn-login'])) {

$fullname = strip_tags($_POST['fullname']);
$password = strip_tags($_POST['password']);

$fullname = $DBcon->real_escape_string($fullname);
$password = $DBcon->real_escape_string($password);

$query = $DBcon->query("SELECT * FROM tbl_users WHERE firstname AND lastname='$fullname'");
$row=$query->fetch_array();

$count = $query->num_rows;

if (password_verify($password, $row['password']) && $count==1) {
    $_SESSION['userSession'] = $row['user_id'];
    header("Location: home.php");
} else {
    $msg = "<div class='alert alert-danger'>
                <span class='glyphicon glyphicon-info-sign'></span> &nbsp; Invalid name or Password !
            </div>";
}
$DBcon->close();

}

1 个答案:

答案 0 :(得分:1)

尽管我玩了级联,但是由于某种原因我没有使它起作用,但这在上一个查询中成功了:

$query = $DBcon->query("SELECT * FROM tbl_users WHERE CONCAT(firstname, ' ', lastname)='$fullname'");

请注意,在这种情况下安全性不是优先事项,因此我的代码也不是最安全的。