| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Логин - ф5 |
| Автор: fakeman 28.9.2009, 03:16 | ||
Хеллоу
Работает исправно, вот тока если кто та введёт неверно пасс или логин или .... то он не выдаст моё сообшение об ошибки т.к. в начале странице идёт header а уже потом в середине моя форма с логином... Придётся выбирать между или может кто сможет помочь как сделать что бы после логина нажимая ф5 не выподала окна предупреждением и что бы если введено неверное поле при логине он высвечивал ошибку.. |
| Автор: youri 28.9.2009, 03:21 |
| если понял о чем ты, то http://phpfaq.ru/na_tanke#http |
| Автор: fakeman 28.9.2009, 04:28 |
| youri, это, да понятно.. крч. у меня на сайте сама форма и обраб.код(проверки на лог и пасс, если что то не верно выводитьяс ошиба о том что не перно пасс или лог и т.д.) о логине находиться в середине сайта, значит что бы браузер не выкидывал окно с повторной отправкой надо после того как человек ввёл пасс и лог он обновил страницу, что бы это сделать надо header(.. прописать в самом верху, получаеться.. header вверху сайта а сам код в середине. Значит он не будет выводить мои ошибки о неправельно вводе лог и пасса, но зато при логине не будет появляться от браузера повторной отправки. так ? так... так вот как это обойти? чтобы он при логине-ф5 браузер не кидал окно с повторной отправкой и что бы он выводил ошибки если лог и пасс неверный.. |
| Автор: Ипатьев 28.9.2009, 08:19 |
| По хорошему, надо в любом случае делать "header". Поскольку после неправильного ввода он тоже может нажать ф5. Но спеллчекер надо ставить пользователям этого сайта насильно. может быть правительство выпустит какой-нибудь закон... |
| Автор: youri 28.9.2009, 09:03 | ||||
почему в самом верху?
не важно где код, а где header |
| Автор: Gold Dragon 28.9.2009, 13:01 | ||||||
| вопрос немного скомкан, может не до понял, но у меня вот какая логика.. 1. Проверяем пришли данные из формы ($_POST['password']) 2. Если пришли, то отправляем данные на проверку. 3. Если данные соответствуют всем требованиям, то делаем
4. Если данные не соответствуют, то создаём некую переменную (массив) $error, например,
и выводим форму передав ей переменную $error 5. Если данные из формы не пришли то выводим форму сама форма может выглядеть, например, так
только перед выводом нужно инициализировать переменные, чтоб предупреждения не вывалились |
| Автор: youri 28.9.2009, 13:41 |
| Gold Dragon, Ипатьев и MoLeX на самом деле уже ответили, причем в твоем описании все та же проблема с F5. И зачем делать переадресацию с помощью javascript, если ее можно сделать с помощью header |
| Автор: fakeman 28.9.2009, 13:44 |
| MoLeX, Спасибо выручил Спасибо всем |
| Автор: MoLeX 28.9.2009, 13:47 |
| fakeman, Добавлено через 22 секунды из спасибо шубы не сошьешь |
| Автор: Gold Dragon 28.9.2009, 14:10 | ||
youri, а какая проблема с F5?
Добавлено через 1 минуту и 34 секунды да и проблем нет если у меня что-то вначале выводится |
| Автор: Ипатьев 28.9.2009, 14:30 |
| Это-то и проблема. Что советы даются не по стандарту, а "кому как привычнее". |
| Автор: sTa1kEr 28.9.2009, 14:37 | ||||
Стоит либо сделать редирект на script.php?error=КОД_ОШИБКИ, а по коду ошибки выдавать сообщение, либо записывать сообщение об ошибке в сессию и после редиректа выводить, а затем удалять это сообщение. Ну и http://php.net/outcontrol + http://php.net/header - это будет более правильное решение, чем через javascript. Т.к. во первых будет работать во всех браузерах, в т.ч. с отключенном js. Во вторых не придется отдавать контент. А в третьих будет корректно отрабатывать также для ajax и flash запросов. |
| Автор: Gold Dragon 28.9.2009, 14:51 |
| ну так F5 если я правильно понял нужен чтобы приходящие данные из формы не выполнялись вторично.. Я понимаю если там идёт отсылка запросов в базу или что-то подобное, то однозначно нельзя такое допустить.. А в своём примере я показал что хоть пусть обнаживается, всё равно придёт на форму где нужно ввести данные.. и на этой же форме он увидет ошибки в конкретном поле. Хотя это упрощённый вариант.. Конечно можно сделать отсылку на страницу ошибок, потом вернуть на страницу формы.. Хороший вариант передавать данные через ту же сессию. Но если форма простая или задача у неё простая, то можно и это использовать... ну я это просто игнорирую... Современный сайт без JS это не сайт. этот человек половину не увидит и половина функционала не будет работать поясни, что-то не совсем понял |
| Автор: sTa1kEr 28.9.2009, 15:03 | ||
Одно дело, когда без js не работают дополнительные финтифлюшки и совсем другое когда сайт становится полностью неработоспособным. И потом это наплевательское отношение к пользователю. Сервер отдает клиенту только заголовки, без контента. А в твоем же случае генерируется html(причем не валидный), браузеру приходится его загрузить, распарсить, починить, построить DOM и только затем (если повезет) начать выполнять твой js. В общем, это моветон. |
| Автор: Ипатьев 28.9.2009, 15:04 |
| В данном случае даже сессия не нужна. И сообщать какую бы то ни было информацию о правильности логина и пароля нежелательно. И уж тем более не надо писать пароль в value. |
| Автор: sTa1kEr 28.9.2009, 15:05 | ||||||
Я написал выше как это просто можно решить с помощью редиректа. Добавлено через 4 минуты и 57 секунд Я написал для чего она нужна - для передачи сообщения между запросами. Это простейший способ.
Вы меня удивляете. Много вы видели сервисов, которые бы умалчивали об не успешной авторизации? Добавлено через 9 минут и 23 секунды
Если же речь о том, что не нужно выдавать информацию, что не корректный логин. - Тогда, конечно, согласен. Но общее сообщение о том, что пользователь не был авторизован нужно выдать. |
| Автор: Gold Dragon 28.9.2009, 15:20 | ||||
А вот про контент согласен.. Даже как-то не подумал, что генерится ведь страница Добавлено через 2 минуты и 20 секунд
|
| Автор: sTa1kEr 28.9.2009, 15:38 |
| Прошу прощения за оффтоп. Не представляешь насколько сейчас популярен т.н. веб-серфинг на мобильниках |