2015-08-24 4 views
0

Я начал сессию конфигурации страницы, а затем $_SESSION['logged_out'] = 1; и на индексной странице, что:эхо Don `T показать, когда использование не устанавливается, глобальные переменные

if(isset($_SESSION['logged_out'])) 
{ 
    echo "You have been logged out !"; 
    unset($_SESSION['logged_out']); 
} 

Но эхо не workig, как снята с охраны находится перед ним. И я не понимаю, почему, пожалуйста, помогите мне. Редакция: Config Страница:

<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL); 
ob_start(); 
session_start(); 
include 'connection.php'; 
include 'functions.php'; 

$logged_in = 0; 
if(isset($_SESSION['username']) && isset($_SESSION['password'])) 
{ 
    $username = sec($link, $_SESSION['username']); 
    $password = sec($link, $_SESSION['password']); 
    $udata = get_row($link, "SELECT * FROM accounts WHERE Username= '$username' && Password= MD5('$password')"); 
    if(isset($udata['ID'])) 
    { 
     $logged_in = 1; 
     if(isset($_GET['logout'])) 
     { 
      unset($_SESSION['username']); 
      unset($_SESSION['password']); 
      $_SESSION['logged_out'] = "1"; 
      mysqli_query($link, "UPDATE accounts SET rpgon = '0' WHERE Username = '$username'"); 
      header('location: index.php'); 
     } 
    } 
} ?> 

Главная страница:

if(isset($_SESSION['logged_out'])) 
{ 
    echo "You have been logged out !"; 
    unset($_SESSION['logged_out']); 
}?> 

Это он ...

+0

Что вы получаете, когда говорите 'var_dump ($ _ SESSION)'? Вы видите 'logged_out' там? – Jeff

+0

в любом случае я бы отменил логику там, чтобы иметь var 'logged_in' и проверить, все ли он там. – Jeff

+0

Делает ли что-нибудь * шоу? Вы получаете какие-либо ошибки в журнале? – James

ответ

0

Если echo не показывает ничего, потому что состояние if оценивается в false , Это означает, что $_SESSION['logged_out'] не установлен.

+0

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

0

На каждой странице, которая использует $_SESSION, вы должны указать start_session(). Фактически, если вы используете $ _SESSION в любом месте вашего сайта, лучше всего начать его на всех ваших страницах.

Так добавить start_session() только после первого <?php, чтобы убедиться, что он всегда запускается на всех страницах

<php 
start_session(); 

. . . 

if(isset($_SESSION['logged_out'])) 
{ 
    echo "You have been logged out !"; 
    unset($_SESSION['logged_out']); 
} 

Добавлено после получения дополнительной информации данного

Я думаю, что это может быть один из ваших проблем

$udata = get_row($link, 
       "SELECT * FROM accounts 
        WHERE Username= '$username' 
        && Password= MD5('$password')" 
       ); 

&& должен быть AND, тогда этот запрос должен возвращать результат. Вы действительно должны проверять статус результата из всех команд запроса так:

<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL); 
session_start(); 

ob_start(); 

include 'connection.php'; 
include 'functions.php'; 

$logged_in = 0; 
if(isset($_SESSION['username']) && isset($_SESSION['password'])) 
{ 
    $username = sec($link, $_SESSION['username']); 
    $password = sec($link, $_SESSION['password']); 
    $udata = get_row($link, "SELECT * FROM accounts 
          WHERE Username= '$username' 
           AND Password= MD5('$password')" 
        ); 

    // this would have shown the error in the sql query 
    // if it had been here before 
    if (! $udate) { 
     echo mysqli_error($link); 
     exit; 
    } 


    // now this if will be executed 
    // although this if is probably no longer required 
    if(isset($udata['ID'])) 
    { 
     $logged_in = 1; 
     if(isset($_GET['logout'])) 
     { 
      unset($_SESSION['username']); 
      unset($_SESSION['password']); 
      $_SESSION['logged_out'] = "1"; 
      mysqli_query($link, "UPDATE accounts SET rpgon = '0' WHERE Username = '$username'"); 
      header('location: index.php'); 

      // you should also follow a header() call with an exit; 
      exit; 
     } 
    } 
} 
?> 
+0

У меня есть это в config.php странице, где находятся конфигурации, и я использую это на каждой странице, например, включая. –

+0

Почему DownVote. Я ответил на это до того, как OP сказал нам, что использовал 'start_session()'. Предложите удаление, но нисходящее? – RiggsFolly

+0

Что такое downvote? вы знаете, где проблема? –