PHP - форма входа не работает в IE8 - PullRequest
1 голос
/ 09 марта 2011

Я только что обнаружил довольно раздражающую проблему IE8, затрагивающую страницу входа в систему, с которой я работаю.Форма входа работает правильно в FF (3.6 - MAC & PC), Chrome, Safari, но делает эквивалент обновления, когда вы отправляете UN / PW в IE8.Нет ошибок, просто пустая форма, которая смотрит мне в лицо.

PHP-код на странице входа в систему:

<?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 = '';

?>

Код для входа в систему в '(панель) страницы:

<?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;
}
?>

Наконец, код формы:

<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

1 Ответ

0 голосов
/ 09 марта 2011

IE не передает submit=Login только передавая координаты для кнопки изображения (значения submit.x и submit.y).

Вместо этого сохраните скрытый ввод:

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

А в вашем коде PHP:

if($_POST['submitaction']=='Login')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...