Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Навигация по сайту.
 
 автор: localGhost   (12.01.2005 в 07:58)   письмо автору
 
 

Вобщем вопрос в следующем:
какие плюсы и какие минусы у способа который я использую для навигации по сайту. Значит так, есть страница, допустим page.php,
в ней мы пишем примерно следующее:

if (!file_exists("content/$p.php")) {
   $mainBlock = "404.php";
} else {
   $mainBlock = "content/$p.php";
}

и далее по тексту где-то в недрах страницы пишем
include $mainBlock

переменная $p естественно в начале проверяеться, чиститься, урезаеться и т.д. и т.п.
а в адресной строке мы просто пишем:
......./page.php?p=trali_vali
ну и соответственно если файл такой (trali_vali.php) существует, то мы вставляем его в специально отведенное для него в шаблоне место..

вот вроде и все... Впринципе меня больше всего интересуют отрицательные стороны этого способо и методы защиты от них.

З.Ы. Код я упрастил до минимума из некоторых соображений...

   
 
 автор: glsv (Дизайнер)   (12.01.2005 в 10:04)   письмо автору
 
   для: localGhost   (12.01.2005 в 07:58)
 

Что можно сказать.... Навигация такого типа достаточно распространена. Почему бы и нет.
Если вы говорите, что переменная $p проверяется и чистится, т.е. ничего особо хитрого передать туда не удастся, то этот способ, достоточно, безопасен.

Я ранее тоже использовал такой метод построения сайта. Правда потом он мне разонравился. Если использовать одну страницу для шаблона, то в конце концов так ее "наворачивашь", что в ней уже трудно ориентироваться. И итоге перешел на другую схему. Не контент вставлять в один шаблонный файл (как в вашем примере), а шаблоны дизайна вставлять в "информационные" страницы.

   
 
 автор: Axxil   (12.01.2005 в 11:08)   письмо автору
 
   для: localGhost   (12.01.2005 в 07:58)
 

Я тут недавно открыл для себя smarty.
Мне до этого говорили, что это дескать для крупных проектов.
Да ни фига подобного.
Просто очень удобная система.
В кратце:
index.php

<?
// подключаешь модуль с библиотекой Smarty
include(setup.php);
//подллючаешь саму библиотеку
smarty= new Smarty_Lib;
// подключаешь шапку
smarty->display("header.tpl")
//подключаешь нужную страницу
 
include("php_modules/_".$task".php");break;
// подключаешь подвал
$smarty->display("footer.tpl");
?>

дальше в подкаталоге php_modules создаёшь файлы разделов
например _mainpage.php

<?
//обработчик для главной страницы.
//
$user_name="quest";
$my_name="Sergey";
// блок "закидывания" переменных в шаблон
$smarty->assign("NAME",$my_name);
$smarty->assign("USER",$user_name);
// подключение шаблона главной страницы.
$smarty->display("mainpage.tpl");
?>

и шаблон

<html>
<head>
<title> главная страница </title>
</head>
<body>
Автор:{$NAME}<br>
Гость:{$USER}<br>
</body>
</html>

то есть практически полное разделение дизайна и логиги.
А что касается навигации, то ИМХО очень удобно выносить разделы сайта в отдельные файлы и подлючать с главной страницы.
index.php?task=mainpage
а дальше уже наращивать параметры:
index.php?task=forum&id=1&topic=100&mess=20
может быть и не оптимально с точки зрения скорости, зато видна вся логика и очень удобно вносить изменения как в оформление, так и в програмную часть.

   
 
 автор: glsv (Дизайнер)   (12.01.2005 в 12:37)   письмо автору
 
   для: Axxil   (12.01.2005 в 11:08)
 

>Я тут недавно открыл для себя smarty....
Видимо, тут дело привычки. Кому то нравится, кому то нет.

>А что касается навигации, то ИМХО очень удобно выносить разделы сайта в отдельные файлы и подлючать с главной страницы.
index.php?task=mainpage
а дальше уже наращивать параметры:
index.php?task=forum&id=1&topic=100&mess=20

И одновременно это и минус тоже. Не всем нравится видеть в адресной строке непонятные краказяблы. Тем более если и много.
Такие параметры легко "потерять" при работе со скриптом. Они требуют более тщательного подхода при работе с ними.
Также, например, посетитель может просто стереть один такой параметр и посмотреть что из этого выйдет.

И поисковые системы не очень хорошо на это смотрят.

>зато видна вся логика
А вот на это очень хорошо смотрят "хакеры" :)

   
 
 автор: Axxil   (12.01.2005 в 13:45)   письмо автору
 
   для: glsv (Дизайнер)   (12.01.2005 в 12:37)
 

>А вот на это очень хорошо смотрят "хакеры" :)
Это как?

   
 
 автор: glsv (Дизайнер)   (12.01.2005 в 14:12)   письмо автору
 
   для: Axxil   (12.01.2005 в 13:45)
 

Задача хакеров — выяснить как работает тот и иной скрипт и попытаться его обмануть. Если им сразу видна логика работы скрипта, то это облегчаем им задачу.

   
 
 автор: Axxil   (12.01.2005 в 15:31)   письмо автору
 
   для: glsv (Дизайнер)   (12.01.2005 в 14:12)
 

А как бы вы,например, давали ссылки на темы в форуме при другом методе построения адресной строки?

   
 
 автор: glsv (Дизайнер)   (12.01.2005 в 22:53)   письмо автору
 
   для: Axxil   (12.01.2005 в 15:31)
 

Никак :)
Может мы поняли друг друга.
Вашу фразу
>ИМХО очень удобно выносить разделы сайта в отдельные файлы и подключать с главной страницы.

Я понял так: Имеется страница-шаблон. Но оформление не встроено на одну страницу, а "разбросано" по отдельным файлам. И какую страницу отобразить и какой элемент вставить решается передачей этой странице-шаблону переменных в строке браузера. Я правильно понял?

И вы, правильно написали:
>зато видна вся логика и очень удобно вносить изменения, как в оформление, так и в программную часть.

Но раз логика видно Вам, то также она будет видна и злоумышленникам. А значит это облегчает им задачу.
Одно дело, когда они видят только страницу

index.php

И другое, когда они видят как работает сайт и какими параметрами в адресной строке он управляется.
---------------------
Но это сугубо теоретические умозаключения. Естественно только по этим признакам никак нельзя судить о защищенности кода.

Но при этом подходе защите сайта должно быть уделено повышенное внимание. Нужно особо тщательно проверять что получено из адресной строки

   
 
 автор: ZC   (12.01.2005 в 19:33)   письмо автору
 
   для: Axxil   (12.01.2005 в 13:45)
 

>Это как?
А так, что так называемые "Хакеры", пользуясь данными, которые выводятся в адресной строке, могут внедрить туда вредоносные скрипты.
Например:
UNION SELECT .... FROM ..../*
Самые распространённые ошибки:
[SQL-Injection];
[Include ошибка];
и т.д.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования