Пишем самую простую и удобную систему навигации.
Многие интересуются как осуществить систему навигации типа ?naw=*. Я нашел одно из простейших и в тоже время очень удобных способов решения данной проблемы. Для этого мы будем использовать условия if и параметр GET.
В начале скрипту передается параметр GET, затем скрипт его обрабатывает: открывает каталог, ищет в нем файл, имя которого передан через параметр GET и добавляет расширение .php. Если файл найдет, то открывает с разрешением на чтение информации, а если нет, то выводит на экран – “Страница не найдена!”. Все файлы в папке со страницами должны быть защищены кодом:
<?
if(!defined(“INDEX”)) die(“Доступ к файлу закрыт!”);
?>
О этом способе защиты мы говорили с вами на прошлых уроках.
Теперь приступим к написанию скрипта…
Проверяем, передан ли параметр GET:
if($_GET['naw']):
Если параметр GET передан, то выполняется скрипт дальше, если нет, то процесс выполнения скрипта приостанавливается.
Проверяем есть ли такой файл в каталоге:
if(file_exists(‘str/’.$_GET['naw'].’.php’)){
Если есть, то скрипт продолжит работу, если нет, – то выполнится код в else{}.
Далее отображаем этот файл и разрешаем доступ к данным:
define(“INDEX”, “yes”);
include(‘str/’.$_GET['naw'].’.php’);
как видно define разрешил доступ к файлу, он откроется и выполнится. Если файл содержит php код, то этот код также выполнится.
Теперь напишем else и закончим скрипт:
}else{
print(‘Страница не найдена!’);
}endif;
Чтобы открыть файл - нужно скрипту передать параметр GET, в данном случае это $_GET['naw']. Это можно осуществить следующим способом – ?naw=имя файла без расширения. Пример ссылок:
<a href=index.php?naw=index>Главная</a>
<a href=index.php?naw=geust>Гостевая</a>
<a href=index.php?naw=other>Другое</a>
Всё, такая простая система навигации готова. Ниже приведены листинги файлов.
Листинг файла index.php:
<?php
if($_GET['naw']):
if(file_exists(‘str/’.$_GET['naw'].’.php’)){
define(“INDEX”, “yes”);
include(‘str/’.$_GET['naw'].’.php’);
}else{
print(‘Страница не найдена!’);
}endif;
?>
Листинг файла – страницы:
<?
if(!defined(“INDEX”)) die(“Доступ к файлу закрыт!”);
?>
Контент страницы…
Использованные функции:
define — определяет названную константу
defined – Проверяет, существует ли данная названная константа
file_exists — Проверить наличие указанного файла или каталога
include – Открывает файл и выполняет его.





июня 16, 2008 at 02:14
Привет, Всем!
Очень хороший пример – можно сказать современный, на мой взгляд. Сам использую примерно такой же метод, ротации страниц. Хочу немного поделится..
Я хочу добавить еще один момент, защиту от не желательный символов, которые могут навредить.
В Самом начале скрипта, помещаем следующую запись:
$cat = $_GET['naw'];
if(!preg_match(“|^[\d\w]+$|”,$cat)) die (“Доступ закрыт!”); // Запрещаем все, в том числе “пробел(ы)”, кроме букв и цифр.
Если вдруг, необходим, в переменной знак(и) “-,_” и т.п. Добавляем из в “preg_match”. Хотя я не рекомендую.
Спасибо за Внимание успехов..
сентября 26, 2008 at 03:44
Пардон….
if($_GET[’naw’]):
if(file_exists(’str/’.$_GET[’naw’].’.php’)){
define(”INDEX”, “yes”);
include(’str/’.$_GET[’naw’].’.php’);
}
else{
print(’Cтраница не найдена’);
}
endif;
a href=index.php?naw=index>Главная
a href=index.php?naw=guest>Гостевая
a href=index.php?naw=other>Прочая
ноября 1, 2008 at 23:21
Ну, а чем плохо использовать навигацию со структурой switch()?
Пример:
switch ($_GET['page'])
{
case gallery:
include (‘includes/gallery.php’);
break;
case main_content:
include (‘includes/main_content.php’);
break;
default:
include (‘includes/main_content.php’);
break;
}
а организация ссылок
на мой взгляд проще и доступней.
ноября 1, 2008 at 23:23
организация ссылок
echo ($site_path.”?page=main_content.php”)
echo ($site_path.”?page=gallery”)
ноября 2, 2008 at 00:37
Представленый выше вариант намного проще.
ноября 2, 2008 at 00:38
Да, кс… file_exists очень хорошая штука.
Добавить комментарий
Вы должны войти