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

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

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

67 0 11:01, 24-03-2023

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

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

    1 ... 11 12 13 14 15 16 17 18 19 ... 23
    Перейти на страницу:
    нужен. Задачей было – получить миниатюру.

    }

    else

    {

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

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

    }

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

    }

    Скрипт создает и присваивает пользователю аватар из выбранной им картинки и загружает его под уникальным именем в папку avatars. Листинг подробнейший, мне кажется, здесь пояснения не нужны.

    18. Работа с обычным пользователем

    18.1 Скрипт работы с пользователем

    Скрипт аналогичен коду использумому для работы с администратором в индексном файле папки «users» за исключением того, что пользователь видит и может редактировать только свои данные. Кроме того он не может поменять свой логин. За это отвечает свойство Readonly в поле ввода логина.

    За обработку данных отвечает файл «edituser.php».

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

    <?php

    error_reporting(E_ALL);

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

    /*.................Редактирование пользователя....................*/

    if (isset($_POST['action']) and $_POST['action'] == 'Редактировать') {

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

    try {

    $sql = 'SELECT id, login, email, img FROM users WHERE id = :id';

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

    $s->bindValue(':id', $_POST['id']);

    $s->execute();

    } catch (pdoException $e) {

    $error = 'Ошибка при получении сведений об авторе.';

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

    exit();

    }

    $row = $s->fetch();

    $pageTitle = 'Редактирование профиля';

    $action = 'editform';

    $login = $row['login'];

    $email = $row['email'];

    $id = $row['id'];

    $avatar = $row['img'];

    $button = 'Обновить профиль';

    // список ролей, прав автора

    try {

    $sql = 'SELECT roleid FROM authorrole WHERE authorid = :id';

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

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

    $s->execute();

    } catch (pdoException $e) {

    $error = 'Ошибка выборки прав юзера.';

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

    exit();

    }

    $selectedRoles = array();

    foreach ($s as $row) {

    $selectedRoles[] = $row['roleid'];

    }

    // построение списка ролей автора

    try {

    $result = $dsn->query('SELECT id, description FROM role');

    } catch (pdoException $e) {

    $error = 'Ошибка построения списка ролей юзера.';

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

    exit();

    }

    foreach ($result as $row) {

    $roles[] = array(

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

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

    'selected' => in_array($row['id'], $selectedRoles)

    );

    }

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

    exit();

    }

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

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

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

    /* 2.1 Проверяем все ли поля формы заполнены */

    if (empty($_POST['login']) or empty($_POST['password']) or empty($_POST['email'])) {

    exit("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");

    }

    /* 2.2 Проверка корректности email */

    if (!preg_match("/[0-9a-z_]+@[0-9a-z_^.]+.[a-z]{2,3}/i", $_POST['email'])) {

    exit("Неверно введен е-mail!");

    }

    try {

    $sql = 'UPDATE users SET

    login = :login,

    email = :email,

          img = :img

    WHERE id = :id';

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

    $s->bindValue(':id', $_POST['id']);

    $s->bindValue(':login', $_POST['login']);

    $s->bindValue(':email', $_POST['email']);

    $s->bindValue(':img', $avatar);

    $s->execute();

    } catch (pdoException $e) {

    $error = 'Ошибка добавления юзера.';

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

    exit();

    }

    if ($_POST['password'] != '') {

    $password = md5($_POST['password'] . 'swl');

    try {

    $sql = 'UPDATE users SET

    password = :password

    WHERE id = :id';

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

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

    $s->bindValue(':id', $_POST['id']);

    $s->execute();

    } catch (pdoException $e) {

    $error = 'Ошибка обновления пароля.';

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

    exit();

    }

    }

    header('Location: .');

    exit();

    }

    /* Удаление 2…Результат работы формы, вызываемой кодом ниже(Удаление 1) */

    if (isset($_POST['action']) and $_POST['action'] == 'ДА') {

    // удаление ролей автора

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

    try {

    $sql = 'DELETE FROM authorrole WHERE authorid = :id';

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

    $s->bindValue(':id', $_POST['id']);

    $s->execute();

    } catch (pdoException $e) {

    $error = 'Ошибка удаления роли юзера.';

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

    exit();

    }

    try {

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

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

    $s->bindValue(':id', $_POST['id']);

    $s->execute();

    } catch (pdoException $e) {

    $error = 'Ошибка удаления юзера.';

    $e->getMessage();

    $e->getLine();

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

    exit();

    }

    header('Location: .');

    exit();

    }

    /* Первичный запрос на удаление. Выводит форму…ДА или НЕТ (Удаление 1) */

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

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

    exit();

    }

    // страница юзера

    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.login = :login';

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

    $s->execute(array('login' => $_SESSION['login']));

    $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/list_edit_user.php';

    Подключаемся к БД проверяем какие кнопки были нажаты, проверяем данные пользователя, обрабатываем результаты. Формируем запросы и создаем первичные массивы для дальнейшей их обработки в соответствующих формах. Обновляем, удаляем или оставляем без изменений данные пользователя в БД.

    18.2 Страница пользователя

    Файл страницы пользователя «list_edit_user.php»

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

    <?php

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

    ?>

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="utf-8">

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

    <title>Редактировать профиль</title>

    </head>

    <body class="chatbody">

    <h2>Редактировать профиль</h2>

    <ul>

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

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

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

    <div class="list_edituser">

    <?php

    $ava = $author['img'];

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

    htmlout($author['login']);

    echo " ";

    htmlout($author['roleid']);

    ?>

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

    <input type="submit" name="action" value="Редактировать">

    <input type="submit" name="action" value="Удалить">

    </div>

    </form>

    </li>

    <?php endforeach; ?>

    </ul>

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

    </body>

    </html>

    Выводит страницу содержащую данные пользователя и форму для выбора действий с этими данными: «Редактировать», «Удалить».

    18.3 Форма редактирования пользователя

    Файл формы «form_edit_user.php».

    Листинг 34. form_edit_user.php Путь: news/chat/admin/users/ form_edit_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 class="chatbody">

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

    <p style='font-style:italic'>Здесь вы можете поменять аватар, пароль и email</p>

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

    <div>

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

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

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

                htmlout($login);} ?>">

          </label>

    </div>

    <br/>

    <div>

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

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

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

    </div>

    <br/>

    <div>

    <label for="password">Пароль: <input type="password"

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

    </div>

    <p>

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

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

    </p>

    <div>

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

    htmlout($id); ?>">

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

    </div>

    </form>

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

    </body>

    </html>

    Выводится

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