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">/* Активация кнопок */

    if (userHasRole('admin')) {

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

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

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

    } else {

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

    } ?>

    </div>

    </div>

    <div class="blocksayform" id="">

    <div class="sayforms">

    <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 $replylist['id']; ?>" />

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

    </form>

    </div>

    <?php

    }

    endforeach;

    }

    ?>

    </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'] . '/say/form_add_reply.html.php';

    }

    }

    ?>

    </div>

    </div>

    </html>

    На этой странице в цикле foreach – endforeach выводим все ответы на данный комментарий. Показываем кнопку «Удалить». Проверяем необходимость вставки формы для добавления ответа form_add_reply.html.php' на данный комментарий. Необходимость определяется наличием переменной $_GET['reply'].

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

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

    Листинг 51. form_add_reply.html.php Путь: news/chat/say/ form_add_reply.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" />

    </style>

    </head>

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

    <fieldset class="chatfieldset">

    <legend>Ответить на комментарий:</legend>

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

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

    <br />

    <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="hidden" name="deleteid" id="" value=" <?php echo $saylist['id'];?>" />

    <input type="hidden" name="postid" id="" value=" <?php htmlout($post_id);?>" />

    <input type="submit" name="action" value="Ответить">

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

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

    </div>

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

    </div>

    </fieldset>

    <br>

    <hr>

    <div class="smilesetdiv">

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

    <?php print_smile_set();?>

    </fieldset>

    </div>

    <br />

    </form>

    </html>

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

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

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

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

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

    36. Обработчик добавления ответов

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

    Листинг 52. make_reply.php Путь: news/chat/say/ make_reply.php

    <?php

    error_reporting(E_ALL);

    if (session_id() == '') {

    session_start();

    }

    unset($_SESSION['txt']);

    if (isset($_POST['nosay'])) {

    $_GET['reply'] = '';

    exit();

    }

    /* Проверяем наличие текста в форме */

    if (empty($_POST['replytext'])) {

    header("Location: " . $_SERVER["HTTP_REFERER"]); // Делаем редирект

    exit();

    }

    if (isset($_POST['action']) and $_POST['action'] == "Ответить") {

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

    include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/clean.php';

    /* Получаем id текущего пользователя */

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

    $userid = $_SESSION['userid'];

    }

    /* заносим текст в базу */

    try {

    $sql = 'INSERT INTO reply SET

    replytext = :replytext,

    userid = :userid,

    replydate = :replydate,

    replyid =:replyid';

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

    $replytext = html($_POST['replytext']);

    $replyid = $_POST['postid'];

    $replydate = time();

    $s->bindValue(':replytext', $replytext);

    $s->bindValue(':replyid', $replyid);

    $s->bindValue(':replydate', $replydate);

    $s->bindValue(':userid', $userid);

    $s->execute();

    } catch (PDOException $e) {

    echo 'Error adding данного пользователя';

    echo $e->getMessage();

    echo $e->getLine();

    exit();

    }

    header("Location: " . $_SERVER["HTTP_REFERER"]); // Делаем редирект

    exit();

    }

    header("Location: " . $_SERVER["HTTP_REFERER"]); // Делаем редирект

    exit();

    Здесь мы проверяем данные переданные формой form_add_reply.html.php, вставляем данные в БД и делаем редирект обратно.

    37. Кнопка удаления ответов на комментарии

    Для вывода кнопки удаления ответов на комментарии служит файл reply_delete_button.html

    Листинг 53. reply_delete_button.html Путь: news/chat/say/ reply_delete_button.html

    <!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="wrapreplyform">

    <div class="idreplynum">

          <!– печатаем id комментария –>

          <span style=""><?php

    echo '#'.$saylist['id'].' '.'^'.$replylist['id'];?></span>

    </div>

    <!– печатаем кнопку удалить –>

    <div class="reply_delete_button">

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

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

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

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

          </form>

    </div>

    <?php if($buttonactive =='hidden'){echo '.';} ?>

    <!– печатаем точку и не даем схлопнуться div –>

    </div>

    Здесь выводим на печать идентификаторы ответа: номер комментария и номер ответа, и кнопку «Удалить».

    38. Удаление комментариев

    Для удаления служит скрипт reset.php

    Листинг 54. reset.php Путь: news/chat/say/ reset.php

    <?php

    if (isset($_POST['delete']) and $_POST['delete'] == 'Удалить') {

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

    try {

    $sql = 'DELETE FROM say WHERE id = :id';

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

    $saylist = $_POST['deleteid'];

    $s->bindValue(':id', $saylist);

    $s->execute();

    } catch (pdoException $e) {

    echo $e->getMessage();

    echo $e->getLine();

    exit();

    }

    }

    header("Location:" . $_SERVER['HTTP_REFERER']);// Делаем редирект обратно

    Удаляется запись из таблицы say c номером, совпадающим с номером комментария.

    39. Удаление ответов на комментарии

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

    Листинг 55. reply_delete.php Путь: news/chat/say/ reply_delete.php

    <?php

    if (isset($_POST['reply_delete']) and $_POST['reply_delete'] == 'Удалить') {

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

    try {

    $sql = 'DELETE FROM reply WHERE id = :id';

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

    $del = $_POST['deleteid'];

    $s->bindValue(':id', $del);

    $s->execute();

    } catch (pdoException $e) {

    echo $e->getMessage();

    echo $e->getLine();

    exit();

    }

    }

    header("Location:" . $_SERVER['HTTP_REFERER']);// Делаем редирект обратно

    Удаляется запись из таблицы reply c номером, совпадающим с номером ответа.

    40. Перенаправление смайлов

    Для разделения смайлов служит файл smile_make.php

    Листинг 56. smile_make.php Путь: news/chat/say/ smile_make.php

    <?php

    if(session_id() == '') {session_start();}

    /* Проверяем куда пойдет смайл в комментарии или в ответы */

    if (isset($_POST['saytext'])) {

          $_SESSION['txt'] = $_POST['saytext'].$_POST['smile'];

    header("Location: ".$_SERVER["HTTP_REFERER"]);// Делаем редирект в комментарии

    exit();

    }

    elseif (isset($_POST['replytext'])){

          $_SESSION['txt'] = $_POST['replytext'].$_POST['smile'];

    header("Location: ".$_SERVER["HTTP_REFERER"]);// Делаем редирект в ответы

    exit();

    }

    Смайлы предусмотрены и в комментариях и в ответах на них, поэтому в данном скрипте отрабатывается место вставки смала: в комментарий или в ответ. Проверка идет при вставке в файл separate_action.php.

    41. Стили

    CSS

    Код отвечающий за отображение выводимых элементов находится в файле style.css

    Листинг 57. style.css Путь: news/chat/style.css

    /* body */

    .chatbody {

    background-color: #fef5e4;

    max-width: 1366px;

    width: auto;

    background-image: url(/images/home/bg.jpg);

    }

    /* form */

    .chatform {

    margin: 0 auto;

    max-width: fit-content;

    box-sizing: border-box;

    padding: 1.5%;

    border-radius: 5px;

    background: RGBA(255, 255, 255, 1);

    –webkit-box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.45);

    box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.45);

    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 - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки