Php правильно ли это?

GI80

Member
Joined
Aug 10, 2005
Messages
178
Reaction score
14
Age
44
Location
Москва
jonjonson, может быть посоветуешь народу какую-нибудь литературу по теме? Или расскажешь где сам черпал информацию?
 

jonjonson

Member
Joined
Mar 4, 2004
Messages
145
Reaction score
28
Age
52
GI80, на самом деле литературы именно о ООП разработке в PHP практически нет. Из серьезных и только на английском могу посоветовать эту http://www.phparch.com/shop_product.php?itemid=96 (попадался варезный вариант).
Восновном черпаю информацию на форуме пхп клуба http://phpclub.ru/ . Так же из их журнала пхп инсайд http://phpclub.ru/detail/magazine/ . На английском на форуме http://www.sitepoint.com/forums/forumdisplay.php?f=147

Плюс ко всему приходится обращаться к литературе по Java , и потом делать нечто по аналогии.
 

Vah

Member
Joined
May 8, 2005
Messages
142
Reaction score
5
Age
39
Location
Moscow
вот элементарный pg-controller

PHP:
                 if(!isset($_GET['part'])){
                     $part='index';
                 }else{
                     $part=$_GET['part'];
                 }
                 if(file_exists('mods/parts/'.$part.'.php')){
                     @include('mods/parts/'.$part.'.php');
                 }else{
                     @include('mods/parts/404.php');
                 }
 

RomanbI4

Member
Joined
Sep 30, 2005
Messages
44
Reaction score
2
Age
42
Location
MZK Town
Люди, вы хоть поясняйте народу, что нужно проводить чистку переменных.
В случае с vah, $_GET['page'] можно легко подменить на ../../../../etc/ ... сами дальше знаете чё...
2 jonjonson
Вышесказанное и к твоему коду относится.
И чем же ты тогда различаешь Front-контроллер и Page контроллер? По мне так одно является частью другого...
 

Vah

Member
Joined
May 8, 2005
Messages
142
Reaction score
5
Age
39
Location
Moscow
RomanbI4 а данный код не претендует на оригинальность..... это элементарный pg-контроллер........
а давайте тут ещё про безопастность начнем говорить?? кстать, вот у джонсона такого бага не может быть..... у ниво инклуд из массива дергаеццо......

кстать, можно на веб сервер сделать chroot куда нить и ты ваще кроме пустой виректории ничего не прочитаешь..... тут ещё и от админа сервера много зависит........ ;)

мона доработать ево.... это не долго если голова на плечах..... ;)
PHP:
$page=isset($_GET['page']) ? basename($_GET['page']) : 'index';
$page=file_exists("inc/".$page.".inc.php") ? "inc/".$page.".inc.php" : "inc/404.inc.php";
if($page==='')$page="inc/index.inc.php";
@include($page);

кстати, плюс ко всему вышесказаному, ну введешь ты ../../../../etc/ и что патом...... какое файло ты там прочитаешь если в конце ".php" приписываеццо????
PHP:
'mods/parts/'.$part.'.php'

Кстать, если умный такой - предложи свой способ, мега защищенный и настолькоже простой..... ;)
 
Last edited by a moderator:

Vah

Member
Joined
May 8, 2005
Messages
142
Reaction score
5
Age
39
Location
Moscow
я думаю он имел ввиду вот такую строчку и т.п.
PHP:
basename($_GET['page'])
 
Last edited by a moderator:

Vah

Member
Joined
May 8, 2005
Messages
142
Reaction score
5
Age
39
Location
Moscow
Кстать, что касаеццо головного вопроса, по теме......

Архитектуру сайта - ты можешь выбирать, не спрашивая нас...... хоть нахови каталоги не inc pic и т.д. а 01 02 03 ну и т.д. по порядку...... главное что ты это знаешь.....

Насчет реалиции кода.....

У тебя есть index.php...... понимаю что от С++ с ф-ей main() для системщика отвыкнуть сложно но тем не менее.......
Я бы сделал так:

в скрипте index.php написал бы грубо говоря все содержание анологичное ф-ии main().....

по модулям раскидал бы классы и ф-ии..... т.е. сделал бы библиотеки.......... и в самих библиотеках спрограммировал бы обработчики ошибок и т.д. и т.п.

по поводу разделения кода от форм (html'a) - сделай файлик, например output.php и инклудь его...... и в нем храни весь хтмл..... в виде функций.....

можно даже к классы впихивать такие вещи как:
PHP:
class user{

function user(...){
....
}

.....
.....
.....

function print_register_user_form($handler){
 if(function_exists($handler)){
  $handler();
 }
}

}

function p_reg_form(){
 echo "<form ... >";
......
......
......
}

$u=&new user();
$u->print_register_user_form("p_reg_form");

т.е. чтобы менять дизайн легко было, не изменяя класса - просто переназначать обработчики ф-й в классе........

моя точка зрения ваапще - как удобнее - так и работай.... не надо спрашивать как работать тебе и правильно ли ты делаешь......... ну и что, что ты не так как все делаешь - молодец........ возможно у тебя где-то конечно есть избыточный код, но главное чтоб работало нормально....... и быстро........ =)
 

jonjonson

Member
Joined
Mar 4, 2004
Messages
145
Reaction score
28
Age
52
RomanbI4, как тебе уже мягко заметили, в моем коде жесткий мапинг, который впринципе обламывает вставку всякой лажи. Кроме того, как опять уже отметили, вызываются php файлы (с проверкой их наличия), и что попало уже вызвать не возможно.

Теперь о разнице между фронт контроллером и пейдж контроллером...

Фронт контроллер выполняет код общий для всех страниц (например связанный со слешеванием GET и POST переменных, авторизацией и т.д.). У него может быть пред фильтр и пост фильтр (последний например может "сжимать" html код, отдаваемый посетителю).

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

И еще имеет место апликейшен контроллер, который выполняет код, связанный с экшинами, возможными для данной страницы.
 
C

cherneen

на тему...

Сам недавно начал изучать php. Нашел
http://phpfaq.ru/na_tanke
Тут описанно именно отличие... а так же море полезных ссылок.
Надеюсь поможет.
Удачи.
 

jonjonson

Member
Joined
Mar 4, 2004
Messages
145
Reaction score
28
Age
52
cherneen said:
Сам недавно начал изучать php. Нашел
http://phpfaq.ru/na_tanke
Согласен, - http://phpfaq.ru/ - хороший и постоянно обновляемый ресурс.

cherneen said:
Тут описанно именно отличие...
Какое отличие в контексте обсуждения в данной теме?
 
Top