
- •Содержание
- •3.3 Характеристика объекта автоматизации 10
- •3.4 Требования к системе 10
- •Введение
- •1 Формирование требований
- •1.1 Характеристика объекта автоматизации
- •3.4.1.1.2. Требования к способам и средствам связи для информационного обмена между компонентами системы
- •3.4.1.2. Требования к численности и квалификации персонала системы
- •3.4.1.3. Требования к эргономике и технической эстетике
- •3.4.2.2. Требования к функциям модуля заказов
- •3.4.2.2.1. Функция «Оформление заказа»
- •3.4.2.2.2. Функция «Просмотр всех имеющихся в системе заказов»
- •3.4.2.4.1. Функция «Подтверждение или удаления комментария»
- •3.4.2.5. Требования к функциям модуля обратной связи
- •3.4.3. Требования к видам обеспечения
- •3.4.3.1. Требования к информационному обеспечению системы
- •3.4.3.2. Требования к лингвистическому обеспечению системы
- •4.2.4 Условия и порядок проведения испытаний
- •4.2.5 Описание контрольного примера
- •4.3. Решения по информационному обеспечению
- •4.3.1 Состав информационного обеспечения
- •4.3.2 Организация информационного обеспечения
- •4.3.3 Организация сбора и передачи информации
- •4.3.4. Организация внутримашинной информационной базы.
- •4.4 Решения по программному обеспечению
- •4.4.1 Структура программного обеспечения
- •5 Рабочий проект
- •5.2 Руководство менеджера
- •5.2.1. Доступ к административной части
- •5.2.2. Работа с разделом «Заказы»
- •5.2.3. Работа с разделом «Комментарии»
- •Заключение
- •Список использованных источников
- •Приложение а
- •1. Листинг файла index.Php
- •2. Листинг класса корзины
- •3. Листинг класса каталога
- •4. Листинг класса комментариев
- •Приложение б
4. Листинг класса комментариев
<?php
class Comments
{
public $phone_id;
public $err = array('phone_id'=>false, 'name'=>false, 'message'=>false, 'captcha'=>false);
public function __construct($id = 0)
{
$this->phone_id = $id;
$this->phone_id = mysql_real_escape_string($this->phone_id);
}
function get_comments()
{
$sql = "SELECT id FROM comments WHERE phone_id='".$this->phone_id."' AND parent_id IS NULL";
$result = mysql_query($sql);
if (!$result) return false;
?><h2 style="margin-top:50px;"><a name="comments">Комментарии</a></h2><?
// Если комментариев нет
if (mysql_num_rows($result) == 0)
{
echo "К этому телефону пока не было оставлено комментариев. ";
}
else
// Комментарии есть
{
while ($row=mysql_fetch_assoc($result))
{
$this->get_comment($row['id']);
}
}
}
function get_comment($id, $reply=false)
{
$id = mysql_real_escape_string($id);
// Загрузить сам комментарий
$sql = "SELECT * FROM comments WHERE id='$id'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
?>
<article itemprop="reviews" itemscope itemtype="http://schema.org/Review" class="comment">
<div class="comment-name">
<?
if ($row['type']==1)
{
?><img src="/img/icon-manager.png" class="comment-icon" alt="[Ответ менеджера]" title="Ответ менеджера" /><?
}
echo '<span itemprop="author" class="comment-name">'.$row['name'].'</span>';
?>
<div class="comment-dt">
<meta itemprop="datePublished" content="<?echo $row['dt'];?>">
<?echo $this->date_ru($row['dt']);?>
</div>
</div>
<div itemprop="description" class="comment-message"><?echo nl2br($row['message']);?></div>
<div class="comment-refs">
<?if (!$reply){?><a href="/comments/reply/<?echo $id;?>/">Ответить</a><?}?>
</div>
<div class="comment-replies">
<?
// Загрузим вложенные комментарии
if (!$reply)
{
$sql = "SELECT * FROM comments WHERE parent_id='$id'";
$result = mysql_query($sql);
while ($row=mysql_fetch_assoc($result))
{
$this->get_comment($row['id']);
}
}
?>
</div>
</article>
<?
}
function add_comment()
{
$parent_id = "NULL";
if (isset($_POST['parent_id']))
if ($_POST['parent_id']!="")
$parent_id = "'".mysql_real_escape_string($_POST['parent_id'])."'";
$phone_id = mysql_real_escape_string($_POST['phone_id']);
$name = mysql_real_escape_string(strip_tags($_POST['name']));
$message = mysql_real_escape_string(strip_tags($_POST['message'], "<p><i><b><s><u>"));
$dt = date("Y-m-d H:i:s");
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO comments
(
parent_id,
phone_id,
dt,
name,
message,
ip
)
VALUES
(
$parent_id,
'$phone_id',
'$dt',
'$name',
'$message',
'$ip'
)";
$result = mysql_query($sql);
if (!$result)
{
echo "Извините, произошла ошибка при добавлении комментария.";
exit;
}
// Определить url нужной страницы
$sql = "SELECT url FROM phones WHERE id=$phone_id";
$result = mysql_query($sql);
if (!$result)
{
include("404.php");
exit;
}
$row = mysql_fetch_assoc($result);
// Редиректнуть на нее
header("Location: /cat/".$row['url']."/#comments");
}
function get_form($parent_id = null)
{
?>
<?if (!is_null($parent_id)){?><h3>Добавить комментарий</h3><?}?>
<form action="#" method="post">
<input type="hidden" name="phone_id" value="<?echo $this->phone_id;?>" />
<?if (!is_null($parent_id)){?><input type="hidden" name="parent_id" value="<?echo $parent_id;?>" /><?}?>
<table class="order-form">
<tr>
<td class="titles">Ваше имя:</td>
<td class="inputs">
<input name="name" value="<?if (isset($_POST['name'])) echo $_POST['name'];?>" />
</td>
<td class="error"><?if ($this->err['name']) echo "X";?></td>
</tr>
<tr>
<td class="titles">Сообщение:</td>
<td class="inputs">
<textarea name="message" rows="5"><?if (isset($_POST['message'])) echo $_POST['message'];?></textarea>
</td>
<td class="error"><?if ($this->err['message']) echo "X";?></td>
</tr>
<tr>
<td class="titles">Введите код</td>
<td class="inputs">
<script type="text/javascript">var RecaptchaOptions = {theme : 'blackglass', lang : 'ru'};</script>
<?
require_once('libs/recaptchalib.php');
$publickey = "6LdFPsgSAAAAAOgLEWKOE1kwHi16txtPB1Ctts6o";
echo recaptcha_get_html($publickey);
?>
</td>
<td class="error"><?if ($this->err['captcha']) echo "X";?></td>
</tr>
<tr>
<td class="titles"></td>
<td>
<div style="text-align: right;"><input type="submit" name="submit" value="Отправить" /></div>
</td>
<td class="error"></td>
</tr>
</table>
</form>
<?
}
function validate()
{
// Массив без ошибок
$no_err = array
(
'phone_id'=>false, // важен только при валидации перед добавлением в базу
'name'=>false,
'message'=>false,
'captcha'=>false
);
// Проверяем наличие ошибок
if (!isset($_POST['phone_id'])) $this->err['phone_id'] = true;
else if ($_POST['phone_id']=='') $this->err['phone_id'] = true;
if (!isset($_POST['name'])) $this->err['name'] = true;
else if ($_POST['name']=='') $this->err['name'] = true;
if (!isset($_POST['message'])) $this->err['message'] = true;
else if ($_POST['message']=='') $this->err['message'] = true;
// Проверка капчи
require_once('libs/recaptchalib.php');
$privatekey = "6LdFPsgSAAAAAM7GYQsmn6Q-mrqoyuh0TjtiX0nH";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
//if (!$resp->is_valid) $this->err['captcha'] = true;
// Сверяем полученный массив ошибок со случаем без ошибок
if ($no_err==$this->err) return true;
else return false;
}
}
?>