Я пытаюсь найти свой заголовок php в определенном месте при получении значения GET, и если это значение неверно, оно найдет местоположение по умолчанию, такое как home.php
вот что я сделал до сих пор
<?php // Check which page is queried if(isset($_GET['page'])){ $got = $_GET['page']; } else { $got = 'home'; } // Now goto that location if(header('Location: '.$got.'.php')){ header('Location: '.$got.'.php'); } else { header('Location: home.php'); } ?>
Вероятно, вы ищете функцию file_exists ().
Вы бы сделали что-то подобное;
$got = 'home'; if(isset($_GET['page'])) { if(file_exists($_GET['page'].".php")) { $got = $_GET['page']; } } header('Location: '.$got.'.php'); exit;
Редактировать. Вам будет лучше, указав страницы, которые вы позволите пользователям увидеть:
$got = 'home'; $whitelist = array('contact', 'about', 'blog', ...); // could come from your database if(isset($_GET['page'])) { if(file_exists($_GET['page'].".php") && in_array($_GET['page'], $whitelist)) { $got = $_GET['page']; } } header('Location: '.$got.'.php'); exit;
Это гарантирует доступ только к просмотру, который вы разрешаете.
if (file_exists( $got . '.php') { header('Location: '.$got.'.php'); } else { header('Location: home.php'); }
Но лучше создать белый список доступных страниц, потому что такой код будет уязвим для инъекций заголовков
Проверьте, существует ли файл
if (file_exists($got . ".php") { header('Location: ...'); exit; } else { header('Location: ...'); exit; }
Очевидно, вам нужно убедиться, что ранее не были отправлены заголовки.
Может быть, вам нужно использовать file_exists ?
попробуйте это, он ищет все ваши php-страницы в каталоге, который вы белеете (динамически), затем сравнивает его с запросом get, чтобы увидеть, находится ли эта страница в вашем каталоге страниц. если он затем загружает его, он загружает ваш home.php
$page = array(); $it = DirectoryIterator($dir); foreach ($it as $page) { $pages[] = $page; } if (isset($_GET['page']) && in_array($_GET['page'], $pages) header("Location: " . $pages[$_GET] . ".php"); // or require_once $page . '.php'; else header("Location: home.php"); // or require_once "home.php";
Используйте curl, чтобы проверить, возвращает ли запрос HTTP 200
$http = curl_init($url); // do your curl thing here $result = curl_exec($http); $http_status = curl_getinfo($http, CURLINFO_HTTP_CODE); if($http_status != 200) { $url = "/home.php"; } header('Location: '.$url);