刷新成员页面时会话ID丢失

时间:2013-06-21 20:28:39

标签: php pdo

我创建了一个检查登录的成员页面,其中包含一个注销按钮 - 请参阅下面的代码。已开发的函数“DBLoggedin()”的代码是从站点“http://www.phpro.org/tutorials/Basic-Login-Authentication-with-PHP-and-MySQL.html - 用于登录用户的测试”部分复制的。

我第一次登录后,下载代码的会员页面在我加载时始终有效。当我刷新此页面时,它似乎丢失了会话ID信息,因为它报告“您必须登录才能访问此页面”。但是,当我在下面的代码中删除带有session_destroy()的'button onclick'行时,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>

1 个答案:

答案 0 :(得分: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();