- •І. Загальні теоретичні відомості
- •1.1. Система керування вмістом та її різновиди
- •1.2. Способи роботи
- •1.3. Особливості
- •1.4. Функції прикладних програм керування контентом
- •Іі. Сервер Apache в теорії
- •2.1. Apache http-сервер та його архітектура
- •Система конфігурації
- •Мультипроцесувальні моделі (mpm)
- •2.2.Файл .Htacces та фреймворк Bootstrap
- •Ііі. Практична частина
- •3.1Постановка задачі
- •3.2Пояснення принципу роботи та контрольні приклади
- •Висновки
- •Використана література
- •Додаток 1. Програмний код реалізації задачі
Ііі. Практична частина
3.1Постановка задачі
Створити власну CMS для створення веб-сайтів. CMS буде мати можливість:
створювати динамічно сторінки;
редагувати структуру сторінки;
Вибирати вміст як шаблон;
3.2Пояснення принципу роботи та контрольні приклади
CMS «CMS it`s COOOL» працює на сервері Apache. Принцип роботи оснований на переадресації неіснуючих файлів. Тобто ми переадресовуєм користувача кожен раз на певний файл, и загружаємо відповідний шаблон. Для цього я використовую файл .htaccess. Подиліми роботу з файлом на 2 етапи.
Перший етап це безпека. Ми повинні закрити доступ до системних файлів такі як підключення до бази даних, шаблон і так далі.
Файл .htaccess
Redirect 301 /error.php
Тобто ми закидуєм цей файл в системні директиви, і при переході на системні файли воно буде перенаправляти в корінь сайту на сайт з повідомленням про помилку.
Другий етап це перенаправлення неіснуючих файлів.
Файл .htaccess
ErrorDocument 404 /index.php
Взагалі структура файлів така:
admin_panel
img
add.php
edit.php
index.php
system
.htaccess
css
js
php
view
index.php
.htaccess
error.php
index.php
При перенаправленні при неіснуючому файлі ми перевіряєм чи є в нас така сторінка.
Файл /index.php
if($row['name_page']!='') $retArr =loadpage($row,$dbh); else $retArr[0]='ERROR';
І загружаєм з бази даних відповидну сторінку.
Контрольні приклади:
Висновки
В цій курсовій роботі було розглянуто загальні теоретичні відомості, які стосуються розробки систем управління контенту та особливостей реалізації її на сервері Apache. Розроблена власна CMS та розглянутий принцим його створення на сервері Apache.
Використана література
http://uk.wikipedia.org/wiki/Apache_HTTP_Server
http://uk.wikipedia.org/wiki/Twitter_Bootstrap
http://uk.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BA%D0%B5%D1%80%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F_%D0%B2%D0%BC%D1%96%D1%81%D1%82%D0%BE%D0%BC
Додаток 1. Програмний код реалізації задачі
/index.php
<?php $url = $_SERVER['REQUEST_URI']; $part_url= substr($url, 12); include("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); function 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']; return $retArray; } if($row['name_page']!='') $retArr =loadpage($row,$dbh); else $retArr[0]='ERROR';
$body=$retArr[0]; $head=$retArr[1]; $footer=$retArr[2]; include ("view/index.php"); ?>
|
|
|
|
/admin_panel/index.php
<?php session_start();?>
<?php include("../system/connect_to_db.php");
if(isset($_POST["btt"])){
if($_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{
background: #ddd;
}
</style>
</head>
<body>
<?php
if($_SESSION["login_admin"]=="ok"){
}
else{
echo '<div class="container"><form method="post">
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="text" class="form-control" id="exampleInputEmail1" name="log" placeholder="Enter email">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" name="pas" placeholder="Password">
</div>
<button type="submit" name="btt" class="btn btn-default">Submit</button>
</form></div>';
exit;
}
?>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">CMS it`s COOOL</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<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 class="navbar-form navbar-right">
<input type="text" class="form-control" placeholder="Search...">
</form>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li class="active"><a href="#">Overview <span class="sr-only">(current)</span></a></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 class="nav nav-sidebar">
<li><a href="#">Add new page</a></li>
<?php
while($row = mysql_fetch_array($qwer2, MYSQL_ASSOC)){
if($row["name_page"]=='/')
echo "<li class=\"sub\"><a href='#'>Change \" Home \"</a></li>";
else
echo "<li class=\"sub\"><a href='#'>Change \" ".substr($row["name_page"], 1)." \"</a></li>";
}
?>
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h1 class="page-header">Admin panel</h1>
<div class="row placeholders">
<div class="col-xs-6 col-sm-4 placeholder">
<img src="flat-design-man-s-portrait-vector-illustration-35100550.jpg" class="img-responsive" width="100%" alt="Generic placeholder thumbnail">
<h4>Admin: Max</h4>
<span class="text-muted">His password: 1234</span>
</div>
<div class="col-xs-6 col-sm-4 placeholder">
<img src="a2.jpeg" class="img-responsive" width="100%" alt="Generic placeholder thumbnail">
<h4>Admin: Vova</h4>
<span class="text-muted">His password: 123478</span>
</div>
<div class="col-xs-6 col-sm-4 placeholder">
<img src="a3.jpeg" class="img-responsive" width="100%" alt="Generic placeholder thumbnail">
<h4>Admin: Jakob</h4>
<span class="text-muted">His password: 901234</span>
</div>
</div>
<?php
$qwer = mysql_query('SELECT * from pages ',$dbh) or die('load_page error!');
?>
<h2 class="sub-header">Section title</h2>
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>Url</th>
</tr>
</thead>
<tbody>
<?php
while($row = mysql_fetch_array($qwer, MYSQL_ASSOC)){
echo "<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>
