LINUX.ORG.RU

Нужна помощь с php кодом


0

1

Есть небольшой движок сайта(хотя назвать это так, рука не поднимается) Вот код

<?php
extract($HTTP_GET_VARS);
$cntext='.html';
$cntdir='pages';
if (!$p)$p='/';
$l=$cntdir.ereg_replace('/$','/index',$p).$cntext;
$file=fopen($l,'r');
$title=substr(substr(fgets($file,512),5),0,-6);fclose($file);
include_once "header.html";
include($l);
include_once "footer.html";
?> 

Вопрос в следующем: как сделать, что бы если запрос идёт к странице, которой нет в директории /pages, то шёл редирект на error.php? допустим у меня в директории есть файлы

prod.html
my.html
kernel.html

а запрос идёт такого вида exapmle.ru/index.php?p=/table , то мне надо, что бы скрипт выдавал страничку error.php



Последнее исправление: phan13 (всего исправлений: 1)

Нашёл функцию file_exist, так что проблема решена

<?php
extract($HTTP_GET_VARS);
$cntext='.html';
$cntdir='pages';
if (!$p)$p='/';
$l=$cntdir.ereg_replace('/$','/index',$p).$cntext;
if (file_exists($l)) {
    include_once "header.html";
    include($l);
    include_once "footer.html";
} else {
    include_once "header.html";
    echo "Файл $l не существует";
    include_once "footer.html";
}
?> 

phan13
() автор топика

1) Почитай документацию чтоли

$_SERVER['QUERY_STRING']
2) Очень грубый вариант:
$d = scandir("/path/to/directory");
$p = $_Request['p'];
if (in_array($d))
{
    ...
}
else 
{
    header("Location: error.php");
}

Keleth
()

боже, тут еще ерег, перепиши лучше код весь, чувтвую там проблема на проблеме

spiritkhl
()

$HTTP_GET_VARS

Это не только давно закопано, но уже и успело разложиться до полной неузнаваемости

boombick ★★★★★
()
Ответ на: комментарий от boombick

а что использовать взамен? просто сейчас всё работает, сайт небольшой, около 20 страниц, и никаких нареканий нет

phan13
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.