Мне показалось удобным просто исключение для таких вещей. Существует несколько стратегий, но одна может включать такой сценарий, как:
function show_content()
{
if( ! $user_is_allowed_to_see_this_content ) {
throw new Exception('This user may not see this content', 403);
}
// Continue on with the content code
}
По умолчанию это просто выдаст ошибку, но вы можете использовать функцию set_exception_handler () , чтобы определить, что конкретно происходит при возникновении исключения. Это позволяет вам определять логику «что делать, когда что-то идет не так» отдельно от вашего кода обработки контента, который, как я считаю, делает все более аккуратным.
Например:
function custom_exception_handler( Exception $exception )
{
// Log the Exception
error_log( $exception->getMessage(), 0 );
// Return the generic "we screwed up" http status code
header( "HTTP/1.0 500 Internal Server Error" );
// return some error content
die("We're sorry. Something broke. Please try again.");
}
// Now tell php to use this function to handle un-caught exceptions
set_exception_handler('custom_exception_handler');
Стоит отметить, что это хороший универсальный способ обработки всех событий логических сбоев, а не только сбоев аутентификации. Исключения не найденных файлов, исключения проверки, исключения запроса к базе данных, исключения регулирования спроса; все они могут обрабатываться одинаково и в одном и том же месте.