Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка по курсвой Терехин.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
893.93 Кб
Скачать

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;

}

}

?>