だから、私はこのウェブサイトに取り組んでいます:
http://www.funkydictionary.com/signup.php
そして、私はこれまでに経験したことのない非常に奇妙な問題に遭遇しました。ログインページとサインアップページがあり、サーバー言語は PHP です。セッションを介してエラーと成功のメッセージを渡します。ログインまたは登録するには、成功または失敗の $_SESSION が設定されます。
そして、エラー/成功が表示されるサインアップ ページにリダイレクトされます。
奇妙な理由で、セッションを設定できず、ブラウザが更新されるまでファビコンも表示されないことに気付きましたか?
これが発生すると、すべて正常に動作しますが、ブラウザが閉じられ、それによってすべてのセッションが設定解除された場合、同じ問題が発生しますか?
これはサーバー構成と関係があると思いますか?
どんな助けでも大歓迎です
編集1:
これは、すべてのページの上部に含まれています。
<?php
session_start();
if(isset($_SESSION['login']) && $_SESSION['login'] == 1) {
$error_message = "";
$success_message = "";
$now = time(); // checking the time now when home page starts
if($now > $_SESSION['expire'])
{
session_unset();
session_destroy();
global $loggedIn;
$loggedIn = null;
$error_message = 'Your session has expired, please login again.<br />';
session_start();
$_SESSION['error'] = $error_message;
died($success_message, $error_message, '/login.php');
}
else {
global $loggedIn;
$loggedIn = 1;
}
}
?>
編集2:
セッションはいつ/どのように期限切れになりますか?
ログイン時に、セッション ['start'] = time(); を設定しました。['expire'] = 開始 + 60*60
ここにコードがあります
session_start();
$_SESSION['login'] = "1";
$_SESSION['username'] = $row['username'];
$_SESSION['start'] = time();// taking now logged in time
$_SESSION['expire'] = $_SESSION['start'] + (60 * 60) ; // ending a session in 30 minutes from the starting time
global $loggedIn;
$loggedIn = 1;
$success_message = 'You have logged in as ' . $row['username'];
died($success_message, $error_message, '/login.php');