我有一个简单的登录页面,其中显示了用户名和密码登录部分,当按下登录按钮时,表单数据会被发送回页面进行处理。如果数据有效并且他们成功登录,它会将他们引导到主页,如果不是,它会再次向他们显示登录屏幕,并告诉他们做错了什么(密码不正确、字段为空等)。
我的问题是,对于某些浏览器(Chrome和Opera),表单需要提交两次才能设置数据(实际上,我已经使用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=*");
}
}
}
}
尝试向提交按钮添加value
属性。我突然想到,如果没有一个空白的value
,一些浏览器可能不会在POST中发送回提交按钮:
<input type="submit" value="login" name="submit" />
此外,尝试打印出$_POST
超全局的内容以帮助调试:
print_r($_POST);
OP解决方案。
尽管变量是Propercase,但仍以小写形式发送。
解决方案:不要在表单元素的名称中使用大写字母。