0

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

第一次登录后,带有以下代码的会员页面在我加载时总是有效。然后当我刷新此页面时,它似乎丢失了会话 ID 信息,因为它报告“您必须登录才能访问此页面”。但是,当我在下面的代码中使用 session_destroy() 删除“按钮 onclick”行时,成员页面总是可以正常工作。

我应该如何在下面的代码中实现注销功能,以便刷新页面不会破坏会话信息?或者刷新时破坏会话信息的代码中是否存在另一个错误?

请您的帮助。先感谢您

会员页面代码:

<?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>
4

1 回答 1

0

听起来像是<?php Logout();?>在调用 session_destroy()。您应该做的是链接到一个注销页面,该页面调用Logout(). HTML/JS 不能调用 PHP 函数,它们只能调用 JS 函数和加载 URL。

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

注销.php:

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

Logout();
于 2013-06-21T20:35:21.480 回答