Хорошо, я использую традиционный php, никаких фреймворков, ничего, я использую простой процедурный способ, теперь мой вопрос в том, что я искал какое-то время, но не получаю ответа на мой вопрос, я не использую файлы .htaccess на данный момент, но мне действительно нужно понять, как работает ошибка 404? У меня есть веб-сайт, где я показываю сообщение, связанное с категорией, например category = php, поэтому я передаю это как запрос на получение
$_GET['category'] == 'php';
В настоящее время я делаю что-то вроде этого:
$pocategory = $_GET['category']; if($pocategory == 'php' || $pocategory == 'javascript') { //Then show related posts } else { header('Location:404.php'); exit; }
Я имею в виду, что я просто хочу, чтобы php и javascript были полезными для значения запроса, остальное я хочу перенаправить на 404, но я не понимаю, как это сделать, поэтому я сделал так, что, если у меня есть более 50 категорий? Я не могу перечислить их всех в этом условии if, Inshort, как определить, является ли данное значение запроса получения недопустимым или нет.
Любая помощь будет высоко ценится.
.htaccess – это способ сделать это.
ErrorDocument 404 index.php?404
эта строка сообщит apache, какой файл загрузить. В приведенном выше примере вызывается основной скрипт index.php.
добавьте что-то вроде этого в начало вашего файла index.php:
$error_404 = isset($_GET["404"]) ? true : false;
теперь вы можете определить, есть ли у вас запрос на ошибку 404. $ error_404 будет правдой, поэтому почему бы не добавить простую функцию:
function error_404($error_404) { if($error_404 == true) { // do some error stuff here, like set headers, and some text to tell your visitor } }
теперь просто вызывайте свою функцию:
error_404($error_404);
лучше сделать это immidiatley после обработчика get:
error_404($error_404) $error_404 = isset($_GET["404"]) ? true : false;
или объединить два в одну строку:
error_404($error_404 = isset($_GET["404"]) ? true : false);
для ответа на вопрос, добавьте это в соответствующий скрипт:
$pocategorys_ar = array("php","javascript"); if (!in_array($pocategory, $pocategorys_ar)) { error_404(true); }
Убедитесь, что он имеет доступ к функции error_404 ().
Вы можете поместить все категории внутри массива следующим образом:
$pocategories = array ( 'php', 'javascript' ); if (in_array($pocategory, $pages)) { // ... } else { header('Location:404.php'); }
Другое дело, что вы можете создать файл html / php для каждой категории и сделать это так
if (is_file('sites/' . $popcategory . '.php') { include('sites/' . $popcategory . '.php'); } else { header('Location:404.php'); }