LoveRead.info » Книги » Разная литература » PHP. Разработка модуля комментариев для сайта - Дмитрий Приходько

PHP. Разработка модуля комментариев для сайта - Дмитрий Приходько

Книгу PHP. Разработка модуля комментариев для сайта - Дмитрий Приходько читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

67 0 11:01, 24-03-2023

Книга PHP. Разработка модуля комментариев для сайта - Дмитрий Приходько читать онлайн бесплатно без регистрации

В книге рассмотрен вариант разработки модуля комментариев для сайта на чистом языке php в процедурном стиле.

    1 ... 14 15 16 17 18 19 20 21 22 23
    Перейти на страницу:
    class="p1">function comment_to_smile($comment)

    {

    try {

    include $_SERVER['DOCUMENT_ROOT'] . '/chat/dsn.php';

    $sql = "SELECT smile, path FROM smiles";

    $s = $dsn->query($sql);

    $ress = $s->fetchall();

    foreach ($ress as $row) :

    $smiles_key = $row['smile'];

    $smile_path = $row['path'];

    endforeach;

    } catch (PDOException $e) {

    echo $e->getMessage();

    echo $e->getLine();

    exit();

    }

    $smile_path = array_column($ress, 'path'); // Массив с кодами смайлов

    $smiles_keys = array_column($ress, 'smile'); // Массив с соответствующими путями к изображениям смайлов

    for ($i = 0; $i < count($smile_path); $i++) {

    $smile_path[$i] = "<img src='" . $smile_path[$i] . "' alt='' />";//получаем изображение смайла

    }

    $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>

    <?php $t = $saylist['saydate'];

    echo '<span style="float:right;">' . date("d.m.Y", "$t") . '</span>'; ?>

    </div>

    <!– Выводим аватар и комментарии –>

    <div class="printcomment" id="">

    <p></p><img src="<?= '/chat/admin/users/' . $saylist['img'] ?>" class="sayavatar">

    <?php

    $comment = $saylist['saytext'];

    comment_to_smile($comment); //печатаем комментарии

    $post_id = $saylist['id'];

    /* Активация кнопок */

    if (userHasRole('admin')) {

    $buttonactive = 'submit'; //если админ делаем активными все кнопки

    } elseif ($saylist['userid'] == $userid) {

    $buttonactive = 'submit'; //делаем активными кнопки для юзера

    } else {

    $buttonactive = 'hidden'; //отключаем кнопки

    } ?></p>

    </div><!– END printcomment –>

    <!– Выводим блок кнопок –>

    <div class="block_button_say" id="">

    <div class="wrappersaybutton">

    <div class="reply_button" id="">

    <div class="postnumber" id=""><?php echo '#' . $saylist['id']; ?> </div>

    <a href="?reply=<?php htmlout($post_id); ?>" class="areply">Ответить</a>

    </div>

    <div class="sayright">

    <div class="button_say_edit">

    <form name="" method="post" action="/chat/say/sayedit.php" class="logout">

    <input type="hidden" name="pageid" id="" value=" <?php echo $pageid; ?>" />

    <input type="hidden" name="textedit" value="<?php echo $saylist['id']; ?>">

    <input type="hidden" name="saytext" id="" value="<?php echo $saylist['saytext']; ?>" />

    <input type="<?= $buttonactive ?>" name="actionedit" value="Редактировать" />

    </form>

    </div>

    <div class="button_say_delete">

    <form name="sayform" method="post" action="/chat/say/reset.php" class="logout">

    <input type="hidden" name="pageid" id="" value=" <?php echo $pageid; ?>" />

    <input type="hidden" name="deleteid" id="" value=" <?php echo $saylist['id']; ?>" />

    <input type="<?= $buttonactive ?>" name="delete" id="" value="Удалить" />

    </form>

    </div>

    </div>

    </div>

                <!– Форма ответить на комментарий –>

    <div class="add_reply" id="">

    <?php

    if (isset($_SESSION['login'])) {

    if (isset($_GET['reply']) and $_GET['reply'] == $post_id) {

    include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/say/form_add_reply.html.php';

    }

    } ?>

    </div>

    </div><!– END block_button_say –>

    </div><!– END sayform –>

    <!– Выводим ответы на комментарии и кнопки –>

    <?php

    include $_SERVER['DOCUMENT_ROOT'] . '/chat/say/print_reply.html.php';

    endforeach;

    } ?>

    </div><!– END wrapsayform –>

    </html>

    Здесь вставляется, подготовленный в list_reply.php массив ответов на комментарии $reply, затем в цикле foreach – endforeach обрабатываются комментарии, содержащиеся в массиве $say, созданном в контроллере 3, которые выводятся в соответствующих блоках div и происходит активация кнопок для каждого комментария, затем в этом же цикле подключается файл print_reply.html.php, который печатает ответы и выводит кнопки ответов.

    27. Форма добавления комментариев

    Для добавления комментариев служит форма formaddsay.html.php

    Листинг 43. form_addsay.html.php Путь: news/chat/say/ form_addsay.html.php

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="stylesheet" type="text/css" href="/chat/style.css" />

    <title>Добавление</title>

    </head>

    <!– При нажатии кнопок формы идем на страницу сепарации переменных –>

    <form action="/chat/say/separate_action.php" method="post" class="say">

    <div>

    <label for="saytext" class="say">Введите ваш комментарий:</label>

    <textarea id="saytext" name="saytext" rows="5" cols="60" autofocus><?php if (isset($_SESSION['txt'])) {

    echo htmlout($_SESSION['txt']);} ?></textarea>

    </div>

    <br />

    <div class="">

    <div class="">

    <div class="says">

    <input type="hidden" name="userid" value="Добавить">

    <input type="hidden" name="pageid" value="<?php echo $pageid ?>">

    <input type="hidden" name="sayid" value="<?php if (isset($sayid)) {

    echo $sayid;

    } ?>">

    <input type="submit" name="action" value="Добавить">

    <input type="submit" name="smileblock" value="Показать смайлы" style="">

    <input type="submit" name="smileblock_close" value="Скрыть смайлы" style="">

    </div>

    <div class="notaddsay" id=""><a href="?">Отмена</a></div>

    </div>

    <br>

    <hr>

    <!– Вставляем лист доступных смайлов –>

    <div class="smilesetdiv" id="">

    <fieldset class="smileset" style="<?php if (isset($_SESSION['smileblock'])) {

    echo $_SESSION['smileblock'];

    } ?>">

    <?php print_smile_set(); ?>

    </fieldset>

    </div>

    </div>

    <br />

    </form>

    </body>

    </html>

    Это HTML форма состоящая из следующих частей:

    • Поле ввода комментариев тип textarea,autofocus.

    • Кнопки «Добавить», «Показать смайлы», «Скрыть смайлы» тип input submit.

    • Ссылка «Отмена», при нажатии обнуляет все значения в $_GET.

    • Блок смайлов, который выводит доступный набор смайлов.

    28. Обработка комментариев

    1 ... 14 15 16 17 18 19 20 21 22 23
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Лариса Лариса04 июнь 12:43 Да, просто до слез похоже на сериал ,,Даррел,,... Смерть в райском уголке - Эмили Салливан
    2. Stmara Stmara02 июнь 22:44 Приятная история, чтобы скоротать вечер. Любимая книга из последних "Любовь со смертью", также очень понравилась -"Суженная... Сердце космического дракона - Ольга Вадимовна Гусейнова
    3. Alex Alex01 июнь 17:12 💩💩💩🖕🖕🖕🖕🖕🖕🖕... Игровой момент II - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки