1

Chrome、Safari、または Firefox で表示すると完全に機能するセッション ベースのログイン システムがありますが、Internet Explorer 6、7、8、または 10 (私が試したすべての IE - そしてこれらは 8 台の異なるコンピューターで試行されています)。問題は非常に独特です。最初のログインに成功すると、正常に動作します。ログアウトした場合、または最初の試行でユーザー名/パスワードを間違った場合、何をしても A) 正常にログインできない状態でロックされているように見えます。または B) 次のことを確認するプロンプトが表示されますユーザー名とパスワードを忘れました。

Home.php を更新すると再び機能するため、これはキャッシュと関係があると確信しています。しかし、私はそれを修正する方法を理解できません。私は、メタタグとヘッダー呼び出しを使用してキャッシュを無効にしようとしHeader(Location:)たり、呼び出しを置き換えたり、21600 を超える Cookie の寿命を延ばしたりif ( == TRUE)if (). だから今、私は本当にアイデアがありません。

以下のコード スニペット。

ホーム.php :

<?php
$lifetime=6000;  //100 minutes
session_set_cookie_params($lifetime, '/');
session_start();
setcookie(session_name(),session_id(),time()+$lifetime);

...

if(isset($_SESSION['failedlogin'])) {if ($_SESSION['failedlogin']){?>
<div id="failedlogon"><a href="userreminder.php"><img src="images/loginfail.png" width="193" height="50" alt=""/></a></div>
<?php
}}

...

if($_SESSION['validlogin'] == TRUE) {  //if logged in redirect to main.php
printf("<script>location.href='main.php'</script>");

login.php :

<?php
$lifetime=6000;  //100 minutes
session_set_cookie_params($lifetime, '/');
session_start();
setcookie(session_name(),session_id(),time()+$lifetime);
if ($_POST['loginsubmit']){
$query = mysql_query("SELECT * FROM users WHERE UPPER ( UserName ) = UPPER('$user') and Password='$pass' LIMIT 1")  or die(mysql_error());
$userdata = mysql_fetch_array($query);
$num_rows = mysql_num_rows($query);
if($num_rows == 1)
    {
    $_SESSION['validlogin'] = TRUE;
    $_SESSION['username'] = $userdata['UserName'];
    $_SESSION['userid'] = $userdata['ID'];
    $_SESSION['failedlogin'] = FALSE;
    unset($_SESSION['failedlogin']);
    }else{
    $_SESSION['validlogin'] = FALSE;
    unset($_SESSION['validlogin']);
    $_SESSION['failedlogin'] = TRUE;
    }
}
printf("window.location.replace('Home.php')");

main.php :

<?php
$lifetime=6000;  //100 minutes
session_set_cookie_params($lifetime, '/');
session_start();
setcookie(session_name(),session_id(),time()+$lifetime);

    if ($_SESSION['validlogin'] == '' || $_SESSION['validlogin'] == FALSE){  //not a page to be on if you're not logged in.
        header('Location: Home.php'); 
        die();
    }

私は本当にこれについて掲示板で価値のあるものを見つけることができません. ログインに失敗した後にセッション Cookie が変更されているかどうかを確認しようとしましたが、それらは一定のままであるように見えました。

4

0 に答える 0