Лекции     Книги     Рефераты    
Диплом, курсовая на заказ

Пишем самую простую и удобную систему навигации.

news date мая.21.2008    categories Web-программирование > PHP    comments (6)

Многие интересуются как осуществить систему навигации типа ?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 – Открывает файл и выполняет его.


Обсуждения

6 комментариев к “Пишем самую простую и удобную систему навигации.”
  1. AlexDIXI пишет:

    Привет, Всем!

    Очень хороший пример – можно сказать современный, на мой взгляд. Сам использую примерно такой же метод, ротации страниц. Хочу немного поделится..

    Я хочу добавить еще один момент, защиту от не желательный символов, которые могут навредить.

    В Самом начале скрипта, помещаем следующую запись:

    $cat = $_GET['naw'];

    if(!preg_match(“|^[\d\w]+$|”,$cat)) die (“Доступ закрыт!”); // Запрещаем все, в том числе “пробел(ы)”, кроме букв и цифр.

    Если вдруг, необходим, в переменной знак(и) “-,_” и т.п. Добавляем из в “preg_match”. Хотя я не рекомендую.

    Спасибо за Внимание успехов..

  2. Yurk_in пишет:

    Пардон….

    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>Прочая

  3. Dexter пишет:

    Ну, а чем плохо использовать навигацию со структурой 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;
    }
    а организация ссылок

    на мой взгляд проще и доступней.

  4. Dexter пишет:

    организация ссылок
    echo ($site_path.”?page=main_content.php”)
    echo ($site_path.”?page=gallery”)

  5. Another пишет:

    Представленый выше вариант намного проще.

  6. Another пишет:

    Да, кс… file_exists очень хорошая штука.

Добавить комментарий

Вы должны войти



© 2009 - 2010 | Webteach.ru | Образовательный портал