Принцип работы CMS (реализация)

  • Автор темы SeeYouLateR
  • Дата начала

SeeYouLateR

Guest
Принцип работы CMS (реализация)

Здраствуйте !
Я пише cms на php+mysql , и у меня возник вопрос по ...даже не знаю как это назвать ..ну ладно обьясню:
Как лучше сделать (допустим !!! скрипт новостей) . Где :
add_news.php - добавить
edit_news.php - дерактировать
del_news.php - удалить или
PHP:
$cmd = @$_GET['cmd'];
if ($cmd == '')
{
//ВЫВОДИТ СПИСОК НОВОСТЕЙ
.....
}

if ($cmd == 'edit')
{
// Выводит форму редактора
}
Я бы хотел спросить , это безопасно , или лутше использовать отдельные файлы :) фот сопстфенно и фсе
 
SeeYouLateR
а какая принципиальная разница?
имхо - отдельные файлы, т.к. редактировать проще, да и удобнее...

з.ы. а зачем
PHP:
$cmd = @$_GET['cmd'];
?
 

alexhemp

Новичок
Loshadka

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

robocomp

Новичок
Re: Принцип работы CMS (реализация)

Здравствуйте!
Во-первых, стоит стереть, всё что вы уже написали и пойти вот сюда, скачать и поставить и пользоваться
lenya.apache.org (там, конечно, нет ни мускуля ни пхп, но изучение системы явно очень полезно будет)

Далее, как мне кажется, приложение достаточно удобное получается, когда оно реализует шаблон MVC, как, например, mojavi.org, которая была положена в основу паре знакомых мне СMS

В виду того, что было сказано выше, на мой взгляд, удобней сделать всё в одном единственном файле index.php
для простоты можно сделть
index.php?mod=News&act=Edit&news_id=2

а в самом файле index.php
PHP:
require ('Modules/'.$_GET['mod'].'/index.php');
/*не забываем, что использовать такие конструкции очень не рекомендуется из-за безопасности
*/
а ф Modules/News/index.php пишем
PHP:
switch ($_GET['act])
{
  case 'Edit':
     $news = new News ($_GET['id']);
     $news->fetch();
     // ну и всё, что в голову взбредёт 
  break;
}
ну и так далее. сомневаюсь, что очень понятно описал -(
 
robocomp
никто про
-----------
PHP:
require ('Modules/'.$_GET['mod'].'/index.php'); 
/*не забываем, что использовать такие конструкции очень не рекомендуется из-за безопасности 
*/
-----------
и не говорил.
 

SeeYouLateR

Guest
з.ы. а зачем
$cmd = @$_GET['cmd'];
----- без этого не пашет , апач не настроен ..
Вы главное скажите это безопастно ?
 
безопасно... только я не понимаю, а чем тебя не устраивает использование в скрипте $_GET или $_POST?

з.ы. а апач как раз настроен правильно.
 

lucas

Guest
Вы главное скажите это безопастно ?
Это неправильно. Никогда так не пиши.

Правильно:
PHP:
$cmd = isset($_GET['cmd']) ? $_GET['cmd'] : 'default_value' ;
Или то же самое:
PHP:
if (isset($_GET['cmd'])) { $cmd = $_GET['cmd'] ; }
else { $cmd = 'default_value' ; }
 

Фанат

oncle terrible
Команда форума
Каждому свое. Кто-то классы использует, кто-то кучу мелких файлов, кто-то один файл на модуль. Все зависит от стиля программирования.
и, тем не менее, держать логическую единицу приложения, скрипт, который работает с определённой таблицей, лучше в одном файле.
Тем более, что кода-то при этом и для одного файла маловато получится.
PHP:
<?
if($_SERVER['REQUEST_METHOD']=='POST') {
  $id=intval($_POST['id']);
  if ($id) $res=dbUpdate();
  else $id=dbInsert();
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); 
  exit;
}
if (!isset($_GET['id'])) {
  $DATA=db("SELECT * FROM $table");
  include 'list.tpl.php';
} else {
  if ($id=intval($_GET['id'])) $row=db("SELECT * FROM $table WHERE id=$id"); else $id=0;
  include 'form.tpl.php';
}
?>
никакой комманд, как видно, не нужен (удаление ведь делать не нужно - нужно делать пометку. сто раз сталкивался с жалобами на неправильное удаление).
Ну, если уж так уж надо удалять физически, то только для этого случая комманд и добавить
 
Сверху