2017-01-01 4 views
-1

В Мой login.php У меня естьPHP Session не работает и не дает каких-либо ошибку

<?php 

require_once('connection.php'); 
$loginErr = ""; 
if(isset($_POST['login'])) 
{ 
    $email = mysqli_real_escape_string($conn,$_POST['email']); 
    $pass = mysqli_real_escape_string($conn,$_POST['password']); 
    $sel_user = "SELECT * FROM register WHERE email='$email' AND password='$pass'"; 
    $run_user = mysqli_query($conn, $sel_user); 
    $check_user = mysqli_num_rows($run_user); 
    if($check_user>0){ 
    $_SESSION['email'] = $email; 
    header('Location: '.'index.php'); 
    } 
    else { 
    $loginErr = "Email or password is not correct, try again!"; 
    } 
} 
?> 

В принципе, если имя пользователя и пароль совпадает создает сеанс «электронной почты» и перенаправляет на главную страницу.

В моем навигаторе, который является общим для всех страниц, таких как индекс и другие. У меня есть

<ul class="nav navbar-nav navbar-right"> 
<?php if(!isset($_SESSION['email'])) { ?> 
<li><a href="login">Login</a></li>  
<li><a href="register.php">Register</a></li>  
<?php } else { ?> 
<li><a href="logout.php">Logout</a></li> 
<?php } ?> 
</ul> 

В принципе, если нет сеанса электронной почты затем войти в систему и выход из системы показан и если сеанс электронной почты установлен, то выход из системы отображается.

Но всегда отображается кнопка входа и регистрации, даже если пользователь вошел в систему или вышел из системы.

Мой выход из системы Page

<?php 
session_start(); 
session_unset($_SESSION['email']); 
session_destroy(); 
header("Location: index.php"); 
?> 

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

Спасибо.

Edit 1:

забыл упомянуть начало сеанса в connection.php файле

Edit 2:

session_start(); Я поставил на первой строке страницы входа и домашнюю, но та же проблема

Edit 3: Когда я Var дамп сессии после набора сеанса я получаю значение сеанса электронной почты, но когда я Var сваливать в домашнюю страницу я получаю Undefined индекс: электронная почта

+0

Вы начали сеанс связи.php? –

+0

Да сеанс запускается на connection.php – Phoenix

+0

попробуйте под кодом. на logout.php –

ответ

0

Вы должны start_Session(); в connection.php. Или вы можете начать здесь как это ...

<?php 

require_once('connection.php'); 
$loginErr = ""; 
if(isset($_POST['login'])) 
{ 
    $email = mysqli_real_escape_string($conn,$_POST['email']); 
    $pass = mysqli_real_escape_string($conn,$_POST['password']); 
    $sel_user = "SELECT * FROM register WHERE email='$email' AND password='$pass'"; 
    $run_user = mysqli_query($conn, $sel_user); 
    $check_user = mysqli_num_rows($run_user); 
    if($check_user>0){ 
    session_start(); 
    $_SESSION['email'] = $email; 
    header('Location:index.php'); 
    } 
    else { 
    $loginErr = "Email or password is not correct, try again!"; 
    } 
} 
?> 

И ваш logout.php должно быть, как это ...

<?php 
//session_start(); no need to start here 
session_unset($_SESSION['email']); 
session_destroy(); 
header("Location: index.php"); 
?> 

Не start_session дома page.Because сессии всегда начинается сразу. И попробуйте следующий код.

<ul class="nav navbar-nav navbar-right"> 
<?php if(isset($_SESSION['email'])) { ?> 
    <li><a href="logout.php">Logout</a></li> 
<?php } else { ?> 
<li><a href="login">Login</a></li>  
<li><a href="register.php">Register</a></li>  
<?php } ?> 
</ul> 
+0

сеанс запущен на connection.php – Phoenix

+0

вы можете разместить свой html? –

+0

header ('Местоположение:' .'index.php '); измените его .. –

Смежные вопросы