0

だから、私はこのウェブサイトに取り組んでいます:

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');
4

1 に答える 1

0

わかりました、修正しました。正確に修正したものはわかりませんが、いくつかの session_start() 入力フォームとセッション エラー処理を変更しました。新しいファビコンのように、ファビコンも更新されているようです。

于 2013-05-03T22:20:52.853 に答える