Эмулировать страницу ошибок 403

Я знаю, что вы можете отправить заголовок, который сообщает браузеру, что эта страница запрещена:

header('HTTP/1.0 403 Forbidden'); 

Но как я могу также отобразить страницу пользовательской ошибки, которая была создана на сервере для такого типа ошибок?

По умолчанию просто отправка заголовка отображает белую страницу, но я помню некоторое время назад, чтобы прочитать страницу ошибки клиента. Кто-нибудь знает?

Включите страницу пользовательской ошибки после изменения заголовка.

Просто эхом ваш контент после отправки заголовка.

 header('HTTP/1.0 403 Forbidden'); echo 'You are forbidden!'; 

запрещено

Для этого вы должны сначала сказать браузеру, что пользователь получил ошибку 403. Для этого вы можете использовать этот код:

 header("HTTP/1.1 403 Forbidden" ); 

Затем сценарий отправляет «ошибку, ошибку, ошибку, ошибку, ошибку …….», поэтому вы должны ее остановить. Вы можете использовать

 exit; 

С помощью этих двух строк сервер отправляет ошибку и останавливает скрипт.

Не забывайте: эмулируйте ошибку, но вы должны установить ее в файле .htaccess, с

 ErrorDocument 403 /error403.php 

http_response_code был представлен в PHP 5.4 и сделал все намного проще!

 http_response_code(403); die('Forbidden'); 

.htaccess

 ErrorDocument 403 /403.html 

Посмотрите много ответов, но правильный – предоставить полные опции для вызова функции заголовка в соответствии с руководством по php

 void header ( string $string [, bool $replace = true [, int $http_response_code ]] ) 

Если вы вызываете

 header('HTTP/1.0 403 Forbidden', true, 403); 

нормальное поведение HTTP 403, настроенное с помощью Apache или любого другого сервера.

Чтобы свести к минимуму обязанности сервера, сделайте его простым:

.htaccess

 ErrorDocument 403 "Forbidden" 

PHP

 header('HTTP/1.0 403 Forbidden'); die(); // or your message: die('Forbidden'); 

Используйте ModRewrite:

RewriteRule ^403.html$ - [F]

Просто убедитесь, что вы создали пустой документ под названием «403.html» в своем корневом каталоге www или получите ошибку 404 вместо 403.

Я прочитал все ответы здесь, и ни один из них не был полным ответом для моей ситуации (что точно так же в этом вопросе), вот как я собрал некоторые части предлагаемых ответов и придумал точное решение:

  1. Приземлитесь на настоящую 403 страницу вашего сервера. (Перейдите на запрещенный URL-адрес на своем сервере или перейдите на любую 403 страницу, которая вам нравится)
  2. Щелкните правой кнопкой мыши и выберите «источник просмотра». Выберите весь источник и сохраните его в файле в вашем домене, например: http://domain.com/403.html.
  3. теперь перейдите на свою настоящую запретную страницу (или запретную ситуацию в какой-то части вашего php): http://domain.com/members/this_is_forbidden.php
  4. echo этот код ниже перед любым выходом или заголовком HTML! (даже пробелы заставят PHP отправлять HTML / TEXT HTTP Header, и это не сработает) Код ниже должен быть вашей первой строкой !

      <?php header('HTTP/1.0 403 Forbidden'); $contents = file_get_contents('/home/your_account/public_html/domain.com/403.html', TRUE); exit($contents); 

Теперь у вас есть точное решение. Я проверил и проверил с последними посетителями CPANEL и зарегистрировался как точное событие 403.

Я понимаю, что у вас есть сценарий с ErrorDocument, уже определенный в вашем apache conf или .htaccess, и вы хотите, чтобы эти страницы отображались при ручной отправке кода состояния 4xx через php.

К сожалению, это невозможно с распространенными методами, потому что php отправляет заголовок непосредственно в браузер пользователя (а не на веб-сервер Apache), тогда как ErrorDocument – это обработчик отображения для http-статуса, сгенерированного из Apache.

Обновите страницу после отправки 403:

 <?php header('HTTP/1.0 403 Forbidden'); ?> <html><head> <meta http-equiv="refresh" content="0;URL=http://my.error.page"> </head><body></body></html> 

Алекс, вы можете перенаправить на свою страницу с помощью заголовка, подобного этому:

 header('Location: my403page.html'); 

И убедитесь, что на вашей странице 403 вы включаете исходный код заголовка:

 header('HTTP/1.0 403 Forbidden'); 

Кроме того, вы можете просто создать заголовок и включить страницу 403 следующим образом:

 header('HTTP/1.0 403 Forbidden'); include('my403page.html');