Kamrad.ru
 
 
дневники | кабинет | регистрация | календарь | участники | faq | правила | поиск | фотоальбом | каська | выйти
Kamrad.ru Kamrad.ru » Авторские форумы » Веб-дизайн, вёрстка и веб-программирование » Особенности перехвата значений из форм и...
новая тема  ответить следующая тема | предыдущая тема
Автор
  << < 1 2 > >>
DJ.MMM - offline DJ.MMM
Question26-08-2003 12:30 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Особенности перехвата значений из форм и...

Так, рисую картину, кою нужно привести в работоспособность:

Есть у нас файлы:
support.php
download.php
download_m.php
auth.php - отвечает за пароли.

В support.php есть такой код:

<form action="<?=$DownLoadPatch?>.php" method=post>
<input type="text" name="user" size="22">
<input type="password" name="passw" size="22">
<input type="submit" value="Вход" name="enter">
<input type="reset" value="Очистить">

<?
$user = $_POST['user'];

if ($user = "dinamika") {
$DownLoadPatch = "download";
} elseif ($user = "medimir") {
$DownLoadPatch = "download_m";
} else {
$DownLoadPatch = "auth.php";
}
?>

Идея была такая:

Кое каким пользователям нужно ограничить доступ на одну страницу, но открыть на другую, например если в строке name="user", этот самый юзер напишет dinamika, то откроется страница download.php, если medimir, то download_m.php.

Что происходит в итоге:

При любом правильном вводе комбинации юзер/пассворд - пользователь попадает на страницу download.php, даже если логин был medimir.

Теперь вопрос

Что в коде не правильно?

Зереша - offline Зереша
26-08-2003 12:36 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Модератор



DJ.MMM
Операция "=" это присваивание. В условии if ты присваиваешь значение переменной $user. Правильнее так:
if ($user=="dinamika") { ...

DJ.MMM - offline DJ.MMM
26-08-2003 12:52 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Зереша
Вот, млин, дурень то.. Ведь писал if ($user == "dinamika") { ..., а как видно - это ни одно и то же.
Все, проверил - работает, спасибо.

DJ.MMM - offline DJ.MMM
26-08-2003 13:24 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Глупость, он меня похоже хочет убить.. Ааа...

DJ.MMM - offline DJ.MMM
26-08-2003 13:36 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Задолбал. Вообщем, работает уже лучше, но вс же ни так как нужно..

Теперь:

<?
$user = $_POST['user'];

if ($user=="dinamika") {
$DownLoadPatch = "download";

} elseif ($user=="medimir") {
$DownLoadPatch = "download_m";

} else {
$DownLoadPatch = "auth.php";
}

?>

- эта конструкция, чтобы(правильное) ты не вводил следует по пути else.. Игнорируя первые 2-а.

В отместку решил упростить схему - получилось следующее:

<?
$user=$_POST['user'];

if ($user=="dinamika") {
$DownLoadPatch = "download";}

if ($user=="medimir") {
$DownLoadPatch = "download_m";}
?>

- в таком расскладе возникает 404 ошибка. В логах: Попытка обращения к www.domen.ru/.php, что меня преследует какой-то рок?

Зереша - offline Зереша
26-08-2003 13:42 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Модератор



DJ.MMM
Ну а дальше-то что? Проанализировал имена юзеров, определил значение $downloadpatch -- допустим. Что ты делаешь дальше? Какие-нибудь инклюды, передача браузеру заголовков, данных и т.п.

DJ.MMM - offline DJ.MMM
26-08-2003 14:11 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Зереша
И в мыслях не было. Хотел только, что бы при написании логина - форма отправляла юзера куда следует. Так зачем тут заголовки? Я конечно многое не допонимаю, но схема действий интуитивно следующая:

Юзер вписывает имя и пароль, нажимает сабмит -->
Перехватывается значение имени -->
В соответствии с именем в форму вставляется action="" и перенаправление юзера по его нажатию на сабмит.

Ага, уловил бред третьего пункта, сначала срабатывает форма, определяются переменные, потом форма заканчивает свою работу и уже вычленяется имя пользователя, а следовательно и параметр $DownLoadPatch. Дале я пытаюсь вставить значение $DownLoadPatch в уже отработавшую форму.

Dark - offline Dark
26-08-2003 22:17 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад
Темная личность



DJ.MMM
Да, третий пункт - это сильно.

Ethereal - offline Ethereal
27-08-2003 12:37 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Пустотник



Допустим, ввели не dinamika и не medimir. Чему тогда будет равно значение $DownLoadPatch? Думается, пустой строке. Вот и отправляет он тебя на ".php". Значит, имя пользователя перехватывается неправильно.

Либо неправильно используется после всего этого $DownLoadPatch.

Dark - offline Dark
27-08-2003 22:19 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад
Темная личность



Ethereal
Вообще-то проблема совсем в другом, и DJ.MMM её уже решил.
А если посмотреть на первый код, там есть вариант "else".

Ethereal - offline Ethereal
28-08-2003 11:27 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Пустотник



Dark Всё, теперь въехал полностью. Я ж и говорю - $DownLoadPatch используется неправильно, и имя пользователя тоже перехватывается неправильно

DJ.MMM - offline DJ.MMM
29-08-2003 14:36 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Зереша Ну а дальше-то что? Проанализировал имена юзеров, определил значение $downloadpatch -- допустим. Что ты делаешь дальше? Какие-нибудь инклюды, передача браузеру заголовков, данных и т.п.

Вот на этом и заглох.
Вырезка из книги() Антона Орлова:

"...Однако переменные $PHP_AUTH_USER и $PHP_AUTH_PW - не простые. Если они один раз были определены, то впоследствии они передаются всем web-страницам, которые загружаются в то же самое окно браузера, где произошла авторизация! Иными словами, если по каким-то причинам требуется проверять логин и пароль посетителя на каждой из страниц сайта (скажем, выводить разную информацию авторизованным и неавторизованным посетителям), то каждый раз запрашивать эти данные не нужно - достаточно использовать значения переменных $PHP_AUTH_USER и $PHP_AUTH_PW. Значения данных переменных теряются в случае закрытия окна браузера, в котором изначально произошла авторизация (а в другие окна они и не передаются)..."

Действительно ли достаточно данных пораметров, либо с какими-либо браузерами могут возникнуть проблемы, если.., то каким путем лучше идти..

Что я только не пытался сделать, вот уже JavaScript приплел, для редиректа куда следует..

Зереша - offline Зереша
29-08-2003 15:34 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Модератор



DJ.MMM
Твои вопросы совершенно не понятны... Тебе нужен редирект?

Код примерно такой, располагается в самом начале HTML-файла, до <html>:
if ($user=="dinamika") header("Location: http://.../dinamika");
if ($user=="medimir") header("...");

А в форме -- модуль вызывает сам себя...
<form action="<?=$php_self?>" method=post>

Dark - offline Dark
29-08-2003 22:37 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад
Темная личность



DJ.MMM
Для авторизации люди обычно ходят через куки или сессии... Практика встроенной авторизации у народа не прижилась.

Зереша
А можно узнать, что такое header ("...") ?

Urkagan - offline Urkagan
30-08-2003 06:45 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Модератор
Наглая жирная рожа



Dark
http://ru2.php.net/manual/ru/function.header.php

Dark - offline Dark
31-08-2003 00:20 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад
Темная личность



Urkagan
Что такое header(), я знаю. Меня интересует, зачем там многоточие.

Зереша - offline Зереша
Wink31-08-2003 04:53 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Модератор



Dark
А почему тебя не удивило многоточие после http:// в строке выше?

Dark - offline Dark
01-09-2003 01:24 URL сообщения Дневник     K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад
Темная личность



Не обратил внимания.

DJ.MMM - offline DJ.MMM
02-09-2003 08:12 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Dark Практика встроенной авторизации у народа не прижилась.
При том условии, что нужно защитить одну страницу а не блок, я и пошел по пути встроенной, все бы ничего, если бы не потребовалось с одной формы кидать в разные места.

DJ.MMM - offline DJ.MMM
02-09-2003 15:23 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Дайте мне молоток я разнесу все на.... Ааа..

Бъется головой о стол

Anafay - offline Anafay
02-09-2003 17:15 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать




DJ.MMM
Вообще-то решение Зереши должно работать и для стандартной авторизации.

DJ.MMM - offline DJ.MMM
16-10-2003 11:23 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Ладно, с той вышеописанной бякой я разобрался, не самым лучшим образом, но все же лучше чем ни как вообще.

DJ.MMM - offline DJ.MMM
16-10-2003 11:43 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Теперь новый вопрос и глобальная проблема Везет блин. по той же тематике.

Краткий обзор:
Задолбали вражины, которые в гостевой всякие гадости пишут. В связи с этим встала идея сначала банить IP-шники врагов, а позже и более серьезные меры принимать:

Изымать значения форм из гостевой книги в момент отправки и отправлять в форму ICQ отправки сообщений, притом, что бы та мгновенно субмитилась и данные улетали на наш ICQ пейджер.

Значения взять – не проблема, Но вот как переправить содержимое форм(заранее укомпановонное в одну формочку) в поле с именем: name="body", находящемся на другой странице, и нажать автоматически сабмит – не понимаю.

Хотя сабмит можно попытаться нажать нечто подобным образом:
<?php
if (empty($Send)) { не знаю как описать данную форму } else
{ process_form(); }
?>

DJ.MMM - offline DJ.MMM
16-10-2003 14:17 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать
Камрад



Появилась идея - нужны советы по реализации.
Вот мой краткий набросок, но нужны помощь и дополнения:


Guestbook.php – Чел пишет в формах что ему взбредет. И нажимает сабмит. Скрипт проверяет правильность ввода полей, получает дату, коннектится к mySQL и передает полномочия:

Post.php – Этот завершает все начатые операции и <meta http-equiv="refresh" content="0; URL= Guestbook.php"> делает редирект на Гостевую книгу.

Я в конце Post.php, до редиректа на гостевую пишу:

Объединяю все переменные в одну, назовем ее: AllMess. Далее создаю «массив»:

$Mess = "allmess.txt"

Потом в него помещаю параметр AllMess.

Далее Технически не представляю, как можно осуществить. Сначала открываю новую страницу на новой странице:

ICQmessage.php – где изымаю параметр из массива AllMess и вставляю его в уже имеющуюся форму для отправки ICQ, как то автонажимаю Сабмит. И закрываю окно.

После открытия ICQmessage.php Продолжаю работу Post.php в обычном режиме, т.е. осуществляю редирект.

Собственно вот план. Посоветуйте, можно ли подобное достигнуть?

Anafay - offline Anafay
16-10-2003 19:40 URL сообщения      K-Mail    Профиль    Поиск    Контакт-лист   Редактировать




DJ.MMM
Сначала открываю новую страницу на новой странице:

ICQmessage.php – где изымаю параметр из массива AllMess и вставляю его в уже имеющуюся форму для отправки ICQ, как то автонажимаю Сабмит. И закрываю окно.


IMHO этот способ:
1) некрасивый
2) неправильный
3) чреватый .. э... спецэффектами

Текущее время: 11:07 << < 1 2 > >>
новая тема  ответить следующая тема | предыдущая тема
 
Перейти:

версия для печати   отправить эту страницу по e-mail   подписаться на эту тему

 
Powered by: vBulletin Version 2.0.1
Copyright ©2000, 2001, Jelsoft Enterprises Limited.
Любое использование материалов сайта
возможно только с разрешения его администрации.


 

Рейтинг@Mail.ru
Рейтинг@Mail.ru