Проектування власної CMS для створення веб-сайтів
Вступ
Зараз уявити собі пошук інформації
без інтернета та сайтів важко уявити, оскільки це стало певною частиною нас
самих. Ми спілкуємося в інтернеті, дивимося фільми, слухаємо музику. В цьому
всьому нам допомагають сайти. Вже зовсім скоро навіть школярі молодших класів
будуть мати свій сайт і ми в цьому їм допоможемо. Уявіть собі ви скачуєте архів
собі на комп’ютер та після встановлення ви є володарем свого особистого сайту.
Ви можете міняти його вигляд,
структуру та контент не знаючи
програмування.
Метою даної курсової роботи було
розглянути загальні теоретичні відомості, які стосуються розробки систем
управління контенту та особливостей реалізації її на сервері Apache.
Робота складається із трьох
розділів. У першому розділі розглянуто CMS, його основні характеристики,
принципи роботи та різновид. У другому розділі розглядається архітектура
сервера Apache і файлів які фігурують головними в моїй задачі. У третьому
розділі описано постановку задачі та її реалізацію. Сторінки написані на:html,
css, php, js, config.
І. Загальні теоретичні відомості
.1. Система керування вмістом та її
різновиди
Систе́ма
керува́ння вмі́стом
(СКВ\CMS) -програмне забезпечення для організації веб-сайтів чи інших
інформаційних ресурсів в Інтернеті чи окремих комп'ютерних мережах.
Існують сотні, а може, навіть й
тисячі доступних CMS - систем. Завдяки їхній функціональності їх можна
використовувати в різних компаніях. Незважаючи на широкий вибір
інструментальних та технічних засобів, наявних в CMS, існують загальні для
більшості типів систем характеристики.
Перші СКВ були розроблені у великих
корпораціях для організації роботи з документацією. У 1995-му від компанії CNET
відокремилася окрема компанія Vignette, яка започаткувала ринок для комерційних
СКВ. З часом діапазон продукції розширювався і все більше інтегрувався у
сучасні мережеві рішення аж до популярних веб-порталів.
Багато сучасних СКВ поширюються як
безкоштовні і легкі у встановленні (інсталяції) програми, які розробляються
групами ентузіастів під ліцензією GNU/GPL.
Системи управління веб-сайтом часто
розраховані на роботу у певному програмному середовищі. Наприклад,
системаMediaWiki, під управлінням якої працює Вікіпедія, написана мовою
програмування PHP і зберігає вміст і налаштування у базі даних типу MySQL або
PostgreSQL; тому для її роботи потрібно, щоб на сервері, де вона розміщена,
були встановлені веб-сервер (Apache, IIS чи інший), підтримка PHP та системи
керування базами даних MySQL або PostgreSQL, а також, в разі необхідності,
додаткові програми для обробки зображень чи математичних формул. Такі вимоги є
досить типовими для відкритих СКВ.content management systems для управління
веб-сайтами (наприклад, енциклопедіями, подібними до Вікіпедії,
онлайн-виданнями, блогами, форумами, корпоративними чи персональними веб-сторінками
та ін.)
Транзакційні СКВ для забезпечення
транзакцій у електронній комерції.
Інтегровані СКВ для роботи з
документацією на підприємствах.
Електронні бібліотеки (Digital Asset
Management) для забезпечення циклу життя файлів електронних медіа (відео,
графічн., презентації тощо).
Системи для забезпечення циклу життя
документації (інструкції, довідники, описи).
Освітні СКВ - системи для
організації Інтернет курсів та відповідного циклу життя документації.
Наприклад:
.Системи, що мають українську локалізацію:-
використовується більш ніж 20 ВНЗ України, має українську локалізацію;CMS -
досить гнучка в налаштуванні CMS на CodeIgniter, має українську локалізацію;-
повна українська локалізація Joomla! 1.5.x, Joomla! 1.0.x - переклад
фронтальної частини. Переклади розширень.- використовується у Тернопільському
національному технічному університеті імені Івана Пулюя;- використовується у
Київському національному університеті імені Тараса Шевченка.- перша українська
безкоштовна CMS код якої повністю написаний в Україні.
.Системи, що не мають української
локалізації але одночасно не мають проблем із відображенням символів кирилиці
(ті, що працюють з шрифтами юнікод UTF-8):;;;;.
.Платформенні СКВ (Platform Content
Management Systems) підтримують автоматизацію роботу з комп'ютерними файлами,
папками, програмами у визначеному програмному середовищі.
.Корпоративні СКВ (Enterprise
content management systems) з різноплановим пристосуванням для потреб
підприємницької діяльності. Підтримують цикл життя внутрішньої і зовнішньої
документації.
Приклади корпоративних
СКВ:;CMS;;;pages;Software;;;Martini;CMS Groupware;
1.2 Способи роботи
Генерація сторінок за запитом.
Системи такого типу працюють на основі зв'язки «модуль редагування → база
даних → модуль представлення». Модуль представлення генерує сторінку з
контентом при запиті на нього на основі інформації з бази даних. Інформація в
БД змінюється за допомогою модуля редагування. Сторінки заново створюються
сервером при кожному запиті, а це створює навантаження на сервер. Але це
навантаження може бути багатократно зменшене при використанні методів
кешування, які є в сучасних веб-серверах.
Генерація сторінок при редагуванні.
Системи цього типу при редагуванні сторінок вносять зміну у вміст сайту та
створюють набір статичних сторінок. При такому способі втрачається
інтерактивність між відвідувачами сайтів та контентом даного сайту.
Змішаний тип. Як зрозуміло із назви,
цей тип поєднує в собі переваги перших двох. Може бути реалізований шляхом
кешування - модуль представлення генерує сторінку один раз, надалі вона через
деякий час буде в декілька разів швидше завантажуватися із кешу. Кеш може
оновлюватись як автоматично, через деякий час чи при внесенні змін у певні
розділи сайту, так і вручну за командою адміністратора. Другий підхід -
збереження певних інформаційних блоків на етапі редагування сайту і збирання
сторінок з цих блоків при запиті відповідної сторінки користувачем.
.3 Особливості
Існують CMS двох видів: платні і
безкоштовні.
Безкоштовні CMS поширюються у
вільному доступі, і, як наслідок, за технічну підтримку ніхто не відповідає.
Варто пам'ятати про те, що і за збереження, безпеку, при використанні
безкоштовної CMS ніхто не буде нести відповідальності.
Характеристики CMS безкоштовної
нітрохи не поступаються за якістю CMS платним, проте вірна приказка і для
інтернет технологій щодо безкоштовного сиру. Нерідко CMS поширюють угруповання
хакерів, з метою частково або повністю здійснювати контроль над сайтами.
Платні CMS поділяються на два типи:
системи із закритим кодом (вихідний
код закодований (кріптованний) і не допускає будь-яких змін);
системи з відкритим кодом (для
внесення зміни будь-якої з функціональних можливостей вихідний код відкритий).
Характеристики CMS з відкритим і
закритим кодом мають ряд характерних ознак, які є як перевагами, так і
недоліками. Відкритий код дозволяє зловмисникам простіше зламати сайт, а це
значить, що можуть постраждати всі ресурси, для створення яких була обрана саме
ця CMS. Для того, щоб купити систему з закритим кодом, необхідно переконатися в
правильності вибору. Перерахуємо далі по яким характеристикам CMS необхідно
вибрати оптимальну для Вашого бізнесу.
Критерії для визначення
функціональності CMS Критеріїв для визначення функціональності CMS всього
чотири:
функціональність системи управління
(основні характеристики CMS це юзабіліті, настроюваність, зручність в обігу,
навігації; можливість незначних змін і редизайну без зупинки роботи сайту);
універсальність системи управління
(можливість використовувати дані характеристики CMS для створення сайту
будь-якого рівня складності, будь то візитка або великий портал);
адміністрування сайту (можливість
призначати різним групам користувачів різні рівні доступу, якісний захист
системи від зломів);
інші характеристики CMS (такі як
можливість перенесення на іншу платформу без втрати інформації, можливість
зберігати резервні копії, хороший відгук бази даних).
Важливою характеристикою CMS є
своєчасне реагування команди розробників на запити клієнта. Це важливо, тому як
мало просто встановити CMS, але і подальша інформаційна та технічна підтримка
важлива.
Система управління - програма, що
надає інструменти для додавання, редагування, видалення інформації на сайті.
Існують різноманітні системи управління сайтом, серед яких зустрічаються платні
і безкоштовні, побудовані за різними технологіями. Кожен сайт має панель
управління, яка є лише частиною всієї програми, але достатня для управління
ним. Велика частина сучасних систем керування вмістом реалізується у вигляді
візуального (WYSIWYG) редактора - програми, яка створює HTML-код із спеціальної
спрощеної розмітки, що дозволяє користувачеві простіше форматувати текст.
1.4 Функції прикладних програм
керування контентом
Найпоширеніші функції CMS - систем
перераховані нижче:
Створення контенту. Це сукупність
завдань, які виконують автори текстів, фотографи, графічні художники, відео
продюсери і звукорежисери, маркетингові експерти, юристи та інші люди, які
подають оригінальний матеріал для користувачів веб-сторінки.
Збір та адаптація контенту з
існуючих джерел.
Класифікація та індексування
контенту. Контент повинен бути описаний формальними ознаками (наприклад, дата
створення, автор) і класифікаційними даними (наприклад, предметна категорія чи
ключові слова). Така діяльність описується як зв'язання контенту та метаданих.
Перегляд контенту. Необхідний для
всіх видів опублікованого контенту.
Затвердження. Формальне затвердження
опублікованого контенту - важлива складова правової відповідальності за нього.
Перетворення контенту. Тексти,
графіка, звуки та інші форми контенту мають бути перетворені до формату, що є
найзручнішим або використовується в даній CMS - системі.
Зберігання контенту. Контент, як
правило, зберігається в файлах або в БД. У випадку складніших застосувань
контент підлягає управлінню версіями програмного забезпечення (SMC).
Тестування і верифікація контенту.
Може стосуватись різних аспектів, таких як:
Розірвані зв'язки;
Сторінки, які повільно
відкриваються;
Програмні помилки в аплетах і
скриптах;
Помилки в комунікації клієнт-сервер.
Перевірка готовності контенту - це
тип тестування, який включає верифікацію (перевірку) завершеності та цілісності
великого об'єму контенту (наприклад, інформацію про різні аспекти нової
послуги).
Публікація. Враховує всі фізичні
аспекти публікації контенту, включаючи дублювання контенту на різних серверах.
Підтримка, актуалізація та контроль
за змінами. Включає моніторинг опублікованого контенту та реагування на сигнали
та необхідність змін.та архівування. Recall може відбуватися з багатьох причин
- наприклад, втрата актуальності контенту, втрата законних прав на контент,
низька частота відвідуваності, поява новішого контенту тощо. Будь-який Recalled
контент є архівований.
Звіти та аналіз. Включає різні форми
звітування та аналізу, з метою кращого обслуговування користувачів, покращення
вигляду порталу.
ІІ. Сервер Apache в теорії
.1 Apache HTTP-сервер та його
архітектура
Apache HTTP-сервер -
відкритий <#"787498.files/image004.gif">
2.2Файл .htacces та фреймворк
Bootstrap
(від англ.
<#"787498.files/image005.gif">
Висновки
В цій курсовій роботі було
розглянуто загальні теоретичні відомості, які стосуються розробки систем
управління контенту та особливостей реалізації її на сервері Apache. Розроблена
власна CMS та розглянутий принцип його створення на сервері Apache.
Використана література
Додаток 1. Програмний код реалізації
задачі
/index.php
<?php
$url = $_SERVER['REQUEST_URI'];
$part_url= substr($url,
12);("system/connect_to_db.php");
$qwer = mysql_query('SELECT * from
pages where `name_page`="'.$part_url.'"',$dbh) or die('load_page
error!');
$row = mysql_fetch_array($qwer,
MYSQL_ASSOC);loadpage($row,$dbh){
$retArray;
$qwer = mysql_query('SELECT
`content` from content where `id`="'.$row['body'].'"',$dbh) or
die('content page error!');
$row2 = mysql_fetch_array($qwer,
MYSQL_ASSOC);
$retArray[0]=$row2['content'];
$qwer = mysql_query('SELECT `style`
from styles where `id`="'.$row['head'].'"',$dbh) or die('head page
error!');
$row2 = mysql_fetch_array($qwer,
MYSQL_ASSOC);
$retArray[1]=$row2['style'];
$qwer = mysql_query('SELECT `scripts`
from script where `id`="'.$row['footer'].'"',$dbh) or die('footer
page error!');
$row2 = mysql_fetch_array($qwer,
MYSQL_ASSOC);
$retArray[2]=$row2['scripts'];$retArray;
}($row['name_page']!='')
$retArr=loadpage($row,$dbh);
$retArr[0]='ERROR';
$body=$retArr[0];
$head=$retArr[1];
$footer=$retArr[2];("view/index.php");
?>
/admin_panel/index.php
<?php session_start();?>
<?php
include("../system/connect_to_db.php");(isset($_POST["btt"])){($_POST["log"]=="VovaAdmin"
&& $_POST["pas"]=="1234"){
$_SESSION["login_admin"]="ok";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="utf-8">
<meta
http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport"
content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must*
come first in the head; any other head content must come *after* these tags
-->
<meta
name="description" content="">
<meta name="author"
content="">
<link rel="icon"
href="../../favicon.ico">
<title>Dashboard Template for
Bootstrap</title>
<!-- Latest compiled and minified
CSS -->
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<link rel="stylesheet"
href="../system/dashboard.css">
<!-- HTML5 shim and Respond.js
for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script
src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script
src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
.sub{: #ddd;
}
</style>
</head>
<body>
<?php($_SESSION["login_admin"]=="ok"){
}{'<div>
<div>
<label
for="exampleInputEmail1">Email address</label>
<input type="text">
</div>
<div>
<label
for="exampleInputPassword1">Password</label>
<input type="password">
</div>
<button type="submit"
name="btt">
</form></div>';;
}
?>
<div>
<div>
<button type="button">
<span>
<span>
<span>
<span>
</button>
<a>
</div>
<div id="navbar">
<ul>
<li><a
href="#">Admin panel</a></li>
<li><a
href="#">Settings</a></li>
<li><a
href="#">Profile</a></li>
<li><a
href="#">Help</a></li>
</ul>
<form>
<input type="text">
</form>
</div>
</div>
</nav>
<div>
<div>
<div>
<ul>
<li>
<li><a
href="#">Analytics</a></li>
<li><a
href="#">Log out</a></li>
</ul>
<?php
$qwer2 = mysql_query('SELECT * from
pages ',$dbh) or die('load_page error!');
?>
<ul>
<li><a
href="#">Add new page</a></li>
<?php($row =
mysql_fetch_array($qwer2,
MYSQL_ASSOC)){($row["name_page"]=='/')"<li>
}
?>
</ul>
</div>
<div>
<h1>
<div>
<div>
<img
src="flat-design-man-s-portrait-vector-illustration-35100550.jpg">
<h4>Admin: Max</h4>
<span>
</div>
<div>
<img src="a2.jpeg">
<h4>Admin: Vova</h4>
<span>
</div>
<div>
<img src="a3.jpeg">
<h4>Admin: Jakob</h4>
<span>
</div>
</div>
<?php
$qwer = mysql_query('SELECT * from
pages ',$dbh) or die('load_page error!');
?>
<h2>
<div>
<table>
<thead>
<tr>
<th>#</th>
<th>Url</th>
</thead>
<tbody>
<?php ($row =
mysql_fetch_array($qwer, MYSQL_ASSOC)){"<tr><td>".$row['id']."</td><td>".$row['name_page']."</td>
</tr>";
}
?>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Latest compiled and minified
JavaScript -->
<script
src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
</body>
</html>