Опубликован: 22.10.2016 | Уровень: для всех | Доступ: платный
Лекция 1:

Обзор технологий. Начало кодирования

Лекция 1: 1234 || Лекция 2 >

Введение

CMScontent management system, обычно переводится как "система управления содержимым (сайта)". Возможно, вы слышали о таких широко распросранённых CMS, как Joomla, Битрикс. Создав собственную CMS, вы сможете понять, как работают другие, научитесь видеть их внутренние достоинства и недостатки. А несложные сайты (вроде блога с комментариями) вы сможете создавать прямо на своей CMS, которая позволит вам легко редактировать содержимое сайта, делать резервные копии, переносить файлы сайта и базу данных (БД) с одного хостинга на другой.

Для работы вам понадобятся следующие инструменты:

  • текстовый редактор с подсветкой синтаксиса: Notepad++ (на Windows), Kate или Geany (на Linux, MaxOS);
  • Mysql-сервер;
  • веб-сервер Apache с подключенным в виде модуля PHP;
  • phpMyAdmin (http://www.phpmyadmin.net/) для создания таблиц mysql;
  • браузер Firefox.

Вам не нужна будет громоздкая система разработки (IDE), весь код вашей CMS не превысит 100 килобайт (несколько файлов php, css, js).

Веб-сервер и mysql-сервер вы можете установить сразу, используя для Windows такой дистрибутив, как USBWebserver V8 (http://www.usbwebserver.net/en/download.php), а для Linux набор пакетов LAMP (MAMP, XAMP для MacOS). Если вы не сможете это сделать самостоятельно, используя компьютер и Интернет, вам, скорее всего, пока рано изучать данный курс.

Курс рассчитан на людей, знакомых со спецификациями HTML5, CSS2 и с основами программирования на PHP, Javascript, с работой в phpMyAdmin и составлением простых sql-запросов. Нужны также будут начальные знания английского языка – чтобы с помощью словаря разбирать, что значит "affected rows", "deprecated", или "alter table files add primary key ...".

HTML

В мире веб существуют сотни CMS, фреймворков и прочих "библиотек", и число их постоянно растёт. Потому что каждый человек, создавший хоть один сайт, обязательно задумается: нельзя ли в следующий раз избежать многочисленных трудов и создать новый сайт, взяв из старого сайта нечто существенное и слегка подправив?

Что общего у блога, сайта доставки суши и сайта школьного расписания? Обнаружив это общее, мы сможем значительно ускорить создание следующего сайта (например, landing-page для продажи воздушных шариков).

Любой сайт состоит из html-страниц, это лежит на поверхности. Значит, общим будет некоторый набор html-тэгов. Большинство из них повторяются от одного сайта к другому: DOCTYPE, title, charset, link, script... То есть можно смело взять такой кусок текста (листинг 1.1 пример 1.1):

<!DOCTYPE html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Астрология</title>
	<link rel="stylesheet" href="site.css" type="text/css">
	<script type="text/javascript" src="site.js"></script>
</head>
<body>
	<p><img src="files/img1.jpg" />Гадание по кофейной гуще</p>
	<p><img src="files/img2.jpg" />Оптом, в розницу и на экспорт</p>
</body>
Листинг 1.1.

– и использовать его для создания любой страницы любого сайта, подставляя вместо слов "Астрология" и "Гадание по кофейной гуще" другие слова (и копируя на место картинок img1.jpg и img2.jpg другие файлы). В этом случае каждая страница сайта будет реально существующим html-файлом, и вы сможете менять этот текст, редактировать его. То есть это уже будет что-то вроде системы управления содержанием.

Но работать в такой системе не очень удобно:

  • править тексты вы сможете только в текстовом редакторе на своём компьютере – в Блокноте (или Notepad++);
  • править текст надо будет очень аккуратно, чтобы не испортить окружающие html-тэги;
  • чтобы изменить текст, вам нужно будет скачать нужный html-файл к себе на комьютер, отредактировать его, а потом загрузить обратно на сервер по ftp-протоколу (то есть не через браузер, а с помощью отдельной специальной программы).

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

Здесь возникает две разные задачи:

  • Доступ к содержимому сервера через браузер.
  • Удобное изменение текстов сайта без опасности повредить html-код.

Для загрузки файлов на сервер используют html-формы. Браузер передаёт с помощью такой формы запрос, к которому присоединяет выбранный вами (на вашем компьютере) файл. Запрос в соответствии с протоколом HTTP должен быть "POST". Сервер без помощи специальных языков программирования (php, java, python) не сможет поместить отправленный вами файл в нужную папку.

Теоретически существует ещё возможность отправлять на веб-сервер файлы методом PUT (которые, например, http-сервер Nginx может получать и распеределять по папкам самостоятельно, без использования Php), но такой возможности (отправлять файлы методом PUT) пока нет у самих html-форм, поэтому мы будем исходить только из использования метода POST.

Это значит, что у работы на "чистом html" нет перспектив и нам сразу же понадобится php. А чтобы соединять разные тексты с одним и тем же повторяющимся фрагментом html, нужно будет хранить тексты отдельно от фрагментов html (называемых обычно шаблонами). Хранить тексты можно просто в отдельных файлах, но база данных (Mysql) намного удобнее.

Лекция 1: 1234 || Лекция 2 >
Михаил Гутентог
Михаил Гутентог

Этот курс ( Практикум по разработке CMS ) создавался, когда у PHP была версия 5.3 или 5.4. Со временем какие-то функции PHP устаревают (mysql, each), какие-то начинают работать по-другому (empty). Пожалуйста, следите за изменениями в PHP по сайту php.net!

Александр Мельников
Александр Мельников

Изучаю курс "Практикум по созданию CMS" в листинге 4.3

$n = count($_GET); if ($n > 0) { $param = each($_GET); // самое простое: пропускаем только первый параметр if ($n > 1 || !isset($valid[$param['key']])) { _404(); }

При попытке просмотра в браузере получаю ошибку: Deprecated: The each() function is deprecated.  И не пойму как исправить ситуацию.

Елена Суханова
Елена Суханова
Россия, Москва, МИЭТ, 2011
Анастасия Щитова
Анастасия Щитова
Россия, Москва, ФГБОУ ВО "Московский государственный юридический университет имени О.Е. Кутафина (МГЮА)", 2016