как обрабатывать ошибку 403 с помощью PHP

Я построил php-скрипт, который иногда может заставить сервер возвращать сообщение об ошибке 403 (запрещенный доступ) из-за длины и содержимого данных, отправленных методом $ _POST. Это сообщение об ошибке 403 возвращается из-за некоторых правил mod_secure, которые фильтруют данные, отправленные на сервер.

Возможно ли, чтобы PHP обрабатывал это сообщение об ошибке 403? Например, я бы поймал статус сервера при запуске моего скрипта, а затем отобразил сообщение об ошибке, когда сервер вернет код статуса 403. Возможно ли это сделать на PHP?

Другими словами, не делая перенаправления, я просто хотел бы отобразить на текущей странице пользовательское сообщение, если сервер вернет код статуса 403 при выполнении самого скрипта PHP.

Спасибо за вашу помощь

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

ErrorDocument 403 /custom_403_handler.php 

Поэтому у меня есть три возможных решения для вас.

  1. Проверьте наличие ошибок URL и убедитесь, что указана фактическая веб-страница. Его общая причина для того, чтобы веб-сайт возвращал 403 Forbidden ошибку, когда URL-адрес указывает на каталог, а не на веб-страницу. Что можно сделать с использованием класса HttpRequest в PHP. Вы можете использовать http_get для выполнения запроса GET. Здесь вы также можете проверить URL-адрес .

     <?php $response = http_get("URL", array("timeout"=>1), $info); print_r($info); ?> 

    Вывод:

     array ( 'effective_url' => 'URL', 'response_code' => 403, . and so on ) 

    Важно то, что вы можете играть дальше.

  2. Использование завитка.

     function http_response($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_NOBODY, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $head = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if(!$head) { return FALSE; } return $httpCode; } $errorcode = http_response("URL"); //if success 200 otherwise different 
  3. Если вы уверены, что страница, которую вы пытаетесь достичь, верна, сообщение об ошибке 403 может быть ошибкой. Затем вы можете делать только две вещи: либо обратитесь к веб-мастеру, либо используйте собственное перенаправление. Для этого добавьте следующую строку в файл .htaccess и обработайте эту ошибку в forbidden.php

     ErrorDocument 403 /forbidden.php