我正在使用一个包含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> Invalid name or Password !
</div>";
}
$DBcon->close();
}
答案 0 :(得分:1)
尽管我玩了级联,但是由于某种原因我没有使它起作用,但这在上一个查询中成功了:
$query = $DBcon->query("SELECT * FROM tbl_users WHERE CONCAT(firstname, ' ', lastname)='$fullname'");
请注意,在这种情况下安全性不是优先事项,因此我的代码也不是最安全的。