Редирект после отработки скрипта PHP, как правильно сделать?
Нужно сделать редирект после отработки скрипта. Т.е. index.php отправляет на другой файл после отправки формы POST'ом, где происходит обработка формы, после чего было бы неплохо вернуть на изначальную страницу. Я понимаю, что header('Location: ' . __DIR__ . '/index.php');
, но проблема в том, что index.php потом не отображает измененную информацию.
Вопрос 2, бонусный. Насколько адекватным будет использование JavaScript'ового window.location.href? (который, к слову, как-то подвесил сервер во время испытаний :D)
Во-первых, редиректу надо указывать путь на сайте, а не сервере. header('Location: /index.php');
Во-вторых, если обработка несколько секунд, то обрабатывать надо в этом же скрипте, а потом редиректить на результат.
Если же обработка очень долгая, то надо записывать в очередь обработки и выводить "ваш запрос принят и обрабатывается". Отдельным демоном или по крону обрабатывать из очередь и через веб-сокет выводить результат клиенту.
Спасибо, все работает =) Но я оказался изобретательнее, возник циклический редирект ERR_TOO_MANY_REDIRECTS, потому, что я делал include скрипта обработчика на index.php.
А по-поводу путей: где почитать когда использовать __DIR__, а когда не нужно? Я с серверной частью всего неделю разбираюсь, трудно понять когда нужны абсолютные, а когда относительные пути =)
Fortop: т.е. в случае указания пути для некоторого файла некоторому скрипту - нужно использовать абсолютный путь с__DIR__, в случае указания адреса сайта (html-файла) скрипту, результатом которого должно быть отображение этого файла пользователю - используется относительный путь и данная константа лишняя. Правильно ли я понимаю?
Просто "разные вещи" - это для пользователя, фактически я воспринимаю это как файлы на сервере (чем они и являются), отсюда сложность в понимании.
в случае указания адреса сайта (html-файла) скрипту, результатом которого должно быть отображение этого файла пользователю - используется относительный путь и данная константа лишняя
Практически верно.
Попробуйте немного почитать о ЧПУ. Там разница между урлом и путем к файлу на сервере нагляднее видна
Например урлы :
/index.php
/
/my-cabinet/
На сервере могут быть настроены так, что все будут обращаться к одному и тому же вашему скрипту.