Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсова довганич.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
843.26 Кб
Скачать

Ііі. Практична частина

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>

31