Как вызвать ошибку 403

I know you can send a header that tells the browser this page is forbidden like:

header('HTTP/1.0 403 Forbidden');

But how can I also display the custom error page that has been created on the server for this type of error?

By default, just sending the header displays a white page, but I remember a while back reading that you can use the customer error page. Does anybody know?

alex's user avatar

alex

480k201 gold badges878 silver badges984 bronze badges

asked Feb 21, 2011 at 2:16

NightHawk's user avatar

0

Just echo your content after sending the header.

header('HTTP/1.0 403 Forbidden');

echo 'You are forbidden!';

forbidden

answered Feb 21, 2011 at 2:21

alex's user avatar

alexalex

480k201 gold badges878 silver badges984 bronze badges

3

http_response_code was introduced in PHP 5.4 and made the things a lot easier!

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

answered Apr 25, 2017 at 14:44

Marcio Mazzucato's user avatar

Marcio MazzucatoMarcio Mazzucato

8,8519 gold badges64 silver badges79 bronze badges

Include the custom error page after changing the header.

showdev's user avatar

showdev

28.5k37 gold badges55 silver badges73 bronze badges

answered Feb 21, 2011 at 2:30

Ibrahim AshShohail's user avatar

3

For this you must first say for the browser that the user receive an error 403. For this you can use this code:

header("HTTP/1.1 403 Forbidden" );

Then, the script send «error, error, error, error, error…….», so you must stop it. You can use

exit;

With this two lines the server send an error and stop the script.

Don’t forget : that emulate the error, but you must set it in a .htaccess file, with

ErrorDocument 403 /error403.php

Justine Krejcha's user avatar

answered Apr 18, 2013 at 17:26

Pyrrha's user avatar

PyrrhaPyrrha

2112 silver badges2 bronze badges

0

Seen a lot of the answers, but the correct one is to provide the full options for the header function call as per the php manual

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

If you invoke with

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

the normal behavior of HTTP 403 as configured with Apache or any other server would follow.

answered Dec 11, 2016 at 4:24

Jiju Thomas Mathew's user avatar

I have read all the answers here and none of them was complete answer for my situation (which is exactly the same in this question) so here is how I gathered some parts of the suggested answers and come up with the exact solution:

  1. Land on your server’s real 403 page. (Go to a forbidden URL on your server, or go to any 403 page you like)
  2. Right-click and select ‘view source’. Select all the source and save it to file on your domain like: http://domain.com/403.html
  3. now go to your real forbidden page (or a forbidden situation in some part of your php) example: http://domain.com/members/this_is_forbidden.php
  4. echo this code below before any HTML output or header! (even a whitespace will cause PHP to send HTML/TEXT HTTP Header and it won’t work)
    The code below should be your first line!

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

Now you have the exact solution. I checked and verified with CPANEL Latest Visitors and it is registered as exact 403 event.

answered Oct 6, 2015 at 18:00

Tarik's user avatar

TarikTarik

4,29039 silver badges36 bronze badges

4

.htaccess

ErrorDocument 403     /403.html

answered Feb 21, 2011 at 2:31

6

To minimize the duty of the server make it simple:

.htaccess

ErrorDocument 403 "Forbidden"

PHP

header('HTTP/1.0 403 Forbidden');

die(); // or your message: die('Forbidden');

Shahrokhian's user avatar

answered Feb 5, 2014 at 21:34

virtual_cia's user avatar

Use ModRewrite:

RewriteRule ^403.html$ - [F]

Just make sure you create a blank document called «403.html» in your www root or you’ll get a 404 error instead of 403.

answered Feb 1, 2015 at 22:46

Jay Sudo's user avatar

Jay SudoJay Sudo

991 silver badge2 bronze badges

2

I understand you have a scenario with ErrorDocument already defined within your apache conf or .htaccess and want to make those pages appear when manually sending a 4xx status code via php.

Unfortunately this is not possible with common methods because php sends header directly to user’s browser (not to Apache web server) whereas ErrorDocument is a display handler for http status generated from Apache.

answered Nov 27, 2014 at 15:22

labemi's user avatar

Refresh the page after sending the 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>

answered Oct 12, 2014 at 6:08

Richard's user avatar

1

I know you can send a header that tells the browser this page is forbidden like:

header('HTTP/1.0 403 Forbidden');

But how can I also display the custom error page that has been created on the server for this type of error?

By default, just sending the header displays a white page, but I remember a while back reading that you can use the customer error page. Does anybody know?

alex's user avatar

alex

480k201 gold badges878 silver badges984 bronze badges

asked Feb 21, 2011 at 2:16

NightHawk's user avatar

0

Just echo your content after sending the header.

header('HTTP/1.0 403 Forbidden');

echo 'You are forbidden!';

forbidden

answered Feb 21, 2011 at 2:21

alex's user avatar

alexalex

480k201 gold badges878 silver badges984 bronze badges

3

http_response_code was introduced in PHP 5.4 and made the things a lot easier!

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

answered Apr 25, 2017 at 14:44

Marcio Mazzucato's user avatar

Marcio MazzucatoMarcio Mazzucato

8,8519 gold badges64 silver badges79 bronze badges

Include the custom error page after changing the header.

showdev's user avatar

showdev

28.5k37 gold badges55 silver badges73 bronze badges

answered Feb 21, 2011 at 2:30

Ibrahim AshShohail's user avatar

3

For this you must first say for the browser that the user receive an error 403. For this you can use this code:

header("HTTP/1.1 403 Forbidden" );

Then, the script send «error, error, error, error, error…….», so you must stop it. You can use

exit;

With this two lines the server send an error and stop the script.

Don’t forget : that emulate the error, but you must set it in a .htaccess file, with

ErrorDocument 403 /error403.php

Justine Krejcha's user avatar

answered Apr 18, 2013 at 17:26

Pyrrha's user avatar

PyrrhaPyrrha

2112 silver badges2 bronze badges

0

Seen a lot of the answers, but the correct one is to provide the full options for the header function call as per the php manual

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

If you invoke with

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

the normal behavior of HTTP 403 as configured with Apache or any other server would follow.

answered Dec 11, 2016 at 4:24

Jiju Thomas Mathew's user avatar

I have read all the answers here and none of them was complete answer for my situation (which is exactly the same in this question) so here is how I gathered some parts of the suggested answers and come up with the exact solution:

  1. Land on your server’s real 403 page. (Go to a forbidden URL on your server, or go to any 403 page you like)
  2. Right-click and select ‘view source’. Select all the source and save it to file on your domain like: http://domain.com/403.html
  3. now go to your real forbidden page (or a forbidden situation in some part of your php) example: http://domain.com/members/this_is_forbidden.php
  4. echo this code below before any HTML output or header! (even a whitespace will cause PHP to send HTML/TEXT HTTP Header and it won’t work)
    The code below should be your first line!

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

Now you have the exact solution. I checked and verified with CPANEL Latest Visitors and it is registered as exact 403 event.

answered Oct 6, 2015 at 18:00

Tarik's user avatar

TarikTarik

4,29039 silver badges36 bronze badges

4

.htaccess

ErrorDocument 403     /403.html

answered Feb 21, 2011 at 2:31

6

To minimize the duty of the server make it simple:

.htaccess

ErrorDocument 403 "Forbidden"

PHP

header('HTTP/1.0 403 Forbidden');

die(); // or your message: die('Forbidden');

Shahrokhian's user avatar

answered Feb 5, 2014 at 21:34

virtual_cia's user avatar

Use ModRewrite:

RewriteRule ^403.html$ - [F]

Just make sure you create a blank document called «403.html» in your www root or you’ll get a 404 error instead of 403.

answered Feb 1, 2015 at 22:46

Jay Sudo's user avatar

Jay SudoJay Sudo

991 silver badge2 bronze badges

2

I understand you have a scenario with ErrorDocument already defined within your apache conf or .htaccess and want to make those pages appear when manually sending a 4xx status code via php.

Unfortunately this is not possible with common methods because php sends header directly to user’s browser (not to Apache web server) whereas ErrorDocument is a display handler for http status generated from Apache.

answered Nov 27, 2014 at 15:22

labemi's user avatar

Refresh the page after sending the 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>

answered Oct 12, 2014 at 6:08

Richard's user avatar

1

Руслан Тиляев

@Heckfy325

Начинающий программист. Простите за глупые вопросы

Здравствуйте друзья программисты!
Не могли бы вы мне помочь) Идея такая:
У меня на сайте есть регистрация, авторизация. Соответственно есть и личный кабинет пользователя. Как сделать следующее: Чтобы если пользователь не залогинен или не зарегистрирован не смог перейти в личный кабинет («ishop.loc/cabinet.html»), чтобы выходила ошибка 403
ВОТ ТАК:
5cf7c4eb1175a773072437.jpeg


  • Вопрос задан

  • 1352 просмотра

для yii-2.
просто для yii — не знаю. найду что-нибудь — дополню ответ.

use yii\web\HttpException;
//some code...
throw new HttpException(403/*or any code*/, 'Forbidden'/*or any message*/);

а вообще нужно делать так:

try {
  //any code
} catch (Exception $e) {
    echo 'Выброшено исключение: ',  $e->getMessage(), "\n"; // any action/message
}

Пригласить эксперта

throw new yii\web\HttpException(403, 'Доступ запрещен');


  • Показать ещё
    Загружается…

22 сент. 2023, в 01:22

10000 руб./за проект

22 сент. 2023, в 00:39

30000 руб./за проект

21 сент. 2023, в 22:23

5000 руб./за проект

Минуточку внимания

12 ответов

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

Ibrahim AshShohail

Поделиться

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

header('HTTP/1.0 403 Forbidden');

echo 'You are forbidden!';

Изображение 107320

alex

Поделиться

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

header("HTTP/1.1 403 Forbidden" );

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

exit;

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

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

ErrorDocument 403 /error403.php

Pyrrha

Поделиться

http_response_code был введен в PHP 5.4 и упростил ситуацию!

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

Marcio Mazzucato

Поделиться

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

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

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

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

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

Jiju Thomas Mathew

Поделиться

.htaccess

ErrorDocument 403     /403.html

user557846

Поделиться

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

  • Земля на вашем сервере реальная 403 страница. (Перейдите на запрещенный URL-адрес вашего сервера или перейдите на любую 403-страничную страницу)
  • Щелкните правой кнопкой мыши и выберите «источник просмотра». Выберите весь источник и сохраните его в файл в своем домене, например: http://domain.com/403.html
  • теперь перейдите на свою настоящую запрещенную страницу (или запретную ситуацию в некоторой части вашего php): http://domain.com/members/this_is_forbidden.php
  • повторите этот код ниже до любого вывода или заголовка 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.

Tarik

Поделиться

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

RewriteRule ^403.html$ - [F]

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

Jay Sudo

Поделиться

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

.htaccess

ErrorDocument 403 "Forbidden"

PHP

header('HTTP/1.0 403 Forbidden');

die(); // or your message: die('Forbidden');

virtual_cia

Поделиться

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

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

labemi

Поделиться

Обновите страницу после отправки 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>

Richard

Поделиться

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

header('Location: my403page.html');

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

header('HTTP/1.0 403 Forbidden');

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

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

barners

Поделиться

Ещё вопросы

  • 0Ссылка на элемент id со смещением
  • 1Создание пустого файла в каталоге
  • 0Возможно ли получить ссылку на массив от референта его элемента?
  • 0Монго запрос на обновление, эквивалентный MySQL в
  • 1Как передать объект новому действию, изменить этот объект и обновить изменения в первом действии? [Дубликат]
  • 0В чем разница между .find и просто пробелом между предком и потомком?
  • 0Я не могу отобразить свой угловой код на моей странице HTML
  • 0Как отобразить HTML с угловым, когда объекты передаются
  • 0Magento добавляет пользовательское сообщение об ошибке
  • 0Qt mac переключается между панелями без изменения окна
  • 1Как мне суммировать данные временных рядов по дням в Python? resample.sum () не имеет никакого эффекта
  • 0SQL соответствует условиям на основе максимального значения
  • 0Как определить причину сбоя с помощью windbg (ntdll! KiFastSystemCallRet)?
  • 1Как закрыть всплывающее окно DatePicker, когда я щелкаю где-то еще в JDatePicker в java swing?
  • 0Создание более конкретного отчета в скрипте Sql / php
  • 1установка общего стиля кнопок для старых версий ОС
  • 0Загрузите файл, используя angularjs, asp.net
  • 1Вывод типа с интерфейсами
  • 1Получить значение из ListBox, содержащего TextBlocks, используя SelectedItem в WPF
  • 1Android: как подключить Studio к виртуальному устройству Genymotion?
  • 1Переслать тело из ответа в точности так, как он приходит
  • 0Ionic + ngCordova + фоновая геолокация + DeviceReady выпуск
  • 0проверка формы зависит от другого поля
  • 1Отделение сервиса ServiceStack от бизнес-логики
  • 1Как сценарии npm отдают приоритет локальной зависимости над глобальными?
  • 0Водяной знак на опубликованном изображении
  • 0как сохранить промежуточный итог 2d массива
  • 1Элемент Дарт: вызов функции на встроенном объекте JS
  • 0fnfilter проблема поиска в datatables
  • 0Mysql: создать вид как выберите *
  • 0ошибка: нет соответствующей функции для вызова const
  • 0Uncaught TypeError: Невозможно прочитать свойство ‘innerHTML’ для пустых функций. Js: 29 changeNameToLetters functions.js: 29 onclick
  • 1Изменить URL-адрес веб-службы во время выполнения [дубликата]
  • 0если / еще для вызова функции, остальная логика идентична
  • 1Java помощь относительно циклов
  • 1Как скрыть просмотр текста после анимации
  • 0кодовое имя setURL с HTML-файлом не работает на устройстве
  • 0Объект является нулевым или не является объектом в Internet Explorer 8
  • 0Как я могу инициализировать эту структуру?
  • 1Как использовать Linq в C # для анализа веб-страницы с помощью htmlagilitypack?
  • 0Двоичное дерево JavaScript с поиском по ширине
  • 0массив к строке на вставке PDO
  • 1Как обрабатывать большой размер ввода в Java?
  • 0Как плавно анимировать, настраивать цвет и управлять индикатором выполнения jQuery UI?
  • 0HTML-теги в функции оповещения JavaScript
  • 1стиль соединения arc3 (FancyArrowPatch) и путь CURVE3 — две квадратичные кривые Безье, разные результаты?
  • 1Файл не создан в SDCARD
  • 1React-Native: сборка gradlew выдает: Reaction-native-fbsdk: ошибка lint «библиотеки должны использовать одну и ту же версию»
  • 0simpleCart (js) событие beforeAdd для нескольких элементов
  • 0Угловая длина предметов в повторе

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

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

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

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

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

 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'); 

Понравилась статья? Поделить с друзьями:
  • Как вызвать звук ошибки windows
  • Как вызвать 500 ошибку специально
  • Как вызвать 500 ошибку django
  • Как выделяется речевая ошибка
  • Как выделить ошибку на сайте и отправить