| Следующая версия | Предыдущая версия |
| software:development:demo:cms:ucms:sample_php_page_404.php [2026/02/09 01:15] – создано VladPolskiy | software:development:demo:cms:ucms:sample_php_page_404.php [2026/02/22 12:04] (текущий) – [Дополнения и Файлы] VladPolskiy |
|---|
| ====== 4.7.5 Файл 404.php ====== | ====== 4.7.5 Файл 404.php ====== |
| * [[software:development:demo:cms:ucms:sample_html5_and_dinamic_page|Глава 4.0. Шаблон HTML и динамические страницы]] | * [[software:development:demo:cms:ucms:sample_html5_and_dinamic_page|Глава 4.0. Шаблон HTML и динамические страницы]] |
| * [[software:development:demo:cms:ucms:sample_html5_page|4.1 Шаблон HTML5]] | * [[software:development:demo:cms:ucms:sample_html5_page|4.1. Шаблон HTML5]] |
| * [[software:development:demo:cms:ucms:sample_php_page_and_dinamic_page|4.2 Шаблон PHP и динамические страницы]] | * [[software:development:demo:cms:ucms:sample_php_page_and_dinamic_page|4.2. Шаблон PHP и динамические страницы]] |
| * [[software:development:demo:cms:ucms:sample_php_page_sample|4.3. Файл sample.html]] | * [[software:development:demo:cms:ucms:sample_php_page_sample|4.3. Файл sample.html]] |
| * [[software:development:demo:cms:ucms:sample_php_page_style_css|4.3.1. Файл style.css]] | * [[software:development:demo:cms:ucms:sample_php_page_style_css|4.3.1. Файл style.css]] |
| * [[software:development:demo:cms:ucms:sample_php_page_scripts_js|4.3.2 Файл scripts.js]] | * [[software:development:demo:cms:ucms:sample_php_page_scripts_js|4.3.2. Файл scripts.js]] |
| * [[software:development:demo:cms:ucms:sample_php_page_index|4.4. Файл index.php часть 1]] | * [[software:development:demo:cms:ucms:sample_php_page_index|4.4. Файл index.php часть 1]] |
| * [[software:development:demo:cms:ucms:sample_php_page_header|4.5. Файл header.php]] | * [[software:development:demo:cms:ucms:sample_php_page_header|4.5. Файл header.php]] |
| * [[software:development:demo:cms:ucms:sample_php_page_footer|4.6. Файл footer.php]] | * [[software:development:demo:cms:ucms:sample_php_page_footer|4.6. Файл footer.php]] |
| * [[software:development:demo:cms:ucms:sample_php_page_index_part_2|4.7. Файл index.php часть 2]] | * [[software:development:demo:cms:ucms:sample_php_page_index_part_2|4.7. Файл index.php часть 2]] |
| * [[software:development:demo:cms:ucms:sample_php_page_home.php|4.7.1 Файл home.php]] | * [[software:development:demo:cms:ucms:sample_php_page_home.php|4.7.1. Файл home.php]] |
| * [[software:development:demo:cms:ucms:sample_php_page_about.php|4.7.2 Файл about.php]] | * [[software:development:demo:cms:ucms:sample_php_page_about.php|4.7.2. Файл about.php]] |
| * [[software:development:demo:cms:ucms:sample_php_page_contact.php|4.7.3 Файл contact.php]] | * [[software:development:demo:cms:ucms:sample_php_page_contact.php|4.7.3. Файл contact.php]] |
| | * [[software:development:demo:cms:ucms:sample_php_page_like.php|4.7.4. Файл like.php]] |
| | * [[software:development:demo:cms:ucms:sample_php_page_404.php|4.7.5. Файл 404.php]] |
| ===== Введение ===== | ===== Введение ===== |
| Файл контента **Файл 404.php** (или файл данных) — это именованный блок информации, хранящийся на сервере, который содержит текст, изображения, видео или аудио. Он представляет собой упорядоченный набор данных (байтов), которые могут быть текстовыми или бинарными.\\ | Файл контента **Файл 404.php** (или файл данных) — это именованный блок информации, хранящийся на сервере, который содержит текст, изображения, видео или аудио. Он представляет собой упорядоченный набор данных (байтов), которые могут быть текстовыми или бинарными.\\ |
| <img src="images/404.png" alt="Описание картинки"> | <img src="images/404.png" alt="Описание картинки"> |
| </code> | </code> |
| и проверяем ссылку http://localhost/index.php?page=404 в браузере | ===== Файл index.php ===== |
| | В файле **index.php** меняем функцию |
| | * **%%include('pages/' . $page . '.php');%%** на **%%require('pages/' . $page . '.php');%%** |
| | Если PHP выдает **предупреждение**, связанную с **include**, это означает, что скрипт не может найти |
| | или загрузить требуемый файл. В отличие от include, **require** вызывает **фатальную ошибку**. |
| | <code php index.php [enable_line_numbers="true",highlight_lines_extra="7"]> |
| | <?php |
| | // Получаем значение из URL: index.php?page=home |
| | // Проверьте, находится ли запрошенная страница в списке разрешенных. |
| | if (in_array($page, $allowed_pages)) { |
| | // Безопасно подключить из директории pages/ внешний файл из массива |
| | // ('home', 'about', 'contact', 'like') с расширением .php |
| | require('pages/' . $page . '.php'); |
| | } else { |
| | // Обработать некорректный запрос страницы (страница не найдена). |
| | echo 'Искомая страница не найдена.'; |
| | } |
| | ?> |
| | </code> |
| | Сохраняем и проверяем ссылку http://localhost/index.php?page=404 в браузере |
| | <note shadow>{{:software:development:demo:cms:ucms:index_php_js_22.png|переход страниц}}</note> |
| | И вот уже мы не получили **Предупреждения**, вместо этого **PHP** выдало ошибку и остановило выполнение скрипта, перейдя к //строке 10//, так как файла **404.php** нет в списке исключений. |
| | <code php index.php [enable_line_numbers="true",highlight_lines_extra="10"]> |
| | <?php |
| | // Получаем значение из URL: index.php?page=home |
| | // Проверьте, находится ли запрошенная страница в списке разрешенных. |
| | if (in_array($page, $allowed_pages)) { |
| | // Безопасно подключить из директории pages/ внешний файл из массива |
| | // ('home', 'about', 'contact', 'like') с расширением .php |
| | require('pages/' . $page . '.php'); |
| | } else { |
| | // Обработать некорректный запрос страницы (страница не найдена). |
| | echo 'Искомая страница не найдена.'; |
| | } |
| | ?> |
| | </code> |
| | Добавим в массив исключений нашу страницу **404.php** |
| | <code php index.php [enable_line_numbers="true",highlight_lines_extra="2"]> |
| | <?php |
| | include 'pages/footer.php'; |
| | $allowed_pages = array('home', 'about', 'contact', 'like', '404'); |
| | $page = $_GET['page'] ?? 'home'; // По умолчанию 'home' |
| | ?> |
| | </code> |
| | <note shadow>{{:software:development:demo:cms:ucms:index_php_js_21.png|переход страниц}}</note> |
| | И на конец наводим красоту, заменив в //строке 10// функцию при исключении вывода текста на функцию вывода страницы с ошибкой. |
| | * **%%echo 'Искомая страница не найдена.';%%** на **%%include 'pages/404.php';%%** |
| | |
| | <code php index.php [enable_line_numbers="true",highlight_lines_extra="10"]> |
| | <?php |
| | // Получаем значение из URL: index.php?page=home |
| | // Проверьте, находится ли запрошенная страница в списке разрешенных. |
| | if (in_array($page, $allowed_pages)) { |
| | // Безопасно подключить из директории pages/ внешний файл из массива |
| | // ('home', 'about', 'contact', 'like') с расширением .php |
| | require('pages/' . $page . '.php'); |
| | } else { |
| | // Обработать некорректный запрос страницы (страница не найдена). |
| | include 'pages/404.php'; |
| | } |
| | ?> |
| | </code> |
| | Сохраняем изменения и проверяем ссылку http://localhost/index.php?page=test в браузере |
| | <note shadow>{{:software:development:demo:cms:ucms:index_php_js_23.png?|переход страниц}}</note> |
| | |
| | С этого момента, все ссылки, через файл **index.php** кроме указанных в массиве исключения, будут перенаправлятся на **index.php**, либо на страницу **"ошибки енота"**. Проверим это и перейдем к следующей главе. |
| ===== Дополнения и Файлы ===== | ===== Дополнения и Файлы ===== |
| см. также: | см. также: |
| * [[https://www.w3.org/|Консорциум Всемирной паутины (W3C)]] | * [[https://www.w3.org/|Консорциум Всемирной паутины (W3C)]] |
| * [[https://www.w3.org/International/questions/qa-html-language-declarations.ru|Объявление языка в HTML]] | * [[https://www.w3.org/International/questions/qa-html-language-declarations.ru|Объявление языка в HTML]] |
| | * [[software:development:demo:cms:ucms:sample_php_deny access|4.8.0 Запрет доступа к просмотру страниц на основе сессий]] |
| |
| <note page> | <note page> |
| {{:icons:16:arrow-transition.png?|}}</wrap> | {{:icons:16:arrow-transition.png?|}}</wrap> |
| </note> | </note> |
| | |