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

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

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

67 0 11:01, 24-03-2023

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

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

    1 ... 10 11 12 13 14 15 16 17 18 ... 23
    Перейти на страницу:
    их редактирования.

    Страница получает массив authors от страницы index.php обрабатывает и выводит на печать.

    14. Форма добавления пользователя

    Для добавления пользователя служит файл формы «form_add_user.php»

    Листинг 29. form_add_user.php Путь: news/chat/admin/users/ form_add_user.php

    <?php

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

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta charset="utf-8">

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

    <title><?php htmlout($pageTitle); ?></title>

    </head>

    <body>

    <h1><?php htmlout($pageTitle); ?></h1>

    <form action="?<?php htmlout($action); ?>" method="post" enctype="multipart/form-data">

    <fieldset class="usernames">

    <div class="username">

    <label for="name">Имя: &nbsp &nbsp &nbsp

           <input type="text" name="login"

    id="login" value="<?php if (isset($login)){

                htmlout($login);} ?>" >

           </label>

    </div> <!– end.username –>

    <div class="username">

    <label for="email">Email: &nbsp &nbsp

          <input type="email" name="email"

    id="email" value="<?php htmlout($email); ?>"></label>

    </div><!– end.username –>

    <div class="username">

    <label for="password">Пароль:&nbsp

          <input type="password"

    name="password" id="password"></label>

    </div><!– end.username –>

    </fieldset><!– end.fieldset usernames–>

    <br/>

    <fieldset class="ava">

    <legend>Загружаем аватар:</legend>

    <p>

    <label><p>Выберите аватар. Изображение должно быть формата jpg, gif или png:</p>

    <p>Загружаем готовые аватары или картинки только квадратной формы</p><br>

           </label>

    <input type="FILE" name="fupload">

    </p>

    </fieldset><!– end.fieldset ava –>

    <fieldset class="level">

    <legend>Уровень доступа пользователя:</legend>

    <?php for ($i = 0; $i < count($roles); $i++): ?>

    <div>

    <label for="role<?php echo $i; ?>">

                      <input type="checkbox"

    name="roles[]" id="role<?php echo $i; ?>"

    value="<?php htmlout($roles[$i]['id']);?>"<?php

    if ($roles[$i]['selected']) {

    echo ' checked';

    } ?>

                 >

                 <?php htmlout($roles[$i]['id']); ?></label>:

    <?php htmlout($roles[$i]['description']); ?>

    <?php endfor; ?>

    </fieldset><!– end.fieldset level –>

    <div>

    <input type="hidden" name="id" value="<?php

    htmlout($id); ?>">

    <input type="submit" value="<?php htmlout($button); ?>">

    </div>

    </form>

    <a href="/chat/admin/">Вернуться</a>

    </body>

    </html>

    Форма принимает данные для создания нового пользователя «Имя», «Электронная почта», «Пароль», «Аватар», «Роль пользователя» и передает их обработчику на той же странице index.php форма вставляется при нажатии ссылки «Добавить нового пользователя», которое обновляет страницу и создает переменную $_GET['add'], являющуюся условием вставки формы.

    Поскольку в форме будет передаваться картинка аватар, то необходимо указать атрибут формы enctype="multipart/form-data".

    15. Форма удаления пользователя

    Для удаления выбранного пользователя служит форма «form_delete.php»

    Листинг 29. form_delete.php Путь: news/chat/admin/users/ form_delete.php

    <?php

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

    ?>

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta charset="utf-8">

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

    <title>Подтверждение удаления</title>

    </head>

    <body class="chatbody">

    <h1>Удаление</h1>

    <ul>

    <?php foreach ($authors as $author) : ?>

    <li style="list-style-type: none">

    <form action="" method="post" class="chatform">

    <div>

    <p>Вы действительно хотите удалить этого пользователя?</p>

    <hr>

    <p>

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

    <input type="submit" name="action" value="ДА">

    <input type="submit" name="action" value="НЕТ">

    </p>

    <?php

    $ava = $author['img'];

    echo '<img src="' . $ava . ' ">'.'<p>';

    htmlout($author['login']);

                echo ' ';

    htmlout($author['roleid']);

                echo '<p>';

    ?>

    </div>

    </form>

    </li>

    <?php endforeach; ?>

    </ul>

    <p><a href="..">Вернуться</a></p>

    </body>

    </html>

    Форма выводит кнопки «Да» и «Нет», по нажатии которых страница обновляется и если была нажата «Да» происходит удаление пользователя.

    Логика работы следующая: если нажата кнопка «Удалить» вставляется файл обработчик «delete.php», который делает выборку данных пользователя и вставляет форму подтверждения удаления, если удаление подтверждено, нажата кнопка «Да», то страница перегружается и само удаление происходит уже в файле «index.php».

    16. Скрипт подготовки удаления пользователя

    Подготовку удаления пользователя выполняет файл «delete.php»

    Листинг 30. delete.php Путь: news/chat/admin/users/delete.php

    <?php

    error_reporting(E_ALL);

    //require_once $_SERVER['DOCUMENT_ROOT'] . '/admin/access.php';

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

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

    try{

    $sql = 'SELECT users.id,users.login, users.img, authorrole.roleid FROM `users` INNER JOIN authorrole ON users.id =authorrole.authorid

    WHERE users.id = :id';

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

    $s->execute(array('id' => $_POST['id']));

    $result = $s->Fetchall();

    }

    catch (pdoException $e)

    {

    $error = 'Ошибка получения пользователя из БД';

    include $_SERVER['DOCUMENT_ROOT'] .'/chat/admin/users/error.html.php';

    exit();

    }

    foreach ($result as $row)

    {

    $authors[] = array('id' => $row['id'], 'login' => $row['login'], 'roleid'=> $row['roleid'], 'img' => $row['img'] );

    }

    /* Вставляем форму согласия на удаление */

    include $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/users/form_delete.php';

    Готовит данные для идентификации удаляемого пользователя и передает их на печать в форме form_delete.php.

    Запрос как обычно, в таблицы «users» и «authorrole». Выводит форму «Вы действительно хотите удалить этого пользователя?». Удаление происходит на странице chat/admin/users/index.php в зависимости от ответа, выбранного в форме form_delete.php' (Листинг 29).

    17. Вывод аватара

    Для вывода аватаров пользователей я воспользовался готовым решением https://ruseller.com/lessons.php?rub_id=37&id=350. За вывод аватаров пользователей отвечает файл «avatar.php».

    Листинг 31. avatar.php Путь: news/chat/admin/users/ avatar.php

    <?php

    error_reporting(E_ALL);

    /*....................avatar................................*/

    if (empty($_FILES['fupload']['name']))

    {

    //если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"

    $avatar = 'avatars/noavatar.png'; //картинка в исходниках

    }

    else {

    //иначе – загружаем изображение пользователя

    $path = 'avatars/'; //папка, куда будет загружаться начальная картинка и ее сжатая копия

    if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения

    {

    $filename = $_FILES['fupload']['name'];

    $source = $_FILES['fupload']['tmp_name'];

    $target = $path.$filename;

    move_uploaded_file($source, $target);//загрузка оригинала в папку $path

    if(preg_match('/[.](GIF)|(gif)$/', $filename)) {

    $im = imagecreatefromgif($path.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия

    }

    if(preg_match('/[.](PNG)|(png)$/', $filename)) {

    $im = imagecreatefrompng($path.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия

    }

    if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {

    $im = imagecreatefromjpeg($path.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия

    }

    // Создание квадрата 90x90

    // dest – результирующее изображение

    // 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.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.

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

    $delfull = $path.$filename;

    unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не

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