Расположение заголовка не работает должным образом - PullRequest
1 голос
/ 19 августа 2010

У меня есть php-скрипт, который рендерит изображение (с imagick) и сохраняет его в каком-то каталоге "SITE_ROOT.$filePath", затем выполняет header('Location: ' . SITE_ROOT.$filePath), файл, на который он перенаправляет изображение, является изображением png.

Если я сразу иду по пути, например, просто введите его в строке URL, я могу сохранить изображение, и все работает нормально, однако, когда я полагаюсь на сценарий для перенаправления, и я пытаюсь щелкнуть правой кнопкой мыши и сохранить его. не понимает, что я на самом деле пытаюсь сохранить изображение, он думает, что я пытаюсь сохранить его как нетипизированный файл с именем «Driver», который является именем страницы скрипта.

Понятия не имею, что здесь не так, конечно, местоположение заголовка должно просто привести меня к изображению и не иметь записи файла 'Driver' после его перенаправления?

То же самое происходит с redirect() слишком кстати.

Заранее спасибо за любую помощь!

Редактировать: Эта проблема была решена путем размещения die() после команды заголовка.

Ответы [ 2 ]

5 голосов
/ 19 августа 2010

Вы используете пути к файлам, которые не работают с расположением заголовка.Вы должны использовать URL-адреса.

Рекомендуется использовать абсолютные URL-адреса в расположении заголовка.Документация PHP гласит:

HTTP / 1.1 требует абсолютного URI в качестве аргумента для »Местоположение: включая схему, имя хоста и абсолютный путь, но некоторые клиенты принимают относительные URI.( Источник )

Кроме того, всегда выходите из сценария впоследствии, потому что в моем случае при определенных обстоятельствах код, который следует после перенаправления, все еще может выполняться.Хороший пример будет выглядеть так:

header("location:http://www.mysite.com/path/to/myfile.php");
exit;

Часто для этого случая вы используете переменную сервера:

$url = $_SERVER["HTTP_HOST"]."/path/to/myfile.php";
header("location:".$url);
exit;

Приветствия!

1 голос
/ 19 августа 2010
Заголовок

('Location:'. $ FilePath);

SITE_ROOT - расположение каталога htdocs на сервере;но заголовок Location должен быть путем к файлу относительно к каталогу htdocs

...