PHP 7: 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 "Пароль верный"; }