Я использую функцию, называемую headerLocation()
, чтобы правильно перенаправить. Это уместная часть функции, я использую ее для перенаправления, а затем отображаю соответствующее сообщение (личное предпочтение).
function headerLocation($location,$message) { $_SESSION['output'] = $message; header("Location: ". $location); }
Проблема в том, что когда я запускаю скрипт, header("Location: ". $location);
часть активируется, даже не вызывая функцию (когда я изначально требую ее для разбора php). Это делает функцию бесполезной.
Есть ли способ обойти это?
Этого не должно быть. Либо вы вызываете функцию где-то, либо другая часть кода выписывает заголовок. Можете ли вы добавить отладку к этой функции для проверки?
В дополнение к уже полученной обратной связи. Это хорошая идея exit
после перенаправления.
function headerLocation($location,$message) { $_SESSION['output'] = $message; header("Location: ". $location); exit; }
Просто предположите, возможно, вы должны буферизовать свой вывод (ob_start ()). Это приведет к отправке заголовков только тогда, когда вывод будет сброшен, что позволит выполнить остальную часть вашего кода.
Для функции header()
нет смысла перенаправлять, не обращаясь headerLocation()
к вызову headerLocation()
.
Я предполагаю, что вы не видите $_SESSION['output']
hold $message
, и это заставляет вас думать, что функция не выполняется. Попробуйте вместо этого написать новый файл? Держу пари, это будет.
Причина, по которой $_SESSION
может не содержать ваши значения, вероятно, связана с P3P и вашим браузером и / или конфигурацией PHP.
Кроме того, вы уверены, что не хотите вызывать die()
/ exit()
после перенаправления header()
?
Для перенаправления $ _Session перенаправление происходит слишком быстро. использование
session_write_close();
перед вызовом заголовка.
Изменить: Удалено смешное $ перед вызовом функции.