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

Я установил проверку проверки на своей странице, чтобы она была доступна только через вход в систему, но проблема в том, что после входа в систему заголовок перенаправляет его на страницу входа, что означает, что он не проходит проверку входа.Я набираю правильные учетные данные, и я начал сеансы, но все еще не знаю, что не так.Я очень ценю вашу помощь.

login.php

    <?php
session_start();
include("dbConnection.php");
if(isset($_POST['username']) && isset($_POST['pass']))
{
$username = $_POST['username'];
$password = $_POST['pass'];

$query = mysql_query(" SELECT * FROM login WHERE username='$username' and password='$password'");
if($username == 'alex' && $password == 'lion'){
header('Location: alex.php' );
exit();
}
?>

<form class="login100-form validate-form" method="POST">
<span class="login100-form-title p-b-37">
Sign In
</span>

<div class="wrap-input100 validate-input m-b-20" data-validate="Enter username or email">
<input class="input100" type="text" name="username" placeholder="username or email">
<span class="focus-input100"></span>
</div>

<div class="wrap-input100 validate-input m-b-25" data-validate = "Enter password">
<input class="input100" type="password" name="pass" placeholder="password">
<span class="focus-input100"></span>
</div>

<div class="container-login100-form-btn">
<button class="login100-form-btn">
Sign In
</button>
<?php if(isset($_GET['error'])==true){
echo'<strong><p align ="center" id="wrong" color ="red">Wrong Username or Password !!</p></strong>';
}?>
</div>

alex.php

<?php
  ob_start();
  include("dbConnection.php");
 if(!isset($_SESSION['username'])){
   header("location:login.php");
}
  ?>

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Внутри вашего второго if block вы не устанавливаете значение для $_SESSION['username'], которое необходимо в alex.php для дальнейшей проверки входа в систему.

Сразу после:

if($username == 'alex' && $password == 'lion'){

Вставьте следующий оператор:

$_SESSION['username'] = $username;.

И в alex.php вам нужно сделать session_start(); в качестве первого оператора, чтобы $_SESSION['username'] был доступен.

Снова в alex.php используйте следующий код, чтобы, если страница-источник не была login.php, она перенаправлялась на login.php.

Сразу после:

ob_start();

Добавить:

if(basename($_SERVER['HTTP_REFERER']) != 'login.php'){
   header('Location: login.php' );
   exit();
}
0 голосов
/ 23 сентября 2018

Ваша первая проблема - вы должны начать сеанс в вашем файле "alex.php".Добавьте следующую строку в верхней части вашего кода.

session_start();

Ваша вторая проблема: вы проверяете пользователя, независимо от того, вошли ли они в систему или нет, используя переменную $ _ SESSION ['username'] Но после успешной проверки вы не устанавливаете $ _ SESSION ['username'] в файле "login.php".

Таким образом, ваш код должен быть таким:

if($username == 'alex' && $password == 'lion'){
    $_SESSION['username'] = 'alex';
    header('Location: alex.php' );
    exit();
} 

В вашей функции выхода из системы не забудьте сбросить эту переменную сеанса

unset($_SESSION['username']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...