Как написать свою CMS
|
|
kaiser | Дата: Среда, 29.09.2010, 14:24 | Сообщение # 1 |
Знаток
Группа: Проверенные
Сообщений: 132
Статус: Offline
| Подскажите, как написать свою CMS?
|
|
| |
selbus | Дата: Среда, 29.09.2010, 17:11 | Сообщение # 2 |
Продвинутый
Группа: Модераторы
Сообщений: 177
Статус: Offline
| Самое главное в написании CMS, это ядро. Вот самый простой способ: Code <?php if (!isset($_REQUEST['mod']) || ($_REQUEST['mod']=="") || (!file_exists ("mod/$mod/index.php"))) { $mod="home"; } else { $mod = $_REQUEST['mod']; } include("mod/$mod/index.php"); ?> Но этот способ далеко не безопасный.
Сообщение отредактировал selbus - Среда, 29.09.2010, 17:18 |
|
| |
kaiser | Дата: Суббота, 02.10.2010, 02:48 | Сообщение # 3 |
Знаток
Группа: Проверенные
Сообщений: 132
Статус: Offline
| А почему этот способ не безопасный?
|
|
| |
mcreyt | Дата: Понедельник, 04.10.2010, 14:03 | Сообщение # 4 |
V.I.P
Группа: Администраторы
Сообщений: 79
Статус: Offline
| Вот еще один способ реализации ядра: Code $mod = empty($_GET['mod']) ? 'index' : strtolower($_GET['mod']); include("mod/$mod/index.php");
|
|
| |
kaiser | Дата: Среда, 06.10.2010, 16:31 | Сообщение # 5 |
Знаток
Группа: Проверенные
Сообщений: 132
Статус: Offline
| Спасибо. Второй метод даже более компактней. Вот еще один вопрос. Создал базу MySQL, данные там отображаются нормально, а вот на сайте вместо русских символов, сплошные вопросы. В чем может быть проблемма?
|
|
| |
selbus | Дата: Среда, 06.10.2010, 16:37 | Сообщение # 6 |
Продвинутый
Группа: Модераторы
Сообщений: 177
Статус: Offline
| Если база в кодировке cp1251, добавь после mysql_select_db следующую строчку: Code @mysql_query("SET NAMES cp1251"); Если кодировка базы инная, то в строке прописываем соответственную кодировку.
|
|
| |
kaiser | Дата: Среда, 06.10.2010, 16:38 | Сообщение # 7 |
Знаток
Группа: Проверенные
Сообщений: 132
Статус: Offline
| Благодарю. Теперь все отображается как надо.
|
|
| |
kaiser | Дата: Воскресенье, 07.11.2010, 15:50 | Сообщение # 8 |
Знаток
Группа: Проверенные
Сообщений: 132
Статус: Offline
| Еще вопрос. А как реализовать парсинг ссылок, я имею введу автоматическое изменение под mod_rewrite, к примеру "http://мой-сайт.ru/index.php?mod=news" заменить на "http://мой-сайт.ru/news/".
|
|
| |
selbus | Дата: Понедельник, 08.11.2010, 02:34 | Сообщение # 9 |
Продвинутый
Группа: Модераторы
Сообщений: 177
Статус: Offline
| Нужно создать функцию, например "seo". В твоем случае kaiser, это будет выглядеть так: Code function seo($contents){ $contents = preg_replace("'(?<!/)index.php\?mod=([a-zA-Z]*)'", "/\\1/", $contents); return $contents;} Если в ссылке содержатся другие переменные, например номер страницы, то в функцию нужно добавить соответствующую строку замены. Пример: Code $contents = preg_replace("'(?<!/)index.php\?mod=([a-zA-Z]*)&(amp;)?page=([0-9]*)'", "/\\1/\\3", $contents); Кстати, строки замены нужно добавлять в убывающем порядке, т.е. от большего к меньшему, как показано ниже: Code function seo($contents){ $contents = preg_replace("'(?<!/)index.php\?mod=([a-zA-Z]*)&(amp;)?page=([0-9]*)'", "/\\1/\\3", $contents); $contents = preg_replace("'(?<!/)index.php\?mod=([a-zA-Z]*)'", "/\\1/", $contents); return $contents;}
|
|
| |
kaiser | Дата: Понедельник, 08.11.2010, 23:14 | Сообщение # 10 |
Знаток
Группа: Проверенные
Сообщений: 132
Статус: Offline
| Понятно, благодарю за подсказку.
|
|
| |