|
|
|
| Вобщем вопрос в следующем:
какие плюсы и какие минусы у способа который я использую для навигации по сайту. Значит так, есть страница, допустим page.php,
в ней мы пишем примерно следующее:
if (!file_exists("content/$p.php")) {
$mainBlock = "404.php";
} else {
$mainBlock = "content/$p.php";
}
|
и далее по тексту где-то в недрах страницы пишем
переменная $p естественно в начале проверяеться, чиститься, урезаеться и т.д. и т.п.
а в адресной строке мы просто пишем:
......./page.php?p=trali_vali
ну и соответственно если файл такой (trali_vali.php) существует, то мы вставляем его в специально отведенное для него в шаблоне место..
вот вроде и все... Впринципе меня больше всего интересуют отрицательные стороны этого способо и методы защиты от них.
З.Ы. Код я упрастил до минимума из некоторых соображений... | |
|
|
|
|
|
|
|
для: localGhost
(12.01.2005 в 07:58)
| | Что можно сказать.... Навигация такого типа достаточно распространена. Почему бы и нет.
Если вы говорите, что переменная $p проверяется и чистится, т.е. ничего особо хитрого передать туда не удастся, то этот способ, достоточно, безопасен.
Я ранее тоже использовал такой метод построения сайта. Правда потом он мне разонравился. Если использовать одну страницу для шаблона, то в конце концов так ее "наворачивашь", что в ней уже трудно ориентироваться. И итоге перешел на другую схему. Не контент вставлять в один шаблонный файл (как в вашем примере), а шаблоны дизайна вставлять в "информационные" страницы. | |
|
|
|
|
|
|
|
для: 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
может быть и не оптимально с точки зрения скорости, зато видна вся логика и очень удобно вносить изменения как в оформление, так и в програмную часть. | |
|
|
|
|
|
|
|
для: Axxil
(12.01.2005 в 11:08)
| | >Я тут недавно открыл для себя smarty....
Видимо, тут дело привычки. Кому то нравится, кому то нет.
>А что касается навигации, то ИМХО очень удобно выносить разделы сайта в отдельные файлы и подлючать с главной страницы.
index.php?task=mainpage
а дальше уже наращивать параметры:
index.php?task=forum&id=1&topic=100&mess=20
И одновременно это и минус тоже. Не всем нравится видеть в адресной строке непонятные краказяблы. Тем более если и много.
Такие параметры легко "потерять" при работе со скриптом. Они требуют более тщательного подхода при работе с ними.
Также, например, посетитель может просто стереть один такой параметр и посмотреть что из этого выйдет.
И поисковые системы не очень хорошо на это смотрят.
>зато видна вся логика
А вот на это очень хорошо смотрят "хакеры" :) | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(12.01.2005 в 12:37)
| | >А вот на это очень хорошо смотрят "хакеры" :)
Это как? | |
|
|
|
|
|
|
|
для: Axxil
(12.01.2005 в 13:45)
| | Задача хакеров — выяснить как работает тот и иной скрипт и попытаться его обмануть. Если им сразу видна логика работы скрипта, то это облегчаем им задачу. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(12.01.2005 в 14:12)
| | А как бы вы,например, давали ссылки на темы в форуме при другом методе построения адресной строки? | |
|
|
|
|
|
|
|
для: Axxil
(12.01.2005 в 15:31)
| | Никак :)
Может мы поняли друг друга.
Вашу фразу
>ИМХО очень удобно выносить разделы сайта в отдельные файлы и подключать с главной страницы.
Я понял так: Имеется страница-шаблон. Но оформление не встроено на одну страницу, а "разбросано" по отдельным файлам. И какую страницу отобразить и какой элемент вставить решается передачей этой странице-шаблону переменных в строке браузера. Я правильно понял?
И вы, правильно написали:
>зато видна вся логика и очень удобно вносить изменения, как в оформление, так и в программную часть.
Но раз логика видно Вам, то также она будет видна и злоумышленникам. А значит это облегчает им задачу.
Одно дело, когда они видят только страницу
И другое, когда они видят как работает сайт и какими параметрами в адресной строке он управляется.
---------------------
Но это сугубо теоретические умозаключения. Естественно только по этим признакам никак нельзя судить о защищенности кода.
Но при этом подходе защите сайта должно быть уделено повышенное внимание. Нужно особо тщательно проверять что получено из адресной строки | |
|
|
|
|
|
|
|
для: Axxil
(12.01.2005 в 13:45)
| | >Это как?
А так, что так называемые "Хакеры", пользуясь данными, которые выводятся в адресной строке, могут внедрить туда вредоносные скрипты.
Например:
UNION SELECT .... FROM ..../*
Самые распространённые ошибки:
[SQL-Injection];
[Include ошибка];
и т.д. | |
|
|
|