2013-08-08 9 views
0

У меня есть скрипт, который обрабатывает пользователя, а затем направляет его на индексную страницу, где у него есть возможность выйти из системы. Здесь приведен код страницы с индексом:Проверьте, существует ли сеанс

<?php 
session_start(); 
?> 

<html> 
<body> 
    <?php 
    echo 'You are logged in as : '; 
    echo $_SESSION['username']; 
    echo '<p><a href="logout.php">Logout</a></p>'; 
    ?> 
</body> 
</html> 

Если пользователь выходит из системы, он по-прежнему отображает текст. Как я могу проверить, действительно ли сеанс существует и отображает другое сообщение?

IE: Дисплей «Вы не подключены» и ссылку для входа в систему, если пользователь не вошел в систему?

+0

Как использовать IF, чтобы проверить, установлено ли '$ _SESSION ['username']' или нет и приводит ли его к другому сообщению, если это так? 'if session_isvalid показать это еще показать, что' – Prix

+1

Попробуйте 'isset()' или 'session_status' – aug

ответ

1
<?php 
if (isset($_SESSION['username'])) {echo 'You are signed in.';} 
else {echo 'You are not signed in.';} 
?> 
0

(1). Распространенная ошибка пытается завершить сеанс с вне его запуска первого

так что если ваш login.php имеет session_start(); так будет ваш logout.php

, если у вас есть init.php или файл, который включен в стоимость. просто добавьте его там. начало сеанса. , тогда вы можете играть с сеансом всех страниц.

(2). общий скрипт регистрации содержит это

<?php 
session_start(); 
session_destroy(); 
header('Location: index.php'); 

?> 

(3). вы не проверяете сеанс.

<?php 
if (isset($_SESSION['username'])) {echo 'You are signed in.';} 
else {echo 'You are not signed in.';} 
?> 
0

Вы можете проверить, есть ли активный сеанс с помощью

if (session_id == '') { 
    // user logged out 
} else { 
    // user logged in 
} 

Я не 100% уверен, что если session_destroy действительно полностью удалить сессию, хотя. Или же вы можете проверить, если ($ _SESSION [ 'имя пользователя'])

0
<?php 
session_start(); 
?> 

<html> 
<body> 
    <?php 
    if(isset($_SESSION['username'])){ 
     echo "You are logged in as : {$_SESSION['username']}<p><a href='logout.php'>Logout</a></p>"; 
    } 
    ?> 
</body> 
</html> 

Просто unset($_SESSION['username']); выйти из системы.

0

Для выхода из сеанса необходимо выполнить session_destroy, чтобы очистить сеанс.

Затем, как и любая другая переменная в PHP, вы должны проверить, установлено ли это, а затем показать код соответствующим образом.

if (!empty($_SESSION['username']) { 
    echo 'You are logged in as : '.$_SESSION['username']; 
} else { 
    echo 'You are not connected'; 
} 
Смежные вопросы