PHP 登录表单不起作用,我该怎么解决它?

标签 php mysql database authentication

我有以下两个 php 脚本:
配置.php:

<?php
define('DB_SERVER', 'localhost:3306');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'password');
define('DB_DATABASE', 'mind3');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
?>

和index.php,其中包含登录脚本和表单:

    <?php
require_once 'config.php';
$username=$password='';
$username_err=$password_err='';
if($_SERVER["REQUEST_METHOD"] == "POST"){

    if(empty(trim($_POST["username"]))){
    $username_err = 'Please enter an username!';
    } else{
    $password = trim($_POST['username']);  
    }

    if(empty(trim($_POST["password"]))){
    $pasword_err = "Please enter a password!";
    } else{
    $password = trim($_POST['password']);
    }

    if(empty($username_err) && empty($password_err)){
    $sql = "SELECT username,password FROM members WHERE username = ?";

    if($stmt = mysqli_prepare($link, $sql)){
        mysqli_stmt_bind_param($stmt, "s", $param_username);
        $param_username = $username;
        if(mysqli_stmt_execute($stmt)){
        mysqli_stmt_store_result($stmt);
        if(mysqli_stmt_num_rows($stmt) == 1){
            if(password_verify($password, $hashed_password)){
            session_start();
            $_SESSION['username'] = $username;
            header("location: welcome.php");

            } else{
            $username_err = 'Username/password is wrong!';
        }
        } else{
        echo "Oops! Something went wrong. Please try again later.";
        }
    }
    mysqli_stmt_close($stmt);
    } 
    mysqli_close($link);
} 
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <div class="wrapper">
    <h2>Log in</h2>
    <form action="<?php echo htmlspecialchars ($_SERVER["PHP_SELF"]); ?>" method="post">
        <div class="form-group <?php echo(!empty($username_err)) ? 'has-error' : ''; ?>">
            <input type="text" name="username" class="form-control" placeholder="Username">
            <span class="help-block"><?php echo $username_err; ?></span>
        </div>
        <div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
            <input type="password" name="password" class="form-control">
            <span class="help-block"><?php echo $password_err; ?></span>
        </div>
        <div class="form-group">
            <input type="submit" class="btn btn-primary" value="Login">
        </div>
    </form>
    </div>
</body>
</html>

问题是,每当我输入数据库中的凭据时,它不会将我重定向到welcome.php,也不会告诉我密码或用户名错误。但是当我不这样做时输入用户名或密码我确实收到“请输入用户名”或“请输入密码”。

我不明白出了什么问题。

最佳答案

您将用户名设置为 $password 变量,而不是 $username 变量。

if(empty(trim($_POST["username"]))){
  $username_err = 'Please enter an username!';
} else{
  $password = trim($_POST['username']);  
}

只需将 $password = 替换为 $username =...

关于PHP 登录表单不起作用,我该怎么解决它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50434924/

相关文章:

php - C :\wamp\apps\phpmyadmin4. 1.14 中超出最大执行时间 360 秒

php - 如何在 php 中读取 FormData 对象

c# - MySql 如果不存在则插入

mysql - 标准化更好还是创建没有标准化的索引

database - 阻止 Angular 从数据库中列出所有内容?

php - 将 print_r 结果放入变量中

php - MySQL:对 ID 进行分组并在单独的列上显示不同的值

mysql - 从 MySQL 查询中排除多个 ID

mysql - SQL 错误代码 1054 未知列

php - Android 应用程序未获得 JSON 响应