За последние 24 часа нас посетили 22739 программистов и 1226 роботов. Сейчас ищут 709 программистов ...

Помогите составить условие для редиректа

Тема в разделе "PHP для новичков", создана пользователем AnteFil, 22 июл 2020.

  1. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Есть страничка
    sait.com/автомобили/
    на ней обрабатывается POST запрос
    Из этого выходит два вопроса.
    Как при отправке POST данных средиректить на страничку вида
    sait.com/автомобили/москва/
    Я побывал делать проверку если например указан город то мы редиректим на нужную страницу то так как город у конечной страницы всегда есть то бесконечный редирект получается
    Код (Text):
    1. $city = $_GET['city'] ?? $_POST['city'] ?? $_COOKIE['CookieCity'] ?? null;
    2. if(empty($city)) { header('Location: http://sait.com/автомобили/.'$city'./'); }
    и второй момент если провалиться дальше по ссылкам например
    http://sait.com/автомобили/москва/bmw.html
    а потом нажать в браузере назад то страничка не открывается в браузере ошибка
    Подтвердите повторную отправку формы
    Для корректного отображения веб-страницы требуются введенные ранее данные. Их можно отправить повторно, но в этом случае все действия на странице будут выполнены снова.
     
  2. twim32

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

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Перед empty забыл поставить восклицательный знак
     
  3. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Это ни как не влияет на логику работы это только изменит само условие, а точнее просто перевернёт условие или
     
  4. twim32

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

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    А что если перевести на русский язык то, что вы написали?
    Если город не имеет значения, тогда делаем редирект на http://sait.com/автомобили/[ПУСТО]/'

    Может быть так будет понятнее?
     
  5. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Если редиректить на http://sait.com/автомобили/москва/ то в $city будет записано москва следовательно если проверять if(empty($city)) будет бесконечный редирект
    если $city нет, то мне не нужен редирект. Куда его направлять то????Зачем?
    --- Добавлено ---
    Щас вот придумал конструкцию.
    Если вообще не обрабатывать на как $_POST а при его наличии редиректить на http://sait.com/автомобили/москва/ тогда я буду получать $_GET и уже $_GET обрабатывать
    тип
    if(empty($_POST['city']))
     
  6. twim32

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

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Код (Text):
    1. if(empty($city)) {
    2. header('Location: http://sait.com/автомобили/');
    3. } else {
    4. header('Location: http://sait.com/автомобили/.'$city'./');
    5. }
     
  7. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Щас вот придумал конструкцию.
    Если вообще не обрабатывать на как $_POST а при его наличии редиректить на http://sait.com/автомобили/москва/ тогда я буду получать $_GET и уже
    Это приведёт к бесконечному редиректу
     
  8. twim32

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

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Если в адресе нет города, для меня было бы логичнее видеть либо список городов, либо все машины. А у вас прям что-то шедевральное...
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Выуживание $city из всего подряд – бред, т.к. у вас в $_GET мог остаться город от тупого рерайта. Проверяйте конкретный POST-параметр.
    --- Добавлено ---
    Также можно начать с проверки метода запроса, т.к. редирект в ответ на POST по-любому нужен. Второй вопрос, куда.
     
  10. amberson

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

    С нами с:
    23 июл 2020
    Сообщения:
    62
    Симпатии:
    14
    Эти проблемы решатся пост аякс запросами. Плюсом будет сохранение пользовательского ввода на странице и уведомления в модальных окнах если что-то не так.
     
  11. twim32

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

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Лови жабаскриптера!

    По-моему, тоже костыль.

    Эта проблема решается как два пальца об асфальт: руты и контроллеры. Что автору уже советовали умные седые головы в других постах. Так что тут проблемы не с кодом...
     
  12. amberson

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

    С нами с:
    23 июл 2020
    Сообщения:
    62
    Симпатии:
    14
    Не костыль, а кейс ) Сплошные плюсы. Еще плюс - асинхронность.