Розробка проекту сайту по оренді квартир
Створення та розробка сайту по оренді квартир на мові PHP. Безпека доступу до даних за допомогою інтерфейса авторизації і доступу за скритим паролем. Представлено реально існуючий код скриптів для сайту, що пропонує оренду квартир на різні строки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 06.01.2009 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
27
Міністерство освіти і науки України
Національний технічний університет
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра “Обчислювальної техніки та програмування”
Звіт
з розрахунково-графічного завдання
з курсу “Програмування глобальних мереж ”
Харків 2008
1. Індивідуальне завдання
Розробити проект на мові PHP, для обробки наступних запитів до бази даних, як модифікація, видалення і додання даних. Реалізувати авторизацію і механізм доступу для авторизованих користувачів
2. Розробка проекту сайту по оренді квартир
В даному розрахунковому завданні представлено реально існуючий код скриптів для сайту, що пропонує ореду квартир на різні суточні строки (рисунок1 ).
Рисунок 1. Зовнішній вигляд сайту
2.1 index
Авторизований доступ до бази даних реалізується за допомогою сторінки index.php, яка визивається при завданні адреси http://***.com/ru/admin/.
Якщо сесія вже зареєстрована, виконується перевірка на можливість під'єднання до бази даних і генерується вивід розширених даних по квартирам із бази даних, інакше - вікно для вводу логіну і паролю (Рисунок 2), перевірка прав доступу користувача до бази даних виконується згідно із заданими у конфігураційному файлі config.php.
Рисунок 2. Форма вводу паролю для авторизованого доступу до бази даних
<?php
session_start();
require_once("./config.php");
include_once("http://www.***.com/tpl/ru/header.tpl");
include_once("http://www.***.com/tpl/ru/menu.tpl");
if(session_is_registered('user'))
{/*підключення до бази даних, вибір таблиці*/
if (!$ldb = mysql_connect(DB_HOST, DB_USER, DB_PASS))
{
echo 'Ошибка подключения к MySQL';
exit;
}
if (!mysql_select_db(DB_DATABASE))
{
echo 'Ошибка при выборе таблицы';
exit;
}
?>
<table class="content" border=3 height=100% cellSpacing=0 cellPadding=1>
<tr>
<th>/Панель управления каталогом квартир/</th>
</tr>
<TR>
<TD background="http://www.***.com/images/dot_gorz.gif" height=1></TD>
</TR>
<tr>
<td id="text">
<?php
include_once("menu.php");
?>
/*Вивід каталога на екран*/
<table border="1">
<tr>
<th rowspan="2"><center>ID</center></th>
<th rowspan="2"><center>Месторасположение</center></th>
<th colspan="3"><center>Цена (USD за ночь)</center></th>
<th rowspan="2"><center>Описание</center></th>
<th rowspan="2"><center>Комнаты</center></th>
<th rowspan="2"><center>Интерьер (фото на главной)</center></th>
<th rowspan="2"><center>Макс. кол. чел.</center></th>
<th rowspan="2"><center>Расширенное описание</center></th>
<th rowspan="2"><center>Адрес</center></th>
<th rowspan="2"><center>Фотографии</center></th>
<th rowspan="2"><center>Карта</center></th>
<th rowspan="2"></th>
</tr>
<tr align="center">
<th>1-4 дня</th>
<th>4-10 дней</th>
<th>>10 дней</th>
</tr>
<?
$result=mysql_query("SELECT * FROM `".DB_DATABASE."`.`kharkov-apartment_ru`");
while ($row = mysql_fetch_assoc($result))
{
list($price1,$price2,$price3)=explode("|",$row['price']);
$wd=explode("|",$row['wide_descr']);
$photos=explode("|",$row['wide_descr']);
echo "<tr align=center>";
echo "<td>".$row['id_white']."</td>";
echo "<td>".$row['location']."</td>";
echo "<td>".$price1."</td>";
echo "<td>".$price2."</td>";
echo "<td>".$price3."</td>";
echo "<td align=justify>".$row['descr']."</td>";
echo "<td>".$row['rooms']."</td>";
echo "<td><img src='".$row['preview']."' width=100px></td>";
echo "<td>".$row['people']."</td>";
echo "<td align=justify><ul>";
for($j=0;$j<sizeof($wd);$j++)
{
echo "<li>".$wd[$j];
}
echo "</ul></td>";
echo "<td>".$row['address']."</td>";
echo "<td>";
for($j=0;$j<sizeof($photos);$j++)
{
echo "<a href='http://www.***.com/descr/images/".$photos[$j]."' target=_blank>img".($j+1)."</a><br>";
}
echo "</ul>";
echo "<td>";
if($row['map']!="")
echo "<a href='http://www.***.com/descr/images/".$row['map']."' target=_blank>Карта</a>";
echo "</td>";
echo "<td width='200px'>";
/*редагування запису*/
echo "<a href='./edit.php?id=".$row['id_white']."'>Редактировать</a><br>";
echo "<a href='./del.php?id=".$row['id_white']."'>Удалить</a>";
echo "</td>";
echo "</tr>";
}
?>
</table>
</td>
</tr>
</table>
<?
}
elseif (isset($_POST['login'])&&isset($_POST['password'])&&($_POST['login']==ADMIN_LOGIN)&&($_POST['password']==ADMIN_PASS))
{
session_register('user');
$_SESSION['user']="admin";
header("Location: ./");
}
?>
<table class="content" border=3 height=100% cellSpacing=0 cellPadding=1>
<tr>
<th>/Панель управления каталогом квартир: Вход/</th>
</tr>
<TR>
<TD background="http://www.***.com/images/dot_gorz.gif" height=1></TD>
</TR>
<tr>
/*Вивід запиту на введення паролю і логіну*/
<td id="text">
<form action="./index.php" method="POST">
<table border="1" width="50" align="center">
<tr>
<td width="50%">Пользователь:</td>
<td width="50%"><input type="text" name="login"></td>
</tr>
<tr>
<td width="50%">Пароль:</td>
<td width="50%"><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" value="Вход"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
<?
include_once("http://www.***.com/tpl/ru/footer.tpl");
?>
2.2 config
Файл config.php містить визначення захищених констант, як пароль доступу до бази даних і адмінські атрибути, необхідні для авторизованої роботи із базою даних.
<?php
// Database settings
define(DB_HOST,"***");
define(DB_USER," ***");
define(DB_PASS," ***");
define(DB_DATABASE," ***");
// Admin settings
define(ADMIN_LOGIN," ***");
define(ADMIN_PASS," ***");
// Jur link
define(OUR_LINK,"***");
?>
2.3 menu
Файл menu.php генерує панель, що пропонує виконання різних дій над базою даних, як додання нового запису, редагування або видалення наявного (Рисунок 3). Запити реалізуються за допомогою лексики мови запитів MySQL.
Рисунок 3. Меню
Структура бази даних (Рисунок 4):
Рисунок 4. Структура бази даних
<link href="style.css" type="text/css" rel="stylesheet">
<table class="admin_tools">
<tr>
<td>
<a href="./index.php"><u>Главная</u></a>
</td>
<td>
<a href="./add.php"><u>Новая квартира</u></a>
</td>
<td>
<a href="./edit.php"><u>Редактировать квартиру</u></a>
</td>
<td>
<a href="./del.php"><u>Удалить квартиру</u></a>
</td>
<td>
<a href="./exit.php"><u>Выход</u></a>
</td>
<td>
<a href="http://www.***.com/admin/"><u>Панель управления: английская страница</u></a>
</td>
</tr>
</table>
2.4 add
Генерується форма для вводу даних, щодо нової квартири, і через запит до бази даних реалізується їх додання.
Рисунок 5. Форма для додання даних до бази даних квартир
<?php
session_start();
if(!session_is_registered('user'))
{
header("Location: http://www.***.com/ru/admin/");
exit();
}
require_once("./config.php");//підключення файлу конфігупаціі
/*Підключення до бази даних*/
if (!$ldb = mysql_connect(DB_HOST, DB_USER, DB_PASS))
{
echo 'Ошибка подключения к MySQL';
exit;
}
if (!mysql_select_db(DB_DATABASE))
{
echo 'Ошибка при выборе таблицы';
exit;
}
include_once("http://www.***.com/tpl/ru/header.tpl");
include_once("http://www.***.com/tpl/ru/menu.tpl");
?>
<table class="content" border=3 height=100% cellSpacing=0 cellPadding=1>
<tr>
<th>/Панель управления: Новая квартира/</th>
</tr>
<TR>
<TD background="http://www.***.com/images/dot_gorz.gif" height=1></TD>
</TR>
<tr>
<td id="text">
<?php
include_once("menu.php");
//Choose the page variant
if($_POST['id']&&$_POST['location']&&$_POST['price1']&&$_POST['price2']&&$_POST['price3']&&$_POST['descr']&&$_POST['rooms']&&$_POST['preview']&&$_POST['people']&&$_POST['wide_descr']&&$_POST['address'])
{ /*Формування запиту на додання нового запису у базу даних*/
$result=mysql_query("SELECT `id_white` FROM `".DB_DATABASE."`.`kharkov-apartment_ru`");
while ($row = mysql_fetch_assoc($result))
{
if($row['id_white']==$_POST['id'])
die("Квартира с таким ID уже существует!");
}
$price=$_POST['price1']."|".$_POST['price2']."|".$_POST['price3'];
$p=explode("\n",$_POST['photos']);
@$photos=$p[0];
for($i=1;$i<sizeof($p);$i++)
{
$photos.="|".$p[$i];
}
$wd=explode("\n",$_POST['wide_descr']);
$wide_descr=$wd[0];
for($i=1;$i<sizeof($wd);$i++)
{
$wide_descr.="|".$wd[$i];
}
$result1=mysql_query("INSERT INTO `".DB_DATABASE."`.`kharkov-apartment_ru` (`id`,`id_white`,`location`,`price`,`descr`,`rooms`,`preview`,`people`,`wide_descr`,`address`,`photos`,`map`) VALUES (NULL , '".$_POST['id']."', '".$_POST['location']."','".$price."','".$_POST['descr']."','".$_POST['rooms']."','".$_POST['preview']."','".$_POST['people']."','".$wide_descr."','".$_POST['address']."','".$photos."','".$_POST['map']."')");
if($result1==1)
{
echo "Новая квартира успешно добавлена!<br>";
}
else
{
die('Ошибка запроса: ' . mysql_error());
}
mysql_free_result($result);
mysql_close();
}
else
{
?> /*Форма на введення нових даних до бази даних*/
<form action="./add.php" method="POST">
<table border="1" width="50" align="center">
<tr>
<td width="50%">ID:</td>
<td width="50%"><input type="text" name="id"></td>
</tr>
<tr>
<td width="50%">Месторасположение:</td>
<td width="50%"><input type="text" name="location"></td>
</tr>
<tr>
<td>Цена (USD за ночь):</td>
<td>
1-4 дня: <input type="text" name="price1"><br>
4-10 дней: <input type="text" name="price2"><br>
>10 дней: <input type="text" name="price3"><br>
</td>
</tr>
<tr>
<td>Описание:</td>
<td><textarea name="descr" cols="50" rows="5"></textarea></td>
</tr>
<tr>
<td>Комнаты:</td>
<td>
<select name="rooms">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</select>
</td>
</tr>
<tr>
<td>Интерьер (фото на главной):</td>
<td><input type="text" name="preview"></td>
</tr>
<tr>
<td>Макс. кол. чел.:</td>
<td><input type="text" name="people"></td>
</tr>
<tr>
<td>Расширенное описание:</td>
<td><textarea name="wide_descr" cols="50" rows="5"></textarea></td>
</tr>
<tr>
<td>Адрес:</td>
<td><input type="text" name="address"></td>
</tr>
<tr>
<td>Фотографии:</td>
<td><textarea name="photos" cols="50" rows="5"></textarea></td>
</tr>
<tr>
<td>Карта:</td>
<td><input type="text" name="map"></td>
</tr>
<tr>
<td><input type="submit" value="Добавить"></td>
<td><input type="reset" value="Очистить"></td>
</tr>
</table>
</form>
<?
}
?>
</td>
</tr>
</table>
<?php
include_once("http://www.***.com/tpl/ru/footer.tpl");
?>
2.5 del
За заданим ідентифікаційним номером реалізується видалення запиту із бази даних.
<?php
session_start();
if(!session_is_registered('user'))
{
header("Location: http://www.***.com/ru/admin/");
exit();
}
require_once("./config.php");
/*під єднання до бази даних*/
if (!$ldb = mysql_connect(DB_HOST, DB_USER, DB_PASS))
{
echo 'Ошибка подключения к MySQL';
exit;
}
if (!mysql_select_db(DB_DATABASE))
{
echo 'Ошибка при выборе таблицы';
exit;
}
if(isset($_GET['id']))
{
include_once("http://www.***.com/tpl/ru/header.tpl");
include_once("http://www.***.com/tpl/ru/menu.tpl");
?>
<table class="content" border=3 height=100% cellSpacing=0 cellPadding=1>
<tr>
<th>/Панель управления: Удаление квартиры/</th>
</tr>
<TR>
<TD background="http://www.***.com/images/dot_gorz.gif" height=1></TD>
</TR>
<tr>
<td id="text">
<?
include_once("menu.php");
/*Формування запиту на видалення даних з таблиці*/
if(isset($_POST['confirm'])&&$_POST['confirm']=="Yes")
{
mysql_query("DELETE FROM `".DB_DATABASE."`.`kharkov-apartment_ru` WHERE `id_white`=".$_GET['id']);
echo "Квартира успешно удалена!";
}
else
{
?>
/*Формування запитання до користувача на підтвердження видалення даних*/
<center>
Вы настаиваете на удалении квартиры?<br>
<form action="./del.php" method="POST">
<input type="hidden" name="confirm" value="yes">
<input type="submit" value="Да">
<input type="reset" value="Нет">
</form>
</center>
<?
header("Location: ".$_SERVER['referer']);
}
}
else
{
echo "Введите номер квартиры: <form action='./del.php' method='GET'><input type='text' name='id'></form>";
}
?>
2.6 edit
За заданим ідентифікаційним номером реалізується редагування данних щодо конкретної квартири.
<?php
session_start();
if(!session_is_registered('user'))
{
header("Location: http://www.***.com/ru/admin/");
exit();
}
require_once("./config.php");
if (!$ldb = mysql_connect(DB_HOST, DB_USER, DB_PASS))
{
echo 'Ошибка подключения к MySQL';
exit;
}
if (!mysql_select_db(DB_DATABASE))
{
echo 'Ошибка при выборе таблицы';
exit;
}
include_once("http://www.***.com/tpl/ru/header.tpl");
include_once("http://www.***.com/tpl/ru/menu.tpl");
?>
<table class="content" border=3 height=100% cellSpacing=0 cellPadding=1>
<tr>
<th>/Панель управления: Редактирование информации о квартире/</th>
</tr>
<TR>
<TD background="http://www.***.com/images/dot_gorz.gif" height=1></TD>
</TR>
<tr>
<td id="text">
<?php
include_once("menu.php");
//Choose the page variant
if(!isset($_GET['id'])&&isset($_POST['id']))
{
$result=mysql_query("SELECT `id`,`id_white` FROM `".DB_DATABASE."`.`kharkov-apartment_ru`");
while ($row = mysql_fetch_assoc($result))
{
if($row['id_white']==$_POST['id']&&$row['id']!=$_POST['id_t'])
die("Квартира с таким ID уже существует!");
}
$price=$_POST['price1']."|".$_POST['price2']."|".$_POST['price3'];
$p=explode("\n",$_POST['photos']);
@$photos=$p[0];
for($i=1;$i<sizeof($p);$i++)
{
$photos.="|".$p[$i];
}
$wd=explode("\n",$_POST['wide_descr']);
$wide_descr=$wd[0];
for($i=1;$i<sizeof($wd);$i++)
{
$wide_descr.="|".$wd[$i];
}
/*Оновлення полів бази даних*/
$result1=mysql_query("UPDATE `".DB_DATABASE."`.`kharkov-apartment_ru` SET `id_white`='".$_POST['id']."',`location`='".$_POST['location']."',`price`='".$price."',`descr`='".$_POST['descr']."',`rooms`='".$_POST['rooms']."',`preview`='".$_POST['preview']."',`people`='".$_POST['people']."',`wide_descr`='".$wide_descr."',`address`='".$_POST['address']."',`photos`='".$photos."',`map`='".$_POST['map']."' WHERE `id`=".$_POST['id_t']);
if($result1==1)
{
echo "Информация о квартире ID=".$_POST['id']." успешно измененна!<br>";
}
else
{
die('Ошибка запроса: ' . mysql_error());
}
mysql_free_result($result);
mysql_close();
}
elseif(isset($_GET['id']))
{
$result=mysql_query("SELECT * FROM `".DB_DATABASE."`.`kharkov-apartment_ru` WHERE `id_white`=".$_GET['id']);
$edit=mysql_fetch_assoc($result);
list($price1,$price2,$price3)=explode("|",$edit['price']);
$edit['wide_descr']=str_replace("|","\n",$edit['wide_descr']);
$edit['photos']=str_replace("|","\n",$edit['photos']);
?>
/*форма для модифікації полів даних*/
<form action="./edit.php" method="POST">
<input type="hidden" name="id_t" value="<?=$edit['id'];?>">
<table border="1" width="50" align="center">
<tr>
<td width="50%">ID:</td>
<td width="50%"><input type="text" name="id" value="<?=$edit['id_white'];?>"></td>
</tr>
<tr>
<td width="50%">Месторасположение:</td>
<td width="50%"><input type="text" name="location" value="<?=$edit['location'];?>"></td>
</tr>
<tr>
<td>Цена (USD за ночь):</td>
<td>
1-4 дня: <input type="text" name="price1" value="<?=$price1;?>"><br>
4-10 дней: <input type="text" name="price2" value="<?=$price2;?>"><br>
>10 дней: <input type="text" name="price3" value="<?=$price3;?>"><br>
</td>
</tr>
<tr>
<td>Описание:</td>
<td><textarea name="descr" cols="50" rows="5"><?=$edit['descr'];?></textarea></td>
</tr>
<tr>
<td>Комнаты:</td>
<td>
<select name="rooms">
<option value='1' <?php print ($edit['rooms']==1)?"selected":"";?>>1</option>
<option value='2' <?php print ($edit['rooms']==2)?"selected":"";?>>2</option>
<option value='3' <?php print ($edit['rooms']==3)?"selected":"";?>>3</option>
<option value='4' <?php print ($edit['rooms']==4)?"selected":"";?>>4</option>
<option value='5' <?php print ($edit['rooms']==5)?"selected":"";?>>5</option>
</select>
</td>
</tr>
<tr>
<td>Интерьер (фото на главной):</td>
<td><input type="text" name="preview" value="<?=$edit['preview'];?>"></td>
</tr>
<tr>
<td>Макс. кол. чел.:</td>
<td><input type="text" name="people" value="<?=$edit['people'];?>"></td>
</tr>
<tr>
<td>Расширенное описание:</td>
<td><textarea name="wide_descr" cols="50" rows="5"><?=$edit['wide_descr'];?></textarea></td>
</tr>
<tr>
<td>Адрес:</td>
<td><input type="text" name="address" value="<?=$edit['address'];?>"></td>
</tr>
<tr>
<td>Фотографии:</td>
<td><textarea name="photos" cols="50" rows="5"><?=$edit['photos'];?></textarea></td>
</tr>
<tr>
<td>Карта:</td>
<td><input type="text" name="map" value="<?=$edit['map'];?>"></td>
</tr>
<tr>
<td><input type="submit" value="Сохранить"></td>
<td><input type="reset" value="Очистить"></td>
</tr>
</table>
</form>
<?
}
else
{
echo "Введите номер квартиры: <form action='./edit.php' method='GET'><input type='text' name='id'></form>";
}
?>
</td>
</tr>
</table>
<?php
include_once("http://www.***.com/tpl/en/footer.tpl");
?>
2.7 exit
Реалізується завершення сесії роботи із базою даних.
<?php
session_start();
session_destroy();
header("Location: http://www.***.com/ru/admin/");
?>
Висновки
В даній роботі було розроблено на мові PHP скріпти для роботи із видаленою базою даних через сайт, виконано можливість стандартних дій над базою даних, як додання, видалення і модифікація даних, через механізм форм. Реалізовано політику безпеки доступу до даних, за допомогою інтерфейса авторизації і доступу за скритим паролем. Дана розробка є реальною і працює на справжньому проекті фірми, що займається реалізацією в оренду квартир в Харкові.
Подобные документы
Розробка динамічних та статичних зображень для сайту за допомогою відеоредактора Adobe After EffectCS6 та графічного редактора Adobe Photosop CS6. Розробка структури сайту. Багатоваріантний аналіз розв’язку задачі. Створення анімованого логотипу.
курсовая работа [1,8 M], добавлен 07.12.2014Види сайтів та характеристика сайту-візитки, сайту-магазину, новинного сайту та соціальних мереж. HTML та CSS як основа шаблону сайту та стилю оформлення. Розробка структури та вибір дизайну порталу новин, його програмний код та вигляд у браузері.
дипломная работа [2,4 M], добавлен 20.10.2013Вивчення особливостей використання всесвітньої мережі Інтернет, адресації інформації, вірусних загроз. Розробка та підготовка сайту до експлуатації за допомогою візуального редактора Front Page. Характеристика дизайну та структури створеного web-сайту.
курсовая работа [1,4 M], добавлен 22.11.2012Обґрунтування потреби, поняття, класифікація, проектування та етапи розробки веб-сайту. Вибір програмних засобів, розробка інтерфейса і бази даних. Динамічна мова розмітки гіпертекстових документів DHTML. Розміщення категорій товарів в on-line магазині.
дипломная работа [1,5 M], добавлен 04.08.2009Опис механізмів передачі даних між сторінками. Розробка доступного та зручного інтерфейсу веб-сайту компанії "Artput" для відвідувачів сайту і для адміністратора. Установка Apache 1.3.29 та PHP 4.3.4 під Windows XP. Структура веб-сервера та веб-сайту.
дипломная работа [5,0 M], добавлен 24.09.2012Вибір архітектури та інструментальних засобів розробки. Розробка модуля для перегляду сторінок сайту, доступного, зручного інтерфейсу системи адміністрування. Створення бази даних. Опис механізмів передачі даних між сторінками. Реалізація форуму на сайті.
дипломная работа [7,1 M], добавлен 24.09.2012Загальна характеристика особливостей алгоритму просування сайту. Розробка основних елементів фірмового стилю, що складають пакет рекламної кампанії. Етапи розробки Web-сайту компанії "Гранд Авто". Особливості програмної частини і структури сайту.
дипломная работа [3,3 M], добавлен 26.02.2012Мова розмітки гіпертекстових сторінок HTML. Каскадні таблиці стилів CSS. Розробка інформаційного Web-сайту: меню навігації, структура та інтерфейс сайту. Тестування, впровадження та тестування розробленого проекту. Безпека умов праці при використанні ПК.
дипломная работа [1,3 M], добавлен 20.05.2012Розробка сайту, який буде мати можливість наповнення інформацією про стан команд та їх гравців у лізі в режимі реального часу. Переваги використання технології web 2.0. Написання програмного коду веб-сайту та його реалізація, головна сторінка Index.php.
дипломная работа [3,4 M], добавлен 18.08.2014Реалізація портальної системи, на основі якої працює веб-сайт ПП "Агромат". Розробка системи адміністрування веб-сайтом для редагування контенту веб-сайту за допомогою веб-браузера з використанням мови програмування РНР та сервера баз даних MySQL.
дипломная работа [1,9 M], добавлен 24.09.2012