2014-02-20 6 views
0

Я сделал вариант сброса пароля. Пользователи могут заполнить свой адрес электронной почты, и электронное письмо будет отправлено на адрес. Электронная почта содержит URL-адрес, в котором пользователь может ввести новый пароль. Некоторые валидации и санация сделаны и представлены в базу данных.Пустое поле ввода заполняется

В обеих моих формах у меня есть поле ввода с display:none. Если это поле имеет значение, при отправке формы будет возвращена ошибка. Я сделал это, чтобы предотвратить заполнение формы роботами.

Первая форма, в которой пользователь заполняет свой адрес электронной почты, отправляется без каких-либо ошибок. Однако, когда я заполняю новый пароль и отправляю, я получаю сообщение об ошибке, связанное с полем ввода, с display:none.

Странно, что это происходит только на одном компьютере. Я тестировал это на одном компьютере с Firefox и Safari, работал отлично. На другом компьютере Safari отлично работает, Firefox возвращает ошибку. Я проверил автоматическую информацию, которую можно было заполнить, но ничего не нашел.

Мой код:

if(!empty($_POST['email'])) { 
    echo "Failure. 
    Click <a href=\"registration.php\">here</a> to return."; 
} 

<form action="password_lost.php?t=<?php echo $_GET['t'] . "&e=" . $_GET['e']; ?>" method="POST"> 
     <input type="text" class="email" style="display:none;" name="email" value="" /> 
     <input type="password" name="password" size="30"> 
     <input type="submit" name="reset" value="Submit" /> 
</form> 

$_GET['t'] = a token 
$_GET['e'] = the emailaddress 

Как это возможно, что это происходит только с одним браузером, только с одной формой.

+0

Возможно, браузер настроен на автоматическое заполнение паролей. Удалите сохраненный пароль с этой машины. –

+0

Функциональность автозаполнения браузера? – ncrocfer

+0

Вам нужно будет указать нам код на стороне сервера ... – superphonic

ответ

1

Попробуйте очистить кеш браузеров и установить автозаполнение в выключенное.

Firefox: Для паролей выберите «Редактировать»> «Настройки»> «Конфиденциальность» & «Безопасность»> «Пароли» и снимите флажок «запомнить пароли». Обратите внимание, что пароли могут храниться в зашифрованном формате.

+0

Проблема была в самом деле в кэше и в записи пароля в Firefox. Благодаря! – Nijn

+0

никаких проблем, как сделать обновление кеша использовать 'CTRL + F5' @ Больше узнать о обновлениях кеш-памяти и браузерах см. Ответ на этот пост: http://superuser.com/questions/220179/how-can-i- do-a-cache-refresh-in-google-chrome – Bjorn9000

0

Я не знаю, почему браузеры ведут себя по-другому здесь, но почему бы вам не добавить autocomplete="off"? Вроде так:

<input type="text" class="email" style="display:none;" name="email" value="" autocomplete="off" /> 
+0

Это исправил мою проблему, но autocomplete - это атрибут HTML 5, и я не хочу полагаться на это. Спасибо за ваш ответ :) – Nijn

0

Попробуйте изменить эту строку

if(!empty($_POST['email'])) { 

Для этого:

if($_POST['email']) { 

Также я хотел бы сделать print_r($_POST), так что вы можете увидеть, что представляется по форме. Посмотрите, какие изменения передаются на основе браузера и ПК.

+0

Действительно ли это был бы хороший способ отладки скрытого поля.Это проблема с кешем, и я изменю линию, как вы сказали, намного эффективнее. – Nijn

Смежные вопросы