$comment = str_replace($smiles_keys, $smile_path, $comment); //Меняем в комментарии ключи смайлов на пути к смайлам
echo $comment; //печатаем комментарий со смайлами
}
Получаем из таблицы smiles массивы условных обозначений смайлов и путей к их изображениям. В цикле обрабатываем и выводим на печать комментарии со смайлами.
25. Страница сепарации данных
Страница separate_action.php получает данные из формы formaddsay.html.php и обрабатывает их. Введение этой страницы было необходимо для обнуления $_POST на странице обработки комментариев после их отправки. Если этого не сделать, то при размещении этого кода на странице с контроллером 3 при обычном обновлении страницы возникала бы проблема с его обработкой т.к. браузер обычно запоминает данные, которые отправляются с текущей страницы для того, чтобы отправить их снова при обновлении страницы и:
без обнуления переменной POST один и тот же комментарий будет добавляться до бесконечности при каждой перезагрузке страницы.
Если же мы уйдем со страницы на другую и отправим данные формы на следующую (в данном случае вернемся обратно) страницу, то браузер запомнит уже новые заголовки и при обновлении будет обрабатывать их, а при возврате они будут для страницы возврата пусты и соответственно при ее обновлении ничего не произойдет.
Листинг 41. separate_action.php Путь: news/chat/function/ print_comment.php
<?php
if(session_id() == '') {session_start();}
include_once $_SERVER['DOCUMENT_ROOT'].'./chat/admin/clean.php';
/* включаем/выключаем видимость блока смайлов */
if (isset($_POST['smileblock'])) {
$_SESSION['smileblock'] = 'display:block';
}
if (isset($_POST['smileblock_close'])) {
$_SESSION['smileblock'] = 'display:none';
}
/* Комментарии */
//если была нажата кнопка "Добавить" вставляем форму добавления комментариев,
//если была нажата кнопка "Ответить" вставляем форму ответа на комментарии,
if (isset($_POST['action']) and $_POST['action'] == 'Добавить') {
include_once $_SERVER['DOCUMENT_ROOT'].'/chat/say/makeformaddsay.php';
}
elseif (isset($_POST['action']) and $_POST['action'] == 'Ответить') {
include_once $_SERVER['DOCUMENT_ROOT'].'/chat/say/make_reply.php';
}
else {//Проверяем куда пойдет смайл в комментарии или в ответы
include_once $_SERVER['DOCUMENT_ROOT'].'/chat/say/smile_make.php';
}
Скрипт управляет отображением/скрытием блока смайлов, вставкой формы добавления комментариев и вставкой формы добавления ответов на комментарии.
26. Форма для вывода комментариев
Форма form_say.html.php служит для вывода комментариев
Листинг 42. form_say.html.php Путь: news/chat/say/ form_say.html.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="/chat/style.css" />
</head>
<div class="wrapsayform" style="<?= $display_say ?>">
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/chat/say/list_reply.php';
if (!empty($say)) {
foreach ($say as $saylist) : ?>
<div class="sayform" id="">
<!– Выводим логин и дату –>
<div class="topprintcomment" id="">
<b><?php echo $saylist['login']; ?></b>