Есть к примеру таблица объектов. Есть админка для нее на сайте(фронт-енд админка). После того как нажимаем "Сохранить", нужно а)редиректить пользователя на другую страницу б)нужно вывести сообщение "Объект успешно сохранен". Делают так: 1. При редиректе на нужную страницу, к URL просто добавляют Get-переменную "?posthere=saved" Если $_GET['posthere'] не пуст, выводят соответствующее сообщение. Мне же нужно чтобы URL был без этой переменной. Поэтому этот вариант отпадает 2. POST данную тоже не передашь, т.к. нужен редирект, а после редиректа POST данные сбрасываются. (или здесь я не прав, и можно как то по другому?) 3. По логике можно плясать от той странице - с которой перешли. Мол если перешли со страницы редактирования объекта - с определенным task в URL (напр. ?task=insert , т.е. задание - вставить) писать соответствующее сообщение. Это тоже не приемлемо, т.к. со страницы редактирования может быть и просто переход без всякого редактирования. Вопрос: Как поступить в этой ситуации? После редиректа выдать сообщение, но и оставить "чистым" URL ?
а почему обработчик не может выдать сообщеньку, а редиректить допустим через 1-3 сек еще можно писать сообщеньку в сессию и чтобы нажал и пропало
"системное"? никакой магии. есть три URL-а, по которым: 1. выводится форма 2. обрабатываются GET или POST данные формы, выводится сообщение 3. куда происходит редирект после сообщения (можно сделать так, чтобы любые из них или все они были одинаковы, не суть важно) imho, самый правильный способ в обработчике (2) выводить страничку с текстом сообщения, где в секции <head> будет <meta refresh>
есть смысл -- если не делать какой-нибудь редирект, то по F5 будет происходить повторная отправка формы. ну и юзабилити -- пользователь может не понять отправил ли он данные или просрал нечаянно. бывают очень беспокойные люди.
не, я спрашивал про сообщения. редирект полюбас нужен. я к тому что имеет смысл навязывать сообщение если что-то пошло не так, а когда всё ок, то это как бы нормально =)
не, сверкнул и редирект. это раз. два, если после заполнения формы ты переходишь на страницу того, что создавал, то озадачивания не будет.
даже если ты не веришь в логику, есть сложившаяся практика. если люди в 10 местах видят именно такое поведение, то и в 11-м месте ожидают того же. к примеру я редактирую свой профиль, неважно где. нажал "Сохранить". скорее всего я опять окажусь на этой же странице, НО если будет промежуточное "данные сохранены", я спокоен. а если не было сообщения, я буду сомневаться. скорее всего нажму "Сохранить" еще раз... и еще... пока кушать не позовут.
Задачи могут быть разные - например "удаление", "снятие с публикации" и т.д. После таких заданий - нужно редиректить на другую страницу, а увидеть в большой таблице объектов (т..е. на странице на которую средиректили) быстро, что "удалено"/"снято с публикации" может быть трудно Добавлено спустя 17 минут 5 секунд: Все гуд, такой вариант я тоже изначально рассматривал, вот только напрягают - после сохранения (или нажатия на другую кнопку для выполнения какого-либо задания), 2 редиректа. Сначала на страницу с сообщением. Держим на нем, опять 2-я перезагрузка страницы, на ту которую нужно. Есть к примеру 8 объектов с кнопками "удалить", и жамкая на все, надо ждать все эти 8*2 редиректы. Или я что-то не так понял?
по схеме: переход (1) - (2) это не редирект. так работает <form action="url2">. редирект необходим для (2) - (3). хоть с сообщением, хоть незаметный по header('Location...') но он должен быть, иначе будут проблемы с рефрешем. так в чем проблема? если надо делать массовые операции - делай. пометил объекты чекбоксами, нажал удаление -- это одна обработка формы. и вообще это вопрос надо ли облегчать деструктивные действия. тут еще, как минимум, надо переспросить: "удалить 8 счетов? а ты уверен, что хочешь покончить с собой таким образом?"
- Не редирект, но все равно переход по ссылке. Но это все ладно. Главное я для себя разобрался, что на верном пути. Просто думал, возможно делают как то проще. - Ну это совершенно верно=)). Для массовых операций должны быть чекбоксы, это я просто утрировано, про частые переходы. Всем Thanks! Добавлено спустя 19 секунд: Да-да=)