Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对于某些浏览器,HTML表单仅在第二次提交时提交数据_Php_Html - Fatal编程技术网

Php 对于某些浏览器,HTML表单仅在第二次提交时提交数据

Php 对于某些浏览器,HTML表单仅在第二次提交时提交数据,php,html,Php,Html,我有一个简单的登录页面,显示用户名和密码登录部分,当按下登录按钮时,表单数据将被发送回页面进行处理。如果数据有效并且他们成功登录,它会将他们引导到主页,如果没有,它会再次显示登录屏幕,并告诉他们做错了什么(密码不正确、字段空白等) 我的问题是,对于某些浏览器(Chrome和Opera),表单需要提交两次才能设置数据(字面上是set,我已经使用isset、empty和is_null检查进行了检查) 我曾经读到,在某些浏览器(Chrome&IE)上曾经出现过这样的问题,但我发现的唯一其他解决方案是使

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

我的问题是,对于某些浏览器(Chrome和Opera),表单需要提交两次才能设置数据(字面上是set,我已经使用isset、empty和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=*");
            }
        }
    }
}
if(isset($\u POST['submit']))
{
如果($\u POST['Username']==“”|$\u POST['Password']==“”)
{
回声';
echo“window.alert('您没有填写必填字段')”;
回声“;
}
其他的
{
$username=$_POST['username'];
$password=$_POST['password'];
$sql=“从登录名中选择*,其中`Username`='$Username';
$validate=mysql\u查询($sql);
while($check=mysql\u fetch\u数组($validate))
{
如果($password!=$check['password']))
{
回声“;
echo“window.alert('密码不正确')”;
回声“;
}
其他的
{
标题(“位置:streaming/videosearch.php?order=dated&q=*”;
}
}
}
}

尝试向提交按钮添加一个
属性。我突然想到,如果没有一个空的
,某些浏览器可能无法在POST中发送“提交”按钮:

<input type="submit" value="login" name="submit" />
解决方案由OP

尽管变量是适当的,但仍以小写形式发送

解决方案:
千万不要在表单元素的名称中使用大写字母。

我能做些什么来让表单更加“浏览器友好”
不知道-不看代码…你能给我们看一下表单代码吗?正如我所说的,它很简单,但我发布了它。那只是表单html,也发布
php
代码。您正在使用并且应该使用。您还容易受到现代API的影响,因为它会使您更容易使用。谢谢,值不是问题所在,但print\r($\u POST)显示,尽管变量是正确的,但变量是以小写形式发送的。以前从没见过,但现在我知道了。
print_r($_POST);