Навигация по сайту

Morf

Guest
Навигация по сайту

Есть файл описывыющий меню сайта (левая часть странички)
и файл описывающий контент, как мне сделать с помощью функции include () так, чтобы меню оставалось статичным а контент наполнялся разными страничками, вызываемыми из меню?? или для этого есть другой подход?
 

Erise

Guest
С каждым линком из меню передаёшь через $_GET какую-нибудь переменную, а потом, в зависимости от значения переменной, инклудишь нужную тебе страницу.

Например:
PHP:
<a href="<?=$_SERVER['PHP_SELF']?>?view=news">новости</a>
А потом:
PHP:
if (!empty ($_GET['view']) and $_GET['view'] == 'news') include ('news.php');
Если я тебя правильно понял. :))
 

Apocalepse

Новичок
Может кто то сечас сочетт за понты... но имхо, алгоритм лучше и полезней всегда разрабатывать самому, пусть может над ним посмеются в превый раз, но найдется человек, который укажет на твою ошибку, и в будушем ты сам сможеш разрабатывать быстрые и мощьные алгоритмы.
Ну а по делу:
Действительно передача определенных переменных черехз $_GET, распространенный вариант.
Это кнечно если у тебя нет веб-админки для настройки пунктов меню...
 

Erise

Guest
Apocalepse, может и не прав, но слышал выражение "Изобретение велосипеда"? :)
 

vedeney

Новичок
на сколько я понял у тебя есть один файл зборки, в который ты инклудиш остальные, но без инклуда "menu.php" думаю можно обойтись, а написать меню прямо в index.php, зачем лишний раз тревожить файловою систему? :) следующий код это три в одном, опредилялка, какой файл инклудить, рисовалка меню (с подсветкой текущей страницы), защита от инклуда "лишних" файлов.

PHP:
$start_page="news"; // начальная страница
$path_to_files="files/"; //путь к файлам

/* 2 масива, $menu для рисования меню, $files для хранения информации о наших файлах, обрати внимание, что у них одинаковые ключи, это важно!!! */

$menu=array ("news"=>"Новости","links"=>"полезные урли","any_page"=>"любая страничка");
$files=array("news"=>"my_news.php","links"=>"links.php","any_page"=>"some.php","error"="404.php");

if (!isset($_GET['page'])) $file=$start_page;
else $file=$_GET['page'];
// определили страницу по умолчанию или присваиваем значения $_GET['page']

// если не существует ключа $file значит пользыватель ошибся, определяем значения при ошибке
if (!array_key_exists($file,$files)) $file="error";

// рисуем меню c подсветкой текущей страницы
foreach ($menu as $key=>$value){
  if ($key==$file) print $value."<br>\n";
  else print "<a href=\"index.php?page=".$key."\">".$value."</a><br>\n";
}

// где нужно инклудим файл
include ($path_to_files.$files['file']);
Пользуйся, и никогда не делай так

include ($path_to_files.$_GET['page'].".php"); == "Вершина безумства"
 

Erise

Guest
В поиск. Первый вопрос очень много раз обсуждался.
 

vedeney

Новичок
Morf, а не было бы лутше сразу спросить про это в последнем топе? :)
а файле .htaccess
нужно прописать

RewriteEngine on
RewriteRule ^/(.*)/$ /index.php?id=$1
 

@K-47

Guest
Впринципе всё правельно.... МНОГИЕ критикуют... у меня есть только 1 скрипт... его нужно немного доработать...

<?php
if($_GET['f'] == "" && $_GET['act'] =="")
{
include("./inc/main.php");
}
if($_GET['f']!="" && $_GET['act']=="")
{
include($_GET['act']);
}
if($_GET['f'] !="" && $_GET['act'] !="")
{
include("./".$_GET['f']."/".$_GET['act'].".php");
}

?>

запрос идет следующим образом

http://gta.homa.net.ua/index.php?f=./&act=main

Типа токого

А вот как я бы посоветовал:

<?php
if($_GET['f'] == "" && $_GET['act'] =="")
{
include("./inc/main.php");
}
if($_GET['f']!="" && $_GET['act']=="")
{
include($_GET['act']);
}
if($_GET['f'] !="" && $_GET['act'] !="")
{
include("./".$_GET['f']."/".$_GET['act']."");
}

?>

Тода запрос будет:

http://gta.homa.net.ua/index.php?f=./&act=main.php

Зачем???

А для того что бы можно было написать

http://gta.homa.net.ua/index.php?f=...scrin.php?page1

Из ссылки ты наверно понял, что F= это дириктория, act= это загружаемый файл... во втором случае я написял с разширением...

-~{}~ 13.01.05 09:12:

Lf q j,mzcybnt

-~{}~ 13.01.05 09:14:

Да и обьясните пожалуйста... в чем лаг когда используеш переменную f= ?????? я никаких дыр в скрипте не обнаружил...:) :)
 

Alex_Ar

Новичок
vedeney
А почему нельзя делать так как ты написал? Ведь если в строке броузера написать адресс на удаленный файл, он же вроде не подключится, потому что прописана папка, в которой должен лежать файл. Я не прав?
 

@K-47

Guest
<A HREF="index.php?f=./&act=main"><B>>ГЛАВНАЯ></B></A>
НУ ВООБЩЕ ТО Я ТАК ЗАГРУЖАЮ... ПРОСТ http://gta.homa.net.ua/index.php?f=./&act=main ЭТО УЖЕ РЕЗУЛЬТАТ
 

Apocalepse

Новичок
Erise
нет нет, твой способ это один из самых распространенных, я им тоже пользуюсь :)
 

@K-47

Guest
Да у меня пока ничего.... я понимаю как скрипт работает... но по мненю Программыстов это всё не правельно... вот я и пытаюсь узнать как правельно...
 
Сверху