Nickolay.info. PHP. Система управления сайтом MiniCMS

То, что здесь выложено - бесплатный побочный продукт другой работы. В этом виде система написана за пару дней и не претендует на многое. Тем не менее, она несложна в установке, удобна в эксплуатации, компактна по размеру и не так уж слаба по возможностям. Распространяется свободно, при этом я не требую обязательных ссылок на себя, хотя мне будет приятно, если Вы, используя что-то отсюда, сошлетесь на сайт nickolay.info.

P.S. Этот скрипт не получил развития, хотя идея "многопользовательского блога" была неплохая. Отчасти на базе этого скрипта делался Blognot.

Назначение MiniCMS и системные требования

Система управления сайтом на PHP+MySQL. Позволяет создать и поддерживать одноуровневую иерерхию разделов и статей, относящихся к разделам. Поддерживает одного администратора и нескольких авторов, которые могут готовить статьи для опубликования администратором. К каждой статье могут добавляться картинка в формате gif или jpeg, а также произвольный файл-архив.

Требует:

Задумана как мультиплатформенная, проверена на IIS и Apache.

В файле php.ini должна быть установлена директива

register_globals = On

Это нужно для работы редиректов header() и хранения глобальной переменной сессии.

Начиная с версии 4.2 значение по умолчанию может быть = Off

Необходима также включенная директива

file_uploads = On

По умолчанию директива обычно так и установлена.

Возможности

Установка MiniCMS

Развернув архив, скопируйте его содержимое в нужную папку сервера.

Папки pictures и archives предназначены для закачки файлов авторами, на них должны быть установлены достаточные для этого права (в идеале 0777). Для всех остальных папок и файлов достаточно прав по умолчанию (0644).

Перед созданием базы настройте систему, отредактировав "под себя" файл config.php. Имя администратора Admin пока не меняйте.

Внимательно прочитайте, что сказано внизу config.php о необходимости указания настроек MySQL в include_db.php. Как правило, эти настройки даются хостером.

Некоторые злые хостеры отключают функцию mysql_pconnect, тогда ее единственный вызов в include_db.php надо заменить на mysql_connect.

Если Вы хотите более "навороченный" дизайн, можете изменить также header.php и footer.php.

Все содержимое страниц размещается в единственную ячейку таблицы после включения header.php и до включения footer.php. Это нормально для небольших по объему статей.

В папке sql находится единственный файл minicms.sql, его нужно выполнить в своей среде MySQL.

Если Вы еще не пользуетесь замечательной средой PHPMyAdmin для управления своими базами - самое время ее скачать, она бесплатна и широко распространена.

Не забудьте, что на сервере НЕ ДОЛЖНО быть папки sql с файлом minicms.sql :-)

Выполните первый вход как Admin с паролем 123.

Дальше можно поступить одним из двух способов:

1) Зайти в админку и просто сменить пароль;

2) Создать нового пользователя-админа с другим паролем, удалить запись Admin, поменять настройку $admin в config.php и заново запустить систему.

Ограничения и направления развития

Защита системы в целом несовершенна.

I. Пароли хранятся прямо в базе, в реале есть способы лучше:

1) применяем crypt ("пароль_юзера") - и затем пишем полученную строку в базу. После ввода юзером пароля смотрим

if (crypt("ввод_юзера") == "значение_из_базы") {
 //пароль подтвержден
}

2) в запросе MySQL на сохранение пароля пишем что-то вроде

insert into таблица (поле_имени,поле_пароля) 
 values (имя_юзера,password('пароль_юзера'))
т.е. используем функцию MySQL password()

После ввода юзером имени и пароля делаем запрос типа

select count(*) from таблица where поле_имени='имя_юзера' 
 and поле_пароля=password('пароль_юзера')

Если имена юзеров уникальны и пароль введен верно, запрос вернет 1, иначе 0.

Оба способа имеют тот недостаток, что восстановить забытый пароль уже нельзя... нельзя и поменять его юзеру, поэтому я для простоты не стал заморачиваться.

II. Не предусмотрена защита от злонамеренных или неаккуратных действий авторов контента, которые могут добавлять в базу все, что угодно.

III. Не предусмотрена "многоступенчатая" защита публикуемых статей (например, если вы открыли форму добавления статьи и сразу нажали "Отправить", Вы предлагаете к публикации пустую статью :-) Но Вы же админ? Вот юзер, пишущий в гостевой, так сделать не сможет. :-)

IV. Не предусмотрено иной защиты от злоумышленников, кроме механизма сессий. В настоящее время он считается не совсем надежным, однако, чтобы "сломать", надо подделывать данные HTTP и тому подобное. Вряд ли Ваш сайт кому-то настолько нужен :-)

V. "Внутренняя" видимая только авторам и админу часть сделана предельно лаконичной по интерфейсу и возможностям, хотя минимум необходимых функций в ней есть.

VI. Вывод уменьшенной копии картинки (если она есть) несовершенен - картинку просто масштабирует браузер. На самом деле, лучше не возлагать на него эту работу, а написать сценарий вроде

$image=$HTTP_GET_VARS['image'];
...
$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];
...
$src = @ImageCreateFromJpeg ($image);
$dst = @ImageCreate($new_width,$new_height);
ImageCopyResized($dst, $src, 0, 0, 0, 0, $new_width,$new_height,$width,$height);
header("Content-type: image/jpeg");
ImageJpeg($dst);
ImageDestroy($src);
ImageDestroy($dst);

Только лень.

VII. Поиска по основным текстам статей, то есть, по таблице stories, в этой версии нет. Но его легко сделать по образцу поиска ключей (search.php). В любом случае, скорость такого поиска будет сильно уменьшаться с увеличением размеров базы статей.

Система может пригодиться Вам для изучения PHP и написания собственных "движков".

Права, демо, ссылка для скачивания

Все авторские права принадлежат мне. Условия использования системы соответствуют общим условиям использования бесплатного контента с сайта nickolay.info

Демо-сайт на движке системы работает по адресу www.minicms.tu1.ru (возможно, ссылка временная).

Возможные "вылетания" на страницу 403 не являются глюками системы, они связаны с тем, что бесплатный хостинг плохо относится к относительным путям во внутренних ссылках.

Скачать: minicms.zip, 39 Кб

Версия и дата изменения: v.1.0beta, 03.11.2007

Рейтинг@Mail.ru

вверх гостевая; E-mail