2011-03-09 22 views
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がクッキーをうまく処理しないと私が思いつく/見つけられる唯一のことです。つまり、私はどのクッキーが設定されているかを確認するためにチェックして、私はtzLoginは(年齢の古い有効期限がある)と言います。

注:私のログインページでは、この欲求不満を助けることができる誰かを願ってhttp://tutorialzine.com/2009/10/cool-login-system-php-jquery/

>オフこの基づいています!

rrfive

答えて

0

IEは、あなたの画像ボタン(submit.xsubmit.y値)の座標を渡すsubmit=Loginを渡していません。

ストア代わりに隠し入力:

<input type="hidden" name="submitaction" value="Login" /> 

そして、あなたのPHPコード内:

if($_POST['submitaction']=='Login') 
+0

ブリリアント!ありがとう@theScrumMeister! – rrfive

+0

これは正しい解決策ですが、私はjavascriptの解決策を考えていますが、長期的には面倒さが少なくて済むからです。 IEのみで隠れた入力を注入すると、他の正常なブラウザのDOMもダーティになりません。 プログレッシブ破壊。 – twicejr

関連する問題