Пишем движок сайта (CMS – Систему управления контентом)
Админка будет храниться в поддиректории admin.
Доступ к админке будет осуществляться вводом пароля, который храниться в файле passw.php. Выглядит он примерно так:
<? $pass=”test”; ?>
Создайте этот файл, естесвенно, заменив пароль на свой.
Вход в админку будет осуществляться посредством ввода пароля файлом enter.php. При правильном вводе пароля в форму устанавливается флажок в сессии adm, позволяющий получить доступ к основным функциям админки.
Для начала напишем html-файл enter.html, в котором хранится html-код формы. Вот самый простой вариант (Вы можете оформить форму так, как Вам вздумается):
<html>
<body>
<h1>Вход</h1>
<form action=”enter.php” method=”post”>
Пароль: <input type=”password” name=”pass”>
<input type=”submit” value=”войти”>
</form>
</body>
</html>
Теперь напишем файл, открывающий по паролю доступ в админку. Он довольно простой, поэтому приведу лишь прокомментированный листинг:
<?php
include (“passw.php”); // подключаем файл, в котором хранится переменная $pass (пароль администратора)
if (isset($_POST['pass'])) // если послана переменная $pass из формы
{
if($_POST['pass'] != $pass) // сравниваем посланную из формы переменную с $pass из файла
{
die (“Неверный пароль”);
}
}
else // если НЕ послана переменная $pass из формы
{
include (“enter.html”); // подключаем форму логина
die (“”); // и выходим
}
// если пароль совпадает
session_start (); // стартуем сессию
$_SESSION['adm'] = true; // объявляем переменную сессии $adm, по наличию которой в дальнейшем определяем админ-права.
header (“Location: index.php”); // перенаправляем на index.php уже с открытой сессией
?>
Файл enter.php не будет вызваться напрямую. Он будет вызываться из файла index.php при отсутствии флажка adm в сессии. После успешного выполнения входа файл index.php подключает различные модули админки. Вот листинг файла index.php:
<?php
session_start(); // стартуем сессию
if (!$_SESSION['adm']) // проверяем наличие переменной сессии для идентификации админа
{
require(‘enter.php’); exit; // если отсутствует – выводим форму логина и завершаем сценарий
}
?>
<style type=”text/css”>
<!–
td {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
h1 {
font-family: Arial, Helvetica, sans-serif;
font-size: 15px;
}
–>
</style><table width=”800″ border=”0″ align=”center” cellpadding=”4″ cellspacing=”4″>
<tr>
<td bgcolor=”#D4D0C8″><strong>ПАНЕЛЬ АДМИНИСТРАТОРА</strong> </td>
</tr>
<tr>
<td bgcolor=”#FAFAFA”><a href=”index.php” mce_href=”index.php”>Старт</a> | <a href=”index.php?tp=add” mce_href=”index.php?tp=add”>Добавить статью</a> | <a href=”index.php?tp=menu” mce_href=”index.php?tp=menu”>Редактировать меню</a> | <a href=”index.php?tp=settings” mce_href=”index.php?tp=settings”>Редактировать настройки</a></td>
</tr>
<tr>
<td><?php
switch($_GET['tp']) // используем switch для подключения нужных сценариев в зависимости от значения переменной tp
{
case(”):
include(‘admin_main.php’);
break;
case(‘edit’):
include(‘admin_edit.php’);
break;
case(‘add’):
include(‘admin_new.php’);
break;
case(‘menu’):
include(‘admin_menu.php’);
break;
case(’settings’):
include(‘admin_settings.php’);
break;
case(‘delete’):
include(‘admin_delete.php’);
break;
}
?></td>
</tr>
<tr><!– тут ссылочка на наш сайт. Чтобы Вы не забывали, где учились делать этот скрипт–>
<td bgcolor=”#A3B2CC”>© 2008 | <a href=”http://www.webteach.ru” mce_href=”http://www.webteach.ru” target=”_blank”>www.webteach.ru</a></td>
</tr>
</table>
В файле index.php кроме php-кода, как Вы заметили, много обычного html. Хоть листинг и немного большеват для такой простой задумки, это оправдано.
Теперь о модулях админки. Вот список файлов модулей админки с названиями файлов и их кратким описанием:
- admin_main.php — выводит список страниц с ссылками для их редактирования и удаления
- admin_edit.php — модуль редактирования страниц
- admin_new.php — модуль создания новой страницы
- admin_menu.php — модуль для изменения порядка ссылок в меню
- admin_settings.php — позволяет изменить настройки скрипта (шаблон, главную и вид ссылок в меню)
- admin_delete.php — модуль удаления страниц
Теперь мы будем писать эти самые модули.




декабря 12, 2008 at 16:04
я бы не назвал этот сайт CMS, а просто движок
января 15, 2009 at 17:09
Сам-то понял, что сказал?
января 31, 2009 at 10:51
Без сомнения эта система управления – ЛУЧШАЯ в рунете, и не надо ее нагружать всякой ерундой! Единственный недостаток – отсутствие WYSIWYG-редактора. Вопрос – как его прикрутить? Ах да – еще недостаток: чтобы главная страница была index.php а не index.php?id=1. А такие, как AMD пусть пользуются этими непонятно для кого написанными джумлами-ньюками-мамбами-битриксами-даталайфами и прочим… kr4shr – исправь эти 2 недостатка – и ты сделаешь революцию в сайтостроении. И вообще ты молодец – наконец-то начинали появляться вменяемые программисты.
…Комментарий отредактирован Админом (подправлен лексикон
)
июня 14, 2009 at 15:20
Уважаемый аффтар, не ваш ли это сайт http://www.cms-chaynik.ru там cms точно такаже как вы тут написали, и добавлен WYSIWYG-редактор, видимо по просьбе bengann)))
июня 14, 2009 at 19:02
Сайт не наш… а ЦМС явно наша и есть
Вообще, по правилам “хорошего тона” (как минимум) – автор сайта должен был поставить ссылочку на нас… Ну да, Бог ему судья…
июля 18, 2009 at 11:07
Ну радует хоть одно, что они не барыжат этой cms
февраля 11, 2010 at 13:12
Как это не барыжат? Еще как барыжат: “Стоимость CMS Бизнес Чайник – всего 4900 рублей”
cms-chaynik.ru/cms-chaynik-mlm/
февраля 19, 2010 at 17:38
Блин, скажите как загружать без FTP файлы на сервер
апреля 5, 2010 at 20:21
А можно ли добавить поле для указания физического имени файла (контента)?
Или как в этом случае можно организовать ЧПУ нормального вида?
Хочется добиться
RewriteRule ^(.*)$ index.php?id=$1
например: site.ru/content/ будет просить index.php?id=content
мая 11, 2010 at 09:08
Скажите, пожалуйста, как можно создать два блока меню, пробывал все удвоением menu2.php, menu2.csv: и инклюдил в индексный фаил(в нем удваивал переменные, которые отвечают за вывод), как, например, парсер menu2.php, но так и не добился вывода второго блока меню, теги %MENU2% ни чем не заменяются, почему-то. Помогите, пожалуйста.
Добавить комментарий