1

良い一日、

私がつなぎ合わせてきた単純なログインシステムで問題が発生しています。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 {
  }
?>

何か案は?

次のエラーが表示されます。

警告: 不明: open(/var/php_sessions/sess_7a91f7a2f211673ba26734a04f96586b, O_RDWR) に失敗しました: No such file or directory (2) in Unknown on line 0 警告: 不明: セッション データ (ファイル) の書き込みに失敗しました。行 0 の不明で、session.save_path の現在の設定 (/var/php_sessions) が正しいことを確認してください。

4

1 に答える 1

0

setcookie(); に 6 番目のパラメーターを追加することで問題を解決しました。Firefox、Chrome、および Opera はすべて、6 番目のフィールドをドメイン名に自動的に設定するように見えます。IE10 はこれを行わず、Cookie を処理しようとすると、IE10 がないと失われるようです。これは、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");
于 2013-11-09T17:28:10.227 に答える