Перенаправление после успешного входа не работает - PullRequest
0 голосов
/ 18 мая 2018

Я создал форму входа в систему с помощью PHP, но столкнулся с проблемой, когда мой home.php не показывает свое содержимое после успешного входа в систему.Обработка ошибок показывает, как оба поля обязательны для заполнения, неверное имя пользователя / пароль.Но если я введу правильные учетные данные, он не покажет мою проверку home.php.

login.php

<?php

session_start();
include("connection.php"); //Establishing connection with our database

$error = ""; //Variable for storing our errors.
if(isset($_POST["submit"])) {
    if($_POST["username"]== '' || $_POST["password"]=='') {
        $error = "Both fields are required.";
    } else {
        // Define $username and $password
        $username=$_POST['username'];
        $password=$_POST['password'];

        //Check username and password from database
        $sql="SELECT * FROM users WHERE username='$username' and password='$password'";
        $result=mysqli_query($db,$sql);
        $row=mysqli_fetch_array($result,MYSQLI_ASSOC);

        if(mysqli_num_rows($result) == 1) {
            $_SESSION['username'] = $login_user; // Initializing Session
            header("location: home.php"); // Redirecting To Other Page
        } else {
            $error = "Incorrect username or password.";
        }
    }
}

?>

home.php

<?php
    include("check.php"); 
?>

<!doctype html>
<html>
    <head>
    <meta charset="utf-8">
        <title>Home</title>
        <link rel="stylesheet" href="style.css" type="text/css" />
    </head>
    <body>
        <h1 class="hello">Hello, <em><?php echo $login_user;?>!</em></h1>
        <br><br><br>
        <a href="logout.php" style="font-size:18px">Logout?</a>
    </body>
</html>

.php

<?php
    include('connection.php');
    session_start();
    $user_check=$_SESSION['username'];

    $sql=mysqli_query($db,"SELECT username FROM users WHERE username='$user_check' ");

    $row=mysqli_fetch_array($sql,MYSQLI_ASSOC);
    $login_user=$row['username'];

    if(!isset($user_check)) {
        header("Location: index.php");
    }
?>

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Два важных пункта

первый: Ваши коды всегда будут работать и не остановятся при смене местоположения.Это означает, что вы должны использовать

exit;

// or

die();

для завершения работы программы.

секунда: для перенаправления в php вы должны использовать что-то вроде этого:

/* Redirect to a different page in the current directory that was requested */
$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$page  = 'home.php';
header("Location: http://$host$uri/$page");
exit;
?>
0 голосов
/ 18 мая 2018

Вы не помещаете никакое значение в $ _SESSION ['username'], потому что $ login_user не имеет никакого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...