HTML-форма, представляющая данные только для второго представления для определенных браузеров

Вопрос:

У меня есть простая страница входа в систему, которая показывает раздел входа имени пользователя и пароля и при нажатии кнопки входа в систему данные формы отправляются обратно на страницу для обработки. Если данные действительны и они успешно вошли в систему, они направляют их на домашнюю страницу, если они не отображают их снова в окне входа в систему и сообщают им, что они сделали неправильно (неправильный пароль, пустое поле и т.д.).

Моя проблема в том, что для некоторых браузеров (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);

Ответ №1

Решение от OP.

Переменные были отправлены как строчные буквы, несмотря на то, что они были правильными.

Решение. Никогда не помещайте заглавные буквы в имена элементов формы.

Оцените статью
TechArks.Ru
Добавить комментарий