Перенаправить на login.php, если не залогинен - PullRequest
0 голосов
/ 20 мая 2019

Я новичок и мне нужна помощь с моим кодом.

Если я захожу на веб-страницу index.php , я хочу перенаправиться на login.php , если я не вошел в систему.

Я использую этот код, и он работает, поэтому я перенаправляю на login.php , но не могу войти. Я застрял на login.php .

У меня есть этот код в моем index.php

<?php
    if(isset($_SESSION['userId'])) {
        // comment
    } else {
        header("Location:login.php");
    }
?>

Части моего login.php

<?php
include('template.php');
if (isset($_POST['username']) and isset($_POST['password'])) {
$name = $mysqli->real_escape_string($_POST['username']);
$pwd = $mysqli->real_escape_string($_POST['password']);
$query = <<<END
SELECT username, password, user_id FROM users4project
WHERE username = '{$name}'
AND password = '{$pwd}'
END;
$result = $mysqli->query($query);
if ($result->num_rows > 0) {
$row = $result->fetch_object();
$_SESSION["username"] = $row->username;
$_SESSION["user_id"] = $row->user_id;
header("Location:index.php");
} else {
echo "Wrong username or password. Try again";
}
}
$content = <<<END
                    <form action="login.php" method="post">
                    <div class="form-group">
                      <input type="text" class="form-control form-control-user" name="username" required placeholder="Username">
                    </div>
                    <div class="form-group">
                      <input type="password" class="form-control form-control-user" name="password" required placeholder="Password">
                    </div>
                    <div class="form-group">
                      <div class="custom-control custom-checkbox small">
                        <input type="checkbox" class="custom-control-input" id="customCheck">
                        <label class="custom-control-label" for="customCheck">Remember Me</label>
                      </div>
                    </div>
                    <input type="submit" value="Login" class="btn btn-primary btn-user btn-block">
                    </form>
END;
echo $navigation;
echo $content;
?>

my template.php

    session_name('Website');
    session_start();
    $host = "localhost";
    $user = " ";
    $pwd = " ";
    $db = " ";
    $mysqli = new mysqli($host, $user, $pwd, $db);

1 Ответ

1 голос
/ 20 мая 2019
isset($_SESSION['userId'] !== $_SESSION["user_id"]

кроме основных проблем безопасности, вы не сравниваете правильное имя сеанса

(для наглядности) Вы проверяете

<?php
    if(isset($_SESSION['userId'])) {
        // comment

но вы установили

if ($result->num_rows > 0) {
    ....
    $_SESSION["user_id"] = $row->user_id;
.....

PappaJ говорит: «Выберите соглашение об именах и придерживайтесь его» * ​​1010 *

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