我有一个登录页面,其中包含一个带有POST方法的表单,并且没有定义任何操作(或者是对自己的操作)。我使用一些函数来进行登录,当表单的某些字段留空或登录凭据无效时,我被重定向到XAMPP仪表板。就好像我的其他陈述没有开始一样。任何想法为什么?
if(ifItIsMethod('post')){
if(isset($_POST['username']) && isset($_POST['password'])){
login_user($_POST['username'], $_POST['password']);
}else{
echo "bla bla";
}
}
我尝试了其他{header(..)}但没有任何反应,它只是重定向到仪表板。
我有一个在线测试版本,同样的情况发生在这里:http://hotfol.com/cms/login_page.php
谢谢!
编辑:功能
function ifItIsMethod($method=null){
if($_SERVER['REQUEST_METHOD'] == strtoupper($method)){
return true;
}else{
return false;
}
}
function login_user($typed_username, $typed_password){
global $connection;
$typed_username = escape($typed_username);
$typed_password = escape($typed_password);
$query = "SELECT * FROM users WHERE username = '$typed_username'";
$select_user_query = mysqli_query($connection, $query);
if(!$select_user_query) {
die ("query failed" . mysqli_error($connection));
}
$row = mysqli_fetch_assoc($select_user_query);
$user_id = escape($row['user_id']);
$username = escape($row['username']);
$password = escape($row['user_password']);
$firstname = escape($row['user_firstname']);
$lastname = escape($row['user_lastname']);
$user_role = escape($row['user_role']);
if (password_verify($typed_password, $password)) {
$_SESSION['username'] = $username;
$_SESSION['firstname'] = $firstname;
$_SESSION['lastname'] = $lastname;
$_SESSION['user_role'] = $user_role;
$_SESSION['user_id'] = $user_id;
header('Location: admin/index.php');
}else{
header('Location: ../index.php');
}
}
答案 0 :(得分:1)
您的内部if语句始终为true,但是当一个为空时您无法登录。用户名和密码都是设置的,但其中一个是空的(仍然设置),login_user函数接收空数据,因此无法登录用户。使用empty()
- 当有安培字符串时显示为真。