header('Location: ')
сделает HTTP redirect, который сообщает браузеру, чтобы перейти на новое место:
HTTP/1.1 301 Moved Permanently
Location: http://example.com/another_page.php
Connection: close
Он не нуждается в тело HTML, так как браузер не будет отображать его и просто следить за переназначение. Вот почему мы звоним die()
или exit()
после header('Location:')
. Если вы не завершаете скрипт, HTTP-ответ выглядит следующим образом.
HTTP/1.1 301 Moved Permanently
Location: http://example.com/another_page.php
Connection: close
<!doctype html>
<html>
<head>
<title>This is a useless page, won't displayed by the browser</title>
</head>
<body>
<!-- Why do I have to make SQL queries and other stuff
if the browser will discard this? -->
</body>
</html>
почему не умирают() выполняется автоматически с помощью PHP интерпретатора?
Функция header()
используется для отправки необработанного HTTP-заголовка, не ограничиваясь header('Location:')
. Например:
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// ...more code...
В тех ситуациях мы не называем die()
, так как мы должны генерировать тело ответа HTTP. Поэтому не имеет смысла, если PHP автоматически вызовет die()
после header()
.
Будет реализовывать мой собственный перенаправление() таким же образом. – noober
@noober: Хорошо, просто помните, что большую часть времени, * имеет смысл «die()» после «Location» *! Кроме того, я считаю, что 'session_write_close()' должен появиться перед заголовком 'Location', а не в конце. –