1
我剛剛發現了一個令人討厭的IE8問題,它影響到我正在使用的登錄頁面。登錄表單在FF(3.6 - MAC & PC),Chrome,Safari中正常工作,但是在IE8中提交UN/PW時會進行刷新。沒有錯誤,只是一張空白的表格,看着我的臉。在登錄頁面上PHP - 登錄表格無法在IE8中工作
PHP代碼:
<?php
session_name('tzLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
error_reporting(E_ALL^E_NOTICE);
define('INCLUDE_CHECK',true);
include 'includes/connect.php';
if(isset($_GET['logoff']))
{
$_SESSION = array();
session_destroy();
header("Location: login.php");
exit;
}
?>
最後,表單代碼:上的 '儀表盤'(着陸)頁面
<?php
define('INCLUDE_CHECK',true);
include 'includes/connect.php';
session_name('tzLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
if($_SESSION['id'] && !isset($_COOKIE['tzRemember']) && !$_SESSION['rememberMe'])
{
$_SESSION = array();
session_destroy();
}
if(isset($_GET['logoff']))
{
$_SESSION = array();
session_destroy();
header("Location: login.php");
exit;
}
if($_POST['submit']=='Login')
{
$err = array();
if(!$_POST['username'] || !$_POST['password'])
$err[] = 'Sorry, all the fields must be completed.';
if(!count($err))
{
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['password'] = mysql_real_escape_string($_POST['password']);
$_POST['rememberMe'] = (int)$_POST['rememberMe'];
$row = mysql_fetch_assoc(mysql_query("SELECT id,usr,permission,fullName FROM adidas_members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
if($row['usr'])
{
$_SESSION['usr']=$row['usr'];
$_SESSION['id'] = $row['id'];
$_SESSION['fullName'] = $row['fullName'];
$_SESSION['permission'] = $row['permission'];
$_SESSION['rememberMe'] = $_POST['rememberMe'];
setcookie('tzRemember',$_POST['rememberMe']);
}
else $err[]='Opps, wrong username and/or password.';
}
if($err)
$_SESSION['msg']['login-err'] = implode('<br />',$err);
header("Location: dashboard.php");
exit;
}
else {
}
$script = '';
?>
登錄相關的代碼
<form action="" method="post" class="contactForm" id="loginForm">
<?php
if($_SESSION['msg']['login-err'])
{
echo '<div class="error">'.$_SESSION['msg']['login-err'].'</div>';
unset($_SESSION['msg']['login-err']);
}
?>
<table class="loginTable" cellspacing="0">
<tr>
<th width="50"><label for="username">Username:</label></th>
<td><input type="text" name="username" id="username" class="validate[required] textBox" /></td>
</tr>
<tr>
<th><label for="password">Password:</label></th>
<td><input type="password" name="password" id="password" class="validate[required] textBox" /></td>
</tr>
<tr>
<th></th>
<td style="padding-top:5px;"><input type="image" src="images/button_login.gif" alt="Login" name="submit" value="Login" /><span class="remember"><input name="rememberMe" id="rememberMe" type="checkbox" checked="checked" value="1" />Remember me</span></td>
</tr>
</table>
</form>
我唯一能想到/發現的是IE8不能很好地處理cookie。也就是說,我查看了哪些cookies正在設置中,並且我被告知tzLogin是(有一個很久的失效日期)。
注:我的登錄頁面是基於關閉此>http://tutorialzine.com/2009/10/cool-login-system-php-jquery/
希望有人能與挫折感幫助!
rrfive
輝煌!謝謝@theScrumMeister! – rrfive
這是一個正確的解決方案,儘管我會選擇javascript解決方案,因爲從長遠來看,這不是一件容易的事情。 只在IE瀏覽器上注入隱藏的輸入,也不會污染其他理智瀏覽器的DOM。 漸進式破壞。 – twicejr