2013-06-21 3 views
0

Я создал страницу-член, которая проверяет наличие входа в систему и включает в себя кнопку выхода из системы - см. Код ниже. Код для разработанной функции «DBLoggedin()» скопирован с сайта «http://www.phpro.org/tutorials/Basic-Login-Authentication-with-PHP-and-MySQL.html - раздел« Тестирование для зарегистрированных пользователей ».Идентификатор сеанса, потерянный при обновлении страницы участника

Впервые после входа в систему страница с кодом ниже всегда работает, когда я ее загружаю. Когда я обновляю эту страницу, она, похоже, теряет информацию о идентификаторе сеанса, так как она сообщает «Вы должны войти в систему для доступа к этой странице». Однако, когда я удаляю строку «button onclick» с помощью session_destroy() в приведенном ниже коде, страница-член всегда работает нормально.

Как реализовать функцию выхода из системы в приведенном ниже коде, чтобы обновление страницы не разрушало информацию о сеансе? Или существует ошибка anotrher в коде, который разрушает информацию о сеансе при обновлении?

Пожалуйста, ваша помощь. Спасибо заранее

Кодекса memberpage:

<?php 

/*** begin the session ***/ 
session_start(); 

//! include lib after session_start() 
include 'test_ecis_lib_pdo.php'; 

/*** mysql hostname ***/ 
$mysql_hostname = 'localhost'; 

/*** mysql username ***/ 
$mysql_username = 'root'; 

/*** mysql password ***/ 
$mysql_password = 'xxxxx'; 

/*** database name ***/ 
$mysql_dbname = 'xxxx'; 

if(DBLoggedin($mysql_hostname, $mysql_username, $mysql_password,$mysql_dbname)) 
{ 
echo "<br> still logged in"; 
} 
else 
{ 
echo "<br> you are not authorised to access this page"; 
echo "<br error: ".$message; 
} 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Members Only Page</title> 


</head> 

<body> 

<h2><?php echo $message; ?></h2> 

<button onclick="<?php Logout();?>"> Logout</button> 

</body> 
</html> 

ответ

0

Это звучит как <?php Logout();?> зовет session_destroy(). То, что вы должны делать, - это ссылка на страницу выхода, которая вызывает Logout(). HTML/JS не может вызывать функции PHP, они могут вызывать только функции JS и загружать URL-адреса.

<button onclick="document.location='/logout.php';"> Logout</button> 

logout.php:

<?php 
function Logout() { 
    session_destroy(); 
    echo "You have been logged out!"; 
} 

Logout(); 
+0

большое спасибо, он работал – user165259

+0

Нет проблем (!). Не забудьте принять и проголосовать;) – SpenserJ

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