session_destroy();使用php 5.3.21在服务器上无法正常工作

时间:2013-03-12 15:55:08

标签: php mysql

对不起家伙,如果这是一个冗长的帖子,但我需要问这个问题。好吧,我已经在几台服务器上尝试过这个代码而且它无法正常工作!

我一直在尝试将我的PHP脚本从mysql更改为mysqli,但失败的程度远远超过目前为止的成功。

注册表格工作正常,它会将记录添加到mysql数据库,它也会向用户发送一封电子邮件,没有任何错误。我在所有页面上都有这个,以确保我没有收到任何错误:

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

登录表单也可以正常使用,它会将用户登录到他们的帐户。

但这是问题,以及我一直面临的几个问题。

1-页面顶部有一个简单的顶部链接,如果用户没有登录,将显示登录和注册,并且一旦登录就会显示他们的用户名和登出链接。这似乎是它的头脑拥有,因为它在一台服务器上运行,而在另一台服务器上不起作用。通过工作我的意思是,即使用户已登录,它仍将保持登录和注册链接。

2-有一个logout.php文件,该文件应该记录用户并结束会话。但这又有自己的想法。在较旧的PHP服务器上它可以正常工作但如果我再次刷新用户帐户URL上的页面,它将自动重新登录用户。无论我尝试使用哪个浏览器以及清除缓存多少次都没关系和饼干。它仍会在页面刷新时将用户重新登录到帐户中。

另外,logout.php文件在php版本5.3.21的服务器上不起作用,并且不会将用户从他们的帐户中记录下来!!

这是member.php代码:

<?php 
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>
<?php
session_start(); // Must start session first thing
// See if they are a logged in member by checking Session data
$toplinks = "";
if (isset($_SESSION['id'])) {
    // Put stored session variables into local php variable
    $userid = $_SESSION['id'];
    $username = $_SESSION['username'];
    $toplinks = '<a href="member.php?id=' . $userid . '">' . $username . '</a> &bull; 
    <a href="member.php">Account</a> &bull; 
    <a href="logout.php">Log Out</a>';
} else {
    $toplinks = '<a href="join_form.php">Register</a> &bull; <a href="login.php">Login</a>';
}
?>
<?php
// Use the URL 'id' variable to set who we want to query info about
$id = preg_replace("[^0-9]", "", $_GET['id']); // filter everything but numbers for security
if ($id == "") {
    echo "Missing Data to Run";
    exit();
}
//Connect to the database through our include 
include_once "config/connect.php";
// Query member data from the database and ready it for display
$sql = "SELECT * FROM members WHERE id='$id' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$count = mysqli_num_rows($query);
if ($count > 1) {
    echo "There is no user with that id here.";
    exit(); 
}
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$username = $row["username"];
$_SESSION['username'] = $username;
$userid = $row["id"];
$_SESSION['id'] = $userid;
// Convert the sign up date to be more readable by humans
$signupdate = strftime("%b %d, %Y", strtotime($row['signupdate']));
}
?>

这是logout.php文件:

<?php
session_start(); 
session_destroy();
if( isset($_SESSION['id'])){ 
header("location: index.php");
} else {
exit('<h2>Could not log you out, sorry the system encountered an error.</h2>');
} 
?> 
<html>
<body>
<?php echo "$msg"; ?><br>
<p><a href="index.php">Click here</a> to return to our home page </p>
</body>
</html>

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

session_destroy()不会破坏会话变量。你可以使用“$ _SESSION = array();”如果你想这样做 最诚挚的问候

答案 1 :(得分:-1)

尝试:

session_destroy();
session_write_close();