HTML表单仅在某些浏览器的第二次提交时提交数据

时间:2013-07-05 14:43:57

标签: php html

我有一个显示用户名和密码登录部分的简单登录页面,当按下登录按钮时,表单数据会被发送回页面进行处理。如果数据有效并且他们已成功登录,则会将其定向到主页,否则会再次向他们显示登录屏幕并告诉他们他们做错了什么(密码不正确,空字段等)。

我的问题是,对于某些浏览器(Chrome和Opera),需要提交两次表单才能设置数据(字面设置,我已使用isset,empty和amp; is_null检查进行了检查)。

我已经读过在某些浏览器(Chrome& IE)之前存在问题,但我发现的唯一其他解决方案是使用javascript来传递信息。我能做些什么来使表格更“浏览器友好”吗?

更新1

这是表格,它是你能得到的基本形式,没什么特别的。

<form action="loginpage.php" method="POST">
Username: <input type="text" name="Username" autofocus="autofocus" />
<br/>
Password: <input type="password" name="Password" />
<br/>
<input type="submit" name="submit" />
</form>

更新2

PHP代码

if (isset($_POST['submit']))
{
    if ($_POST['Username']=="" || $_POST['Password']=="")
    {
        echo '<script type="text/javascript">';
        echo "window.alert('You did not fill in a required field.')";
        echo "</script>";
    }
    else
    {
        $username = $_POST['Username'];
        $password = $_POST['Password'];

        $sql = "SELECT * FROM Logins WHERE `Username` = '$username'";
        $validate = mysql_query($sql);

        while ($check = mysql_fetch_array($validate))
        {
            if ($password != $check['Password'])
            {
                echo "<script type='text/javascript'>";
                echo "window.alert('password was incorrect.')";
                echo "</script>";
            }
            else
            {
                header("Location: streaming/videosearch.php?order=dated&q=*");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

尝试在提交按钮中添加value属性。在我看来,即使没有空白value,某些浏览器也可能不会在POST中发回提交按钮:

<input type="submit" value="login" name="submit" />

另外,尝试打印$_POST超全局的内容以帮助调试:

print_r($_POST);

答案 1 :(得分:0)

OP解决方案。

尽管是Propercase,变量仍以小写形式发送。

解决方案: 切勿在表单元素的名称中加上大写字母。