PHP: HTTP-заголовки ответа сервера
В данной статье коротко о том, как послать на сервер заголовки, принять их и прочитать. Буферизация ответа. Хэширование.
Переадресация и перезапрос ресурса
// Переадресация со статусом 302
header("Location: http://mysite.local");
// Переадресация со статусом 301
header("HTTP/1.1 301 MovedPermanently");
header("Location: http://mysite.local");
// Или
header("Location: http://mysite.local", true, 301);
// Перезапрос ресурса
header("Refresh: 3");
header("Refresh: 3;url=http://mysite.local");
Установка типа содержимого
// Принудительная установка типа передаваемого ресурса
header("Content-Type: text/xml");
// Принудительная установка кодировки передаваемого ресурса
header("Content-Type: text/html;charset=utf-8");
// Перенаправление вывода передаваемых данных
header("Content-Type: text/plain");
header("Content-Disposition: attachment;filename = \"myfile.txt\"");
Управление кэшированием
// Запрет кэширования
header("Cache-Control: no-cache, max-age = 0");
// Полный запрет кэширования
header("Cache-Control: no-store");
// Разрешение кэширования на один час относительно времени запроса
header("Cache-Control: max-age = 3600");
// Разрешение кэширования на один час
header("Expires: " . date("r", time() + 3600);
Буферизация вывода
// Включаем буферизацию
ob_start();
echo 'Hello world!';
setcookie("name", "John");
// Посылаем содержимое буфера
ob_flush();
echo 'Ещё контент!';
echo 'И ещё контент!';
// Посылаем содержимое буфера и отключаем его
ob_end_flush();
// Включаем буферизацию
ob_start();
echo "Hello ";
// Выбираем то, что находится в буфере. Его содержимое на очищается!
$out1 = ob_get_contents();
echo "World";
// Выбираем то, что находится в буфере. Его содержимое на очищается!
$out2 = ob_get_contents();
// А теперь очищаем буфер, но не закрываем
ob_clean();
echo "Саша";
echo "и ";
echo "Маша";
// Выбираем то, что находится в буфере
$out3 = ob_get_contents();
// Очищаем буфер и закрываем его
ob_end_clean();
echo $out1; //Hello
echo $out2; //Hello World
echo $out3; //Саша и Маша
Хэширование
echo md5("password");
// 5f4dcc3b5aa765d61d8327deb882cf99
echo sha1("password");
// 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
// Генерация хэша с солью
$hash = crypt("password", '$1$password$');
// Генерация стойкого хэша со случайной солью. Рекомендуется.
$hash = password_hash("password", PASSWORD_BCRYPT);
// Проверка пароля
if( password_verify("password", $hash) ){
echo "Пароль верный";
}