테스트 사이트 - 개발 중인 베타 버전입니다

Mysql 을 이용한 login page 채택완료

Willfor716 4년 전 조회 8,124

안녕하세요.

인터넷에서 다운로드 받아서 파일을 다 만들었는데

dbtable에 있는 값을 못가져오는지 

"Invalid username or password." 이렇게 뜹니다.

 

config.php

</strong></p>

<p><?php

/* Database credentials. Assuming you are running MySQL

server with default setting (user 'root' with no password) */

define('DB_SERVER', 'localhost');

define('DB_USERNAME', 'root');

define('DB_PASSWORD', '');

define('DB_NAME', 'demo');

 

/* Attempt to connect to MySQL database */

$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

 

// Check connection

if($link === false){

    die("ERROR: Could not connect. " . mysqli_connect_error());

}

?></p>

<p><strong>

이렇게 되어 있고,

 

login.php

</strong></p>

<p><?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: welcome.php");

    exit;

}

 

// Include config file

require_once "config.php";

 

// Define variables and initialize with empty values

$username = $password = "";

$username_err = $password_err = $login_err = "";

 

// Processing form data when form is submitted

if($_SERVER["REQUEST_METHOD"] == "POST"){

 

    // Check if username is empty

    if(empty(trim($_POST["username"]))){

        $username_err = "Please enter username.";

    } else{

        $username = trim($_POST["username"]);

    }

    

    // Check if password is empty

    if(empty(trim($_POST["password"]))){

        $password_err = "Please enter your password.";

    } else{

        $password = trim($_POST["password"]);

    }

    

    // Validate credentials

    if(empty($username_err) && empty($password_err)){

        // Prepare a select statement

        

    $sql = "SELECT id, username, password FROM users WHERE username = ?";

        

        if($stmt = mysqli_prepare($link, $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: welcome.php");

                        } else{

                            // Password is not valid, display a generic error message

                            $login_err = "Invalid username or password.";

                        }

                    }

                } else{

                    // Username doesn't exist, display a generic error message

                    $login_err = "Invalid username or password.";

                }

            } else{

                echo "Oops! Something went wrong. Please try again later.";

            }</p>

<p>            // Close statement

            mysqli_stmt_close($stmt);

        }

    }

    

    // Close connection

    mysqli_close($link);

}

?>

 

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Login</title>

    <link rel="stylesheet" href="<a href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">" target="_blank" rel="noopener noreferrer">https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"></a>

    <style>

        body{ font: 14px sans-serif; }

        .wrapper{ width: 360px; padding: 20px; }

    </style>

</head>

<body>

    <div class="wrapper">

        <h2>Login</h2>

        <p>Please fill in your credentials to login.</p></p>

<p>        <?php 

        if(!empty($login_err)){

            echo '<div class="alert alert-danger">' . $login_err . '</div>';

        }        

        ?></p>

<p>        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">

            <div class="form-group">

                <label>Username</label>

                <input type="text" name="username" class="form-control <?php echo (!empty($username_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $username; ?>">

                <span class="invalid-feedback"><?php echo $username_err; ?></span>

            </div>    

            <div class="form-group">

                <label>Password</label>

                <input type="password" name="password" class="form-control <?php echo (!empty($password_err)) ? 'is-invalid' : ''; ?>">

                <span class="invalid-feedback"><?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>

</body>

</html></p>

<p><strong>

 

이렇게 되어있습니다.

고수님들의 조언 부탁드립니다.

감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

"Invalid username or password." 

말그대로 아디 혹은 비번이 틀렸대요.. 

테이블에 비번 필드가 암호화로 됐는지 확인 해보세요 

맨위에 config.php에 보면 커넥션 연결 됐는지도 확인해보시구요 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

W
Willfor716
4년 전
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

mysql root 계정에 비번을 만드시거나

웹 사이트 용으로 mysql 계정을 하나 만드시는 것을 추천합니다.

https://www.google.com/search?q=mysql+%EA%B3%84%EC%A0%95+%EB%A7%8C%EB%93%A4%EA%B8%B0&oq=mysql+%EA%B3%84%EC%A0%95+%EB%A7%8C%EB%93%A4%EA%B8%B0&aqs=chrome.0.69i59.5988j0j7&sourceid=chrome&ie=UTF-8

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

W
Willfor716
4년 전
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인