Четверг, 21.11.2024
Меню сайта
Вход на сайт
Поиск
Статистика
Рейтинг@Mail.ru
Реклама
Обновленные темыНовые сообщенияУчастникиПравила форумаПоиск
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: selbus  
Как написать свою 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
Понятно, благодарю за подсказку.
 
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: