![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Yoreck |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 20.6.2005 Репутация: нет Всего: нет |
Доброго времени суток, уважаемые.
Такая вот простая задача - в web-проекте на одну и ту-же форму можно попадать с различных страниц. После обработки запроса, либо по нажатию кнопки "Назад" пользователь отсылается обратно. В данный момент, делаю так: передаю на форму параметр - с какой страницы перешел пользователь и все параметры которые нужны для отображения того, что на этой самой странице было. Параметры для разных страниц разные. Потом эта информация блуждает с формы в скрипт который её обрабатывает и обратно. В итоге, приходится редактировать полпроекта при добавлении очередной фичи. Как следствие, я немножко устал Хотелось бы обойтись чистым php, без сохранения параметров в $_SESSION. (так как пользователь будет работать с одним проектом в нескольких открытых окнах одновременно) Буду рад услышать любые идеи по поводу того, как бы мне поменьше работать за те-же деньги. Это сообщение отредактировал(а) Yoreck - 21.4.2008, 13:13 |
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 6 Всего: 22 |
да в принципе никак =)
если не хочешь работать еще больше и переделать так чтобы добавление новых фич было максимально эффективным то будешь все тонуть и тонуть в этом болоте |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
использовать $_SERVER['HTTP_REFFERER'], естественно, проверяя, принадлежит ли указанный адрес твоему домену.
впрочем, лучше изменить процедуру формирования формы, чтоб на кнопке "назад" лежал определенный адрес. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Непонятно, при чем здесь "чистый РНР", если речь идет чистом HTML.
Непонятно, почему приходится редактировать пол-проекта. Какая проблема взять и передать адрес, с которого юзер пришел? Непонятно, при чем здесь "блуждает". Надо информацию передать - взял, передал. Логин и пароль тоже так же "блуждает". Однако это не вызывает никаких вопросов на форуме. К чему эта ненужная беллетристика? Сделать хидден поле в форме быстрее, чем писать пост на форум. Добавлено через 32 секунды skyboy, реферер в логике приложения использовать запрещено. |
|||
|
||||
| Yoreck |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 20.6.2005 Репутация: нет Всего: нет |
Feldmarschall
У мя порядка сотни страниц, на каждой может быть до 10 форм. Добавить на КАЖДУЮ поле хидден и проверить, что работает - это пол дня, минимум! А вопрос на форуме задать - 5 минут
Поржал Vaulter Я собстна и хочу сделать так, чтоб добавление новых фич было максимально эффективным, отсюда и вопрос. skyboy Спасибо, пойду почитаю про это. Это сообщение отредактировал(а) Yoreck - 22.4.2008, 08:01 |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Yoreck.
Главная проблема начинающих программистов заключается не в том, что они не могут решить какую-то задачу. А в том, что они не могут её сформулировать. Ну вот хотят что-то сделать, а не знают - что. От этого ни у них самих не получается, ни - что закономерно - другим людям толком вопрос задать. При чем здесь сто форм по 10 страниц? Если ты один раз прописал во все формы это поле, то при чем здесь " редактировать полпроекта при добавлении очередной фичи"? Это не говоря уже об осмысленности такого странного приложения в целом - сто страниц, на каждой по 10 форм, и КАЖДАЯ - что характерно - должна куда-то возвращать. То есть, формы заполняются не последовательно, а хаотично. И при этом не используются сессии, ага. Единственный известный мне случай, когда требуется такой возврат - это единственная на все приложение форма авторизации. Если же таким функционалом надо снабжать кадлую форму на сайте, то здесь, я думаю, проблему можно решить другими средствами. Умение ржать над собой отличает сильных духом. Уважаю. |
|||
|
||||
| SamDark |
|
|||
|
Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Переформулирую, пожалуй задачу. Интересны всё-таки варианты решения.
Есть форма с полями ввода и сабмитом. Допустим, редактирование поста. Пост можно посмотреть по 4-м url-ам: собственный url, лента новостей, архив, подборка лучших постов. Если админ залогинен, во всех 4-х местах рядом с названием поста появляется ссылочка «редактировать», ведущая к нашей форме. Естественно после редактирования поста удобно перекинуть на страницу, с которой это самое редактирование вызвали. Это сообщение отредактировал(а) SamDark - 22.4.2008, 13:33 -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Ну, решение-то только одно - других нету: в ссылку писать адрес страницы.
Либо редактировать "по месту" - добавлять к текущему урлу параметр ?edit и оставаться все время в рамках одного адреса. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Собственно, если подумать над начальными условиями, то варианты становятся видны, как на ладони. И автор зря смеялся.
Мы имеем html страницу. И хотим передать из неё какую-то информацию. По ссылке. Ну и много у нас тут вариантов? Нет, можно, конечно, ставить при клике куку яваскриптом. Но мне, пхпшнику старой школы, не сильно одобряюшему все эти рюшечки и бантики вебдваноля, это представляется не сильно совместимым решением. Да вообще - если уж юзать яваскрипт, то на полную катушку, и выводить форму аяксом =) |
|||
|
||||
| SamDark |
|
|||
|
Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Feldmarschall,
Неправда. Жду вариантов, потом выложу свои. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
| IZ@TOP |
|
||||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Кука яваскриптом для обратной переадресации после отправки формы... я бы не назвал это WEB2.0. Хорошо что не она нас
Если это может быть удобнее для задачи - почему бы и нет? Вообще, когда возникают подобные трудности, скорее всего вопрос стоит в том, что, логика программы написана неправильно. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
||||
|
|||||
| SamDark |
|
|||
|
Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Мой вариант — завести стэк страниц в сессии и при переходах добавлять текущую страницу. Получится эдакая server-side история.
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
| Yoreck |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 20.6.2005 Репутация: нет Всего: нет |
SamDark
Думал об этом. Проблема в том что у мя, как правило, на одну и туже сессию приходится несколько открытых табов, ну или браузеров там. Иначе пользователю неудобно работать. Придумал такой вариант:
Недостатки: 1) Работает только для GET 2) URI при каждом переходе геометрически разрастается, а количество байт в GET-запросе ограниченно. По хорошему, надо, как-то разобрать этот путь назад и оставлять, скажем, 10 шагов, остальные удалять. Feldmarschall Я очень прошу Вас больше не писать постов в данной теме, поскольку это мешает читать информативные сообщения. Поясню причину: PHP выполняется на серверной стороне, результатом выполнения PHP скрипта является текстовая страница, передаваемая пользователю в том виде в котором её генерирует PHP скрипт. Как правило - в формате HTML. В том числе - "чистый HTML". Таким образом фраза "причем здесь чистый PHP, когда речь идет о чистом HTML" вызывает только улыбку |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Не вижу проблемы в другой теме я описал как это сделать. http://forum.vingrad.ru/index.php?showtopi...t&p=1488274 http://forum.vingrad.ru/index.php?showtopi...t&p=1488488 При любых перемещениях GET/POST - неважно. Передаешь не URI, а некий UID (для каждой страницы). В сессии у тебя хранится массив вида, где UID уникален, а URI - обратный адрес UID => URI таким образом если пользователь попытается покинуть нашу страницу по двум разным направлениям обе страницы получат один и тот же URI в качестве возврата, но будут иметь разный UID. И поясню, то о чем я не договорил в другой теме - дерево тут будет смотреться просто замечательно. Т.е. хранить стоит. PUID CUID URI Соответственно для любой страницы мы будем иметь весь путь. Даже если это одна и та же страница, открытая в разных табах То она будет иметь одинаковый PUID, но разный CUID Это сообщение отредактировал(а) Fortop - 23.4.2008, 14:17 -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Yoreck, я решил не выполнять эту просьбу. Здравствуйте =)
Для начала, открой для себя функцию urlencode. Я понимаю, что писателям масштабных веб-проектов недосуг до мануала, так что, это небольшой подарок. Теперь по поводу 10 шагов. А какой смысл вообще держать 10 шагов, а не один? Ну, не говоря уже о том, что все остальные масштабные веб-проекты обходятся как-то без столь экстравагантного функционала. Ужасные проблемы с методом POST поражают воображение. Не мог бы ты попродобнее описать их? По поводу стороны, на которой выполняется РНР. Очень интересный рассказ, я узнал из него много нового. Только он не закончен. А окончание я уже писал: В браузере у нас - чистый хтмл. И вопрос сводится к тому, как что-либо передать из него =) Добавлено через 10 минут и 42 секунды SamDark, Fortop, положа руку на сердце - вы действительно считаете, что городить весь этот огород в сессию лучше, чем просто передавать ури по ссылке? Это сообщение отредактировал(а) Feldmarschall - 23.4.2008, 15:00 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |