session_destroy(); $ _SESSION = array();和$ unset($ _ SESSION);不适合IE10?

时间:2013-11-08 22:14:02

标签: php mysql session cookies

美好的一天,

我在使用一个简单的登录系统时遇到了一些麻烦。它在Firefox和Chrome中运行完美,但对于我的生活,我似乎无法在Windows 8上的IE10中结束会话。

这是我用于注销的代码。我在这里尝试了一些变化,似乎没什么用。

    <?
session_start(); 
include("database.php");
include("login.php");

//deletes cookies by setting the time in the past, negative to what was done while creating the cookie
if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
   setcookie("cookname", "", time()-60*60*24*100, "/");
   setcookie("cookpass", "", time()-60*60*24*100, "/");
}

?>

<html>
<title>Logging Out</title>
<body>

<?

if(!$logged_in){
   echo "You are not currently logged in, logout failed. Please click <a href='http://www.website.ca/admin'>here</a> to login.";
}
else{
//Kill session variables (could use some work)
   unset($_SESSION['username']);
   unset($_SESSION['password']);
   $_SESSION = array(); // reset session array
   unset($_SESSION); //new code to unset session array 
   session_destroy();   // destroy session.

   echo "You have successfully <b>logged out</b>. You will be automatically redirected.";
   echo '<script type="text/JavaScript">setTimeout("location.href = \'http://www.website.ca/admin\';",2000);</script>';
}

?>

</body>
</html>

以下是我用于验证页面的代码,我将其作为我想要密码保护的所有页面中的第一行:

<? 
//includes
session_start(); 
include("database.php");
include("login.php");

//chcek if logged in
if (!$logged_in){
 die("You must be logged in to view this page. Click <a href='http://www.website.ca/admin'>here</a> to login.");
} else {
  }
?>

有什么想法吗?

我收到以下错误:

警告:未知:打开(/ var / php_sessions / sess_7a91f7a2f211673ba26734a04f96586b,O_RDWR)失败:第0行的“未知”中没有此类文件或目录(2)警告:未知:无法写入会话数据(文件)。请验证第0行的Unknown中session.save_path的当前设置是否正确(/ var / php_sessions)

1 个答案:

答案 0 :(得分:0)

通过向setcookie()添加第六个参数解决了这个问题; Firefox,Chrome和Opera都会自动将第六个字段设置为您的域名。 IE10不会这样做,并且在尝试处理cookie时似乎没有它就会丢失。这需要在设置cookie时以及尝试修改它时完成。

代码破碎:

   setcookie("cookname", "", time()-60*60*24*100, "/");
   setcookie("cookpass", "", time()-60*60*24*100, "/");

工作代码:

   setcookie("cookname", "", time()-60*60*24*100, "/", "YOURDOMAIN.COM");
   setcookie("cookpass", "", time()-60*60*24*100, "/", "YOURDOMAIN.COM");