Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Логин - ф5 
V
    Опции темы
fakeman
Дата 28.9.2009, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Хеллоу smile Как тока человек логинеться то если сразу сделать обновление страницы то выскачит табличка "To display this page, the application must send information that will reapeat ..." бла бла бла.. так вот. как это можно устранить ? Я сделал такой метод 

Код

if ($_POST['password'])
{
    if($_GET['lang']=='en'){
        header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?lang=en");
    }
    if($_GET['lang']=='ru'){
        header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?lang=ru");
    }
}


Работает исправно, вот тока если кто та введёт неверно пасс или логин или .... то он не выдаст моё сообшение об ошибки т.к. в начале странице идёт header а уже потом в середине моя форма с логином... Придётся выбирать между или может кто сможет помочь как сделать что бы после логина нажимая ф5 не выподала окна предупреждением и что бы если введено неверное поле при логине он высвечивал ошибку.. smile
PM MAIL   Вверх
youri
Дата 28.9.2009, 03:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



если понял о чем ты, то вот
PM   Вверх
fakeman
Дата 28.9.2009, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



youri, это, да понятно.. крч.
у меня на сайте сама форма и обраб.код(проверки на лог и пасс, если что то не верно выводитьяс ошиба о том что не перно пасс или лог и т.д.) о логине находиться в середине сайта, значит что бы браузер не выкидывал окно с повторной отправкой надо после того как человек ввёл пасс и лог он обновил страницу, что бы это сделать надо header(.. прописать в самом верху, получаеться.. header вверху сайта а сам код в середине. Значит он не будет выводить мои ошибки о неправельно вводе лог и пасса, но зато при логине не будет появляться от браузера повторной отправки. так ? так... так вот как это обойти? чтобы он при логине-ф5 браузер не кидал окно с повторной отправкой и что бы он выводил ошибки если лог и пасс неверный..
PM MAIL   Вверх
MoLeX
Дата 28.9.2009, 05:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(fakeman @  28.9.2009,  03:16 Найти цитируемый пост)
вот тока если кто та введёт неверно пасс или логин или .... то он не выдаст моё сообшение об ошибки т.к. в начале странице идёт header а уже потом в середине моя форма с логином...

Код

if ($_POST['password'] == 'pass')
{
...........
}
else
{
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?lang=ru&error=1");
}


if( $_GET['error'] = 1 )
   $error = 'Неправильный пасс';


идею понял?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 28.9.2009, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



По хорошему, надо в любом случае делать "header". Поскольку после неправильного ввода он тоже может нажать ф5.

Но спеллчекер надо ставить пользователям этого сайта насильно. может быть правительство выпустит какой-нибудь закон...
PM MAIL   Вверх
youri
Дата 28.9.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(fakeman @  28.9.2009,  04:28 Найти цитируемый пост)
что бы это сделать надо header(.. прописать в самом верху, получаеться

почему в самом верху?
Цитата(fakeman @  28.9.2009,  04:28 Найти цитируемый пост)
header вверху сайта а сам код в середине. Значит он не будет выводить мои ошибки о неправельно вводе лог и пасса

не важно где код, а где header
PM   Вверх
Gold Dragon
Дата 28.9.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



вопрос немного скомкан, может не до понял, но у меня вот какая логика..

1. Проверяем пришли данные из формы ($_POST['password'])
2. Если пришли, то отправляем данные на проверку.
3. Если данные соответствуют всем требованиям, то делаем
Код

print "<script>document.location.href='адрес_куда_нужно_перейти'</script>";exit;

4. Если данные не соответствуют, то  создаём некую переменную (массив) $error, например, 
Код

$error['pas'] = "пароль не верный";
$error['log'] = "логин не верный";

и выводим форму передав ей переменную $error
5. Если данные из формы не пришли то выводим форму

сама форма может выглядеть, например, так
Код

echo <<<EOF
<form action="index.php?pages=r2" method="post" name="fiew">
<div>{$error['log']}
<br />Логин: <input type="text" size="50" name="log" value="{$info['log']}">
</div>
<div>{$error['pas']}
<br />Пароль: <input type="text" size="50" name="pas" value="{$info['pas']}">
</div>
<input type="submit" value="Отправить" name="fiew">
</form>

только перед выводом нужно инициализировать переменные, чтоб предупреждения не вывалились smile

Это сообщение отредактировал(а) Gold Dragon - 28.9.2009, 13:03


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
youri
Дата 28.9.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Gold Dragon, Ипатьев и MoLeX на самом деле уже ответили, причем в твоем описании все та же проблема с F5. И зачем делать переадресацию с помощью javascript, если ее можно сделать с помощью header
PM   Вверх
fakeman
Дата 28.9.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



MoLeX, Спасибо выручил smile

Спасибо всем smile
PM MAIL   Вверх
MoLeX
Дата 28.9.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



fakeman,  smile

Добавлено через 22 секунды
из спасибо шубы не сошьешь


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 28.9.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



youri, а какая проблема с F5?
Цитата(youri @  28.9.2009,  14:41 Найти цитируемый пост)
И зачем делать переадресацию с помощью javascript, если ее можно сделать с помощью header 
не знаю, мне так привычнее smile

Добавлено через 1 минуту и 34 секунды
да и проблем нет если у меня что-то вначале выводится


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 28.9.2009, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Это-то и проблема.
Что советы даются не по стандарту, а "кому как привычнее". 
PM MAIL   Вверх
sTa1kEr
Дата 28.9.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Gold Dragon @  28.9.2009,  14:01 Найти цитируемый пост)
4. Если данные не соответствуют, то  создаём некую переменную (массив) $error, например, 

Цитата(Ипатьев @  28.9.2009,  09:19 Найти цитируемый пост)
По хорошему, надо в любом случае делать "header". Поскольку после неправильного ввода он тоже может нажать ф5.


Стоит либо сделать редирект на script.php?error=КОД_ОШИБКИ, а по коду ошибки выдавать сообщение, либо записывать сообщение об ошибке в сессию и после редиректа выводить, а затем удалять это сообщение.

Ну и http://php.net/outcontrol + http://php.net/header - это будет более правильное решение, чем через javascript. Т.к. во первых будет работать во всех браузерах, в т.ч. с отключенном js. Во вторых не придется отдавать контент. А в третьих будет корректно отрабатывать также для ajax и flash запросов.
PM MAIL   Вверх
Gold Dragon
Дата 28.9.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



ну так F5 если я правильно понял нужен чтобы приходящие данные из формы не выполнялись вторично.. Я понимаю если там идёт отсылка запросов в базу или что-то подобное, то однозначно нельзя такое допустить.. А в своём примере я показал что хоть пусть обнаживается, всё равно придёт на форму где нужно ввести данные.. и на этой же форме он увидет ошибки в конкретном поле.

Хотя это упрощённый вариант.. Конечно можно сделать отсылку на страницу ошибок, потом вернуть на страницу формы.. Хороший вариант передавать данные через ту же сессию. Но если форма простая или задача у неё простая, то можно и это использовать... smile
Цитата(sTa1kEr @  28.9.2009,  15:37 Найти цитируемый пост)
в т.ч. с отключенном js
ну я это просто игнорирую... Современный сайт без JS это не сайт. этот человек половину не увидит и половина функционала не будет работать smile

Цитата(sTa1kEr @  28.9.2009,  15:37 Найти цитируемый пост)
Во вторых не придется отдавать контент. 
поясни, что-то не совсем понял



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
sTa1kEr
Дата 28.9.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Gold Dragon @  28.9.2009,  15:51 Найти цитируемый пост)
ну я это просто игнорирую... Современный сайт без JS это не сайт. этот человек половину не увидит и половина функционала не будет работать smile

Одно дело, когда без js не работают дополнительные финтифлюшки и совсем другое когда сайт становится полностью неработоспособным. И потом это наплевательское отношение к пользователю.

Цитата(Gold Dragon @  28.9.2009,  15:51 Найти цитируемый пост)
поясни, что-то не совсем понял

Сервер отдает клиенту только заголовки, без контента. А в твоем же случае генерируется html(причем не валидный), браузеру приходится его загрузить, распарсить, починить, построить DOM и только затем (если повезет) начать выполнять твой js.

В общем, это моветон.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.