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

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

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

67 0 11:01, 24-03-2023

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

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

    1 ... 13 14 15 16 17 18 19 20 21 ... 23
    Перейти на страницу:
    w – ширина изображения

    // ratio – коэффициент пропорциональности

    $w = 90; // квадратная 90x90. Можно поставить и другой размер.

    $h = 90;

    // создаём исходное изображение на основе

    // исходного файла и определяем его размеры

    $w_src = imagesx($im); //вычисляем ширину

    $h_src = imagesy($im); //вычисляем высоту изображения

    if ($w_src !== $h_src) {

    exit('<h4>Стороны изображения для загрузки должны быть равны. Например 256*256.<br>Рекомендую использовать готовые аватары со специализированных сайтов.<br>

    Или подготовьте картинку в графическом редакторе</h4><br><i>p.s. грузим аватары, а не картины</i>');

    }

    // создаём пустую квадратную картинку

    // важно именно truecolor!, иначе будем иметь 8-битный результат

    $dest = imagecreatetruecolor($w, $w);

    $white = imagecolorallocate($dest, 255, 255, 255);

    imagefill($dest, 0, 0, $white);

    imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $h_src);

    $date = time(); //вычисляем время в настоящий момент.

    imagejpeg($dest, $path_to_90_directory . $date . ".jpg"); //сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.

    $avatar = $path_to_90_directory . $date . ".jpg"; //заносим в переменную путь до аватара.

    $delfull = $path_to_90_directory . $filename;

    unlink($delfull); //удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было – получить миниатюру.

    } else {

    //в случае несоответствия формата, выдаем соответствующее сообщение

    exit("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>"); //останавливаем выполнение сценариев

    }

    //конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы

    }

    /*.........................Сохраняем пользователя в базу......................*/

    if (!isset($date)) {

    $date = time();

    }

    try {

    $sql = "INSERT INTO users (login,password,email,img,date) VALUES(:login,:password,:email,:img, :date)";

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

    $result2->execute([

    'login' => $login,

    'password' => $password,

    'email' => $email,

    'img' => $avatar,

    'date' => $date

    ]);

    $role = 'user';

    $authorid = $dsn->lastInsertId();

    $sql = "INSERT INTO authorrole (authorid,roleid) VALUE (:authorid,:roleid)";

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

    $resultrole->execute([

    'authorid' => $authorid,

    'roleid' => $role

    ]);

    echo '<img src="' . $avatar . '">';

    echo ' ' . '<h3>' . $login . '</h3>' . ' ' . "Вы успешно зарегистрированы! <a href='/index.html'>Главная страница</a>";

    } catch (PDOException $e) {

    echo "You have an error: " . $e->getMessage() . "<br>";

    echo "On line: " . $e->getLine();

    }

    $activation = md5($authorid) . md5($login);

    $subject = "Подтверждение регистрации"; //тема сообщения

    $message = "Здравствуйте! Спасибо за регистрацию в модуле комментариев chatnВаш логин: " . $login . "n

    Перейдите по ссылке, чтобы активировать ваш аккаунт:nhttp://" . $_SERVER['HTTP_HOST'] . "/chat/admin/users/activation.php?login=" . $login . "&code=" . $activation . "nС уважением,n

    Администратор модуля"; //содержание сообщение

    mail($email, $subject, $message, "Content-type:text/plane; Charset=utf-8rn"); //отправляем сообщение

    echo "<hr><h3>Вам на E-mail выслано письмо с cсылкой, для подтверждения регистрации.</h3> <br><b>Внимание! Ссылка действительна 1 час.</b>"; //говорим о отправленном письме пользователю

    В этом скрипте проверяются данные пользователя и сохраняются в БД. Обработка изображений для аватара сделана только для квадрата, т.к. PHP это язык серверный и обработка изображений явно не его конек. Результаты при обработке прямоугольников мягко говоря разочаровывают, поэтому загрузка и обработка прямоугольных исходников не предусмотрена. Лучше взять готовый или подготовить аватар в графическом редакторе. Код в данном скрипте прокомментирован практически построчно, думается вопросов быть не должно.

    С административным разделом закончили, приступаем к комментариям.

    22. Комментарии

    Для работы с комментариями используем папку «say», созданную ранее в разделе 3. На данном этапе она пуста и кроме папки «smiles» в которой хранятся заранее подготовленные смайлы в ней ничего нет.

    23. Контроллер 3

    Для вывода комментариев создаем контроллер 3 «say_controller.php».

    Листинг 38. say_controller.php Путь: news/chat/ say_controller.php

    <?php

    error_reporting(E_ALL);

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

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

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

    $page_id = $_SERVER['PHP_SELF']; //индексируем страницу

    /* Если пользователь авторизован вставляем ссылку Добавить комментарий */

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

    $userid = $_SESSION['userid'];

    echo '<div class="addsay" id=""><a href="?addsay" class="aaddsays">Добавить комментарий</a></div>';

    }

    else {

    $userid = '';

    }

    /* Устанавливаем условие видимости блока комментариев и кнопок показать и скрыть комментарии */

    if (isset($_GET['opensay'])) {

    $display_say = 'display:none;';

    $display_but = 'display:flow-root;';

    }

    else {

    $display_say = 'display:flow-root;';

    $display_but = 'display:none;';

    }

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

    echo '<div class="opensay" style="'.$display_but.'"><a href="?" class="aopensays">Показать комментарии</a></div>';

    echo '<div class="opensay" style="'.$display_say.'"><a href="?opensay" class="aopensays">Скрыть комментарии</a></div>';

    /* Вставляем форму добавить комментарий */

    if (isset($_GET['addsay'])){

    $pageid = strtok($_SERVER['PHP_SELF'],'?');

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

    }

    /* Выводим лист комментариев */

    //сортируем в обратном порядке наверху последний комментарий

    try {

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

          $sql = 'SELECT say.id, say.userid, say.saydate, say.saytext, users.login, users.img FROM say INNER JOIN users ON users.`id` = say.userid WHERE say.page_id = :page_id ORDER BY say.id DESC';

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

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

    $s -> execute();

    }

    catch (PDOException $e) {

    echo $e->getMessage();

    echo $e->getLine();

    exit();

    }

    foreach ($s as $row) {

    $say[] = array(

    'id' => $row['id'],

    'saytext' => $row['saytext'],

    'saydate' => $row['saydate'],

    'img' => $row['img'],

    'login' => $row['login'],

                'userid' => $row['userid']);

    }

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

    Контроллер определяет условия видимости управляющих комментариями кнопок и форм ввода комментариев, индексирует страницу и формирует массив say[] с комментариями, который будет выводится в форме form_say.html.php после обработки.

    Как видим у него также есть файлы которые нужно обрабатывать. Если сейчас подключить контроллер, то на странице будет ошибка. Файлы еще не готовы. В папке «chat» создаем папку «function» в которой будут находиться функции по обработке комментариев.

    24. Папка функций

    24.1 Печать смайлов

    Для вывода набора доступных смайлов написана функция «print_smile_set.php»

    Листинг 39. print_smile_set.php Путь: news/function/ print_smile_set.php

    <?php

    error_reporting(E_ALL);

    /* печать блока доступных смайлов в виде кнопок */

    function print_smile_set()

    {

    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']; ?>

    <input type="submit" name="smile" title="<?= $smiles_key; ?>" value="<?= $smiles_key; ?>"

    style="background:url(<?= $smile_path; ?> );

    background-repeat: no-repeat;float:left;height:45px;border:none;

    width:50px;font-size:0;" />

    <?php

    endforeach;

    } catch (PDOException $e) {

    echo $e->getMessage();

    echo $e->getLine();

    exit();

    }

    }

    Смайлы сделаны в виде кнопок. В свойстве «background» кнопки идет картинка смайла. Нажатие кнопки вставляет смайл.

    Внимание! Стили CSS для смайлов задаются непосредственно в скрипте в строке <input … style=””>

    24.2 Печать комментариев

    Для печати комментариев служит функция «print_comment.php»

    Листинг 40. print_comment.php Путь: news/function/ print_comment.php

    <?php

    /* печать комментария со смайлами */

    1 ... 13 14 15 16 17 18 19 20 21 ... 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 - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки