简体   繁体   English

登录表单,单击提交后错误500

[英]login form Error 500 after clicking on submit

login form Error 500 after clicking on submit Hi everyone, We have a group assignment in our php course and we are supposed to design a login system in PHP and MySQL. 登录表单单击提交后出现错误500大家好,我们在php课程中有一个小组作业,我们应该在PHP和MySQL中设计一个登录系统。 We wrote the form, the PHP script, created the database and everything is supposed to work except that when we enter the username and passwords specified on the database when you press the submit button, it brings us to a 500 internal error page. 我们编写了表单,PHP脚本,创建了数据库,并且一切正常,除了当您按下提交按钮时输入在数据库中指定的用户名和密码时,它使我们进入500内部错误页面。 The code is in a file called index.php in the /login folder and it should grant access to a file located in the parent folder. 该代码位于/ login文件夹中名为index.php的文件中,它应授予对父文件夹中文件的访问权限。 Here is it: 就这个:

<?php
// Initialize the session
session_start();


// Check if the user is already logged in, if yes then redirect him to welcome page
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    header("location:../accessgranted.php");
    exit;
}

// Include config file
require_once "db.php";

// Define variables and initialize with empty values
$username = $password = "";
$username_err = $password_err = "";
$username_ph = "Enter Username";
$password_ph = "Enter password";

// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){

    // Check if username is empty quoted th trim function because it caused the same 500 error when trying to run the login page
    if(empty/*(trim*/($_POST["username"]/*)*/)){
        $username_err = "Entrez votre nom d'utilisateur";
    } else{
        $username = trim($_POST["username"]);
    }

    // Check if password is empty
    if(empty/*(trim*/($_POST["password"]/*)*/)){
        $password_err = "Entrez votre mot de passe";
    } else{
        $password = trim($_POST["password"]);
    }

    // Validate credentials
    if(!empty($username) && !empty($password)){
        // Prepare a select statement
        $sql = "SELECT id, username, password FROM Users WHERE username = ?";

        if($stmt = mysqli_prepare($con, $sql)){

            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "s", $param_username);

            // Set parameters
            $param_username = $username;

            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){


                // Store result
                mysqli_stmt_store_result($stmt);

                // Check if username exists, if yes then verify password
                if(mysqli_stmt_num_rows($stmt) == 1){                    
                    // Bind result variables
                    mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);

                    if(mysqli_stmt_fetch($stmt)){

                        if(password_verify($password, $hashed_password)){

                            // Password is correct, so start a new session
                            session_start();

                            // Store data in session variables
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;                            

                            // Redirect user to welcome page
                            header("location: ../accessgranted.php");

                        } else{
                            // Display an error message if password is not valid
                            $password_err = "The password you entered was not valid.";
                        }
                    }//added
                } else{
                    // Display an error message if username doesn't exist
                    $username_err = "No account found with that username.";
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            } 
        }

        // Close statement
        mysqli_stmt_close($stmt);
    }

    // Close connection
    mysqli_close($con);
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
    <style type="text/css">
        body{ font: 14px sans-serif; }
        .wrapper{ width: 350px; padding: 20px; }
    </style>
</head>
<body>
   <center> 
        <h1>Connection</h1>
        <h2>Login Assignment</h2>
        <div class="wrapper">
        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
            <div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
                <p align="left">Username</p>
                <input type="text" name="username" class="form-control" value="<?php echo $username; ?>" placeholder="<?= $username_ph?>">
                <span class="help-block"><?php echo $username_err; ?></span>
            </div>    
            <div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
                <p align="left">Password</p>
                <input type="password" name="password" class="form-control" placeholder="<?= $password_ph?>" align="left">
                <span class="help-block"><?php echo $password_err; ?></span>
            </div>
            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Login">
            </div>
            <p>Don't have an account? <a href="register.php">Sign up now</a>.</p>
        </form>
    </div>  </center>  
</body>
</html>

We have to hand it before Sunday so your help would be much appreciated 我们必须在周日之前移交它,因此将非常感谢您的帮助

每当遇到500错误时,由于忘记了逗号,点,方括号和SQL查询,您就在语法上犯了错误。

Check the error_reporting , display_errors and display_startup_errors settings in your php.ini file. 检查php.ini文件中的error_reportingdisplay_errorsdisplay_startup_errors设置。 They should be set to E_ALL and "On" respectively. 它们应分别设置为E_ALL"On" You can also change these settings (except display_startup_errors ) at the very beginning of your script to set them at runtime. 您还可以在脚本的开头更改这些设置( display_startup_errors除外),以便在运行时进行设置。

error_reporting(E_ALL);
ini_set('display_errors', 'On');

After that, restart server. 之后,重新启动服务器。

And check the error causing in your script. 并检查脚本中引起的错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM