За последние 24 часа нас посетили 34385 программистов и 1819 роботов. Сейчас ищут 850 программистов ...

Как лучше организовывать системные сообщения?

Тема в разделе "PHP для новичков", создана пользователем link00, 10 окт 2013.

  1. link00

    link00 Активный пользователь

    С нами с:
    1 сен 2012
    Сообщения:
    65
    Симпатии:
    0
    Есть к примеру таблица объектов. Есть админка для нее на сайте(фронт-енд админка). После того как нажимаем "Сохранить", нужно а)редиректить пользователя на другую страницу б)нужно вывести сообщение "Объект успешно сохранен". Делают так:
    1. При редиректе на нужную страницу, к URL просто добавляют Get-переменную "?posthere=saved" Если $_GET['posthere'] не пуст, выводят соответствующее сообщение. Мне же нужно чтобы URL был без этой переменной. Поэтому этот вариант отпадает
    2. POST данную тоже не передашь, т.к. нужен редирект, а после редиректа POST данные сбрасываются. (или здесь я не прав, и можно как то по другому?)
    3. По логике можно плясать от той странице - с которой перешли. Мол если перешли со страницы редактирования объекта - с определенным task в URL (напр. ?task=insert , т.е. задание - вставить) писать соответствующее сообщение. Это тоже не приемлемо, т.к. со страницы редактирования может быть и просто переход без всякого редактирования.

    Вопрос: Как поступить в этой ситуации? После редиректа выдать сообщение, но и оставить "чистым" URL ?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а почему обработчик не может выдать сообщеньку, а редиректить допустим через 1-3 сек
    еще можно писать сообщеньку в сессию и чтобы нажал и пропало
     
  3. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    В сессию.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    "системное"?

    никакой магии. есть три URL-а, по которым:
    1. выводится форма
    2. обрабатываются GET или POST данные формы, выводится сообщение
    3. куда происходит редирект после сообщения
    (можно сделать так, чтобы любые из них или все они были одинаковы, не суть важно)

    imho, самый правильный способ в обработчике (2) выводить страничку с текстом сообщения, где в секции <head> будет <meta refresh>
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    они вообще имеют какой-то смысл, кроме "ок записалось"?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    есть смысл -- если не делать какой-нибудь редирект, то по F5 будет происходить повторная отправка формы.
    ну и юзабилити -- пользователь может не понять отправил ли он данные или просрал нечаянно. бывают очень беспокойные люди.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не, я спрашивал про сообщения. редирект полюбас нужен.

    я к тому что имеет смысл навязывать сообщение если что-то пошло не так, а когда всё ок, то это как бы нормально =)
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    ну п.2: пользователь хочет знать что происходит. простой молчаливый редирект может его озадачить.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не, сверкнул и редирект. это раз. два, если после заполнения формы ты переходишь на страницу того, что создавал, то озадачивания не будет.
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    даже если ты не веришь в логику, есть сложившаяся практика. если люди в 10 местах видят именно такое поведение, то и в 11-м месте ожидают того же.

    к примеру я редактирую свой профиль, неважно где. нажал "Сохранить". скорее всего я опять окажусь на этой же странице, НО если будет промежуточное "данные сохранены", я спокоен. а если не было сообщения, я буду сомневаться. скорее всего нажму "Сохранить" еще раз... и еще... пока кушать не позовут.
     
  11. link00

    link00 Активный пользователь

    С нами с:
    1 сен 2012
    Сообщения:
    65
    Симпатии:
    0
    Задачи могут быть разные - например "удаление", "снятие с публикации" и т.д. После таких заданий - нужно редиректить на другую страницу, а увидеть в большой таблице объектов (т..е. на странице на которую средиректили) быстро, что "удалено"/"снято с публикации" может быть трудно

    Добавлено спустя 17 минут 5 секунд:
    Все гуд, такой вариант я тоже изначально рассматривал, вот только напрягают - после сохранения (или нажатия на другую кнопку для выполнения какого-либо задания), 2 редиректа. Сначала на страницу с сообщением. Держим на нем, опять 2-я перезагрузка страницы, на ту которую нужно. Есть к примеру 8 объектов с кнопками "удалить", и жамкая на все, надо ждать все эти 8*2 редиректы. Или я что-то не так понял?
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    по схеме: переход (1) - (2) это не редирект. так работает <form action="url2">. редирект необходим для (2) - (3). хоть с сообщением, хоть незаметный по header('Location...') но он должен быть, иначе будут проблемы с рефрешем.

    так в чем проблема? если надо делать массовые операции - делай. пометил объекты чекбоксами, нажал удаление -- это одна обработка формы.
    и вообще это вопрос надо ли облегчать деструктивные действия. тут еще, как минимум, надо переспросить: "удалить 8 счетов? а ты уверен, что хочешь покончить с собой таким образом?"
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    artoodetoo
    ну на этом форуме ты наблюдаешь ту схему, о которой я говорю. и никто не жалуется =))))
     
  14. link00

    link00 Активный пользователь

    С нами с:
    1 сен 2012
    Сообщения:
    65
    Симпатии:
    0
    - Не редирект, но все равно переход по ссылке. Но это все ладно. Главное я для себя разобрался, что на верном пути. Просто думал, возможно делают как то проще.

    - Ну это совершенно верно=)). Для массовых операций должны быть чекбоксы, это я просто утрировано, про частые переходы. Всем Thanks!

    Добавлено спустя 19 секунд:
    Да-да=)
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну кстати она меня бесит потому что долго висит сообщенька =)
    было бы быстрее - было бы круто
     
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    проверочка
    ...
    3 секунды здесь. это много - можно было бы 0 поставить )))