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

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

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

67 0 11:01, 24-03-2023

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

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

    1 ... 12 13 14 15 16 17 18 19 20 ... 23
    Перейти на страницу:
    форма, в которой пользователь может поменять свои аватар, пароль и email.

    19. Регистрация пользователей

    https://ruseller.com/lessons.php?rub_id=37&id=350

    Для регистрации пользователей используются файлы:

    • Страница с формой регистрации «form_registration.html».

    • Страница сохранения пользователя «save_user.php».

    • Страница активации пользователя «activation.php».

    • Капча

    Листинг 35. form_registration.html Путь: news/chat/admin/users/ form_registration.html

    <!DOCTYPE html>

    <html>

    <head>

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

    <title>Регистрация на сайте</title>

    </head>

    <body class="chatbody">

    <h2>Регистрация на сайте</h2>

    <form

    class="chatform"

    action="save_user.php"

    method="post"

    enctype="multipart/form-data"

    id="reg"

    >

    <fieldset class="chatfieldset">

    <legend>Данные для авторизации</legend>

    <label

    >Ваш логин *: <input name="login" type="text" size="15" maxlength="15"

    /></label>

    <hr />

    <label

    >Ваш пароль *:

    <input name="password" type="password" size="15" maxlength="15"

    /></label>

    <hr />

    <label

    >Ваш E-mail *:

    <input name="email" type="email" size="15" maxlength="100"

    /></label>

    <br />

    </fieldset>

    <br />

    <fieldset class="chatfieldset">

    <legend>Выберите аватар</legend>

    <label>

    Изображение должно быть квадратной формы<br />

    и иметь расширение jpg, gif или png:<br />

    <br />

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

    /></label>

    </fieldset>

    <br />

    <!– В переменную fupload отправится изображение, которое выбрал пользователь. –>

    <fieldset class="chatfieldset">

    <legend>Введите код с картинки *:</legend>

    <input type="text" name="capcha" />

    <div><img src="/chat/capcha/captcha.php" /></div>

    </fieldset>

    <p>

    <input type="submit" name="submit" value="Зарегистрироваться" />

    <!– Кнопочка (type="submit") отправляет данные на страничку save_user.php –>

    </p>

    </form>

    Звездочками (*) обозначены поля, обязательные для заполнения.

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

    </body>

    </html>

    Выводит страницу «Регистрация на сайте» и форму регистрации. В форме предусмотрена защита при помощи «капчи» и предлагается отправка для регистрации следующих данных: «Логин», «email», «Пароль», «Аватар».

    20. Капча

    Файлы капчи: обработчик и папка с шрифтами, выводят на форме регистрации проверочный код, который пользователь должен будет ввести.

    Листинг 36. captcha.php Путь:chatcapchacaptcha.php

    <?php

    if (session_id() == '') {

    session_start();

    }

    $string = "";

    for ($i = 0; $i < 5; $i++) {

    $string .= chr(rand(97, 122));

    }

    $_SESSION['rand_code'] = $string;

    $dir = $_SERVER['DOCUMENT_ROOT'] . '/chat/capcha/fonts/verdana.ttf';

    $image = @imagecreatetruecolor(170, 60) or die('Невозможно инициализировать GD поток'); // Создаём изображение

    $black = imagecolorallocate($image, 0, 0, 0);

    $color = imagecolorallocate($image, 200, 100, 90);

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

    imagefilledrectangle($image, 0, 0, 399, 99, $white);

    imagettftext($image, 30, 0, 10, 40, $color, $dir, $_SESSION['rand_code']);

    header("Content-type: image/png");

    imagepng($image);

    Здесь в цикле генерируется строка из случайных чисел, при этом числа сразу преобразуются в символьные эквиваленты. Диапазон чисел 97-122 соответствует буквам латинского алфавита в диапазоне a-z по ASCII http://www.asciitable.com/ . Полученный набор букв в виде строки сохраняется в переменную сессии, а затем оформляется в виде изображения.

    21. Страница сохранения пользователя

    За сохранение и обработку полученных при регистрации данных пользователя отвечает файл «save_user.php»

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

    <?php

    error_reporting(E_ALL);

    if (session_id() == '') {

    session_start();

    }

    /* заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную */

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

    $login = $_POST['login'];

    if (mb_strlen($login) < 2 or mb_strlen($login) > 15) { //проверяем длину логина

    exit("Логин должен состоять не менее чем из 3 символов и не более чем из 15."); //останавливаем выполнение сценариев

    }

    if ($login == '') {

    unset($login);

    }

    }

    /* заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную */

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

    $password = $_POST['password'];

    if (mb_strlen($password) < 3 or mb_strlen($password) > 15) { //проверяем длину пароля

    exit("Пароль должен состоять не менее чем из 3 символов и не более чем из 15."); //останавливаем выполнение сценариев

    }

    if ($password == '') {

    unset($password);

    }

    }

    /* заносим введенный пользователем код в переменную $capcha, если он пустой, то уничтожаем переменную */

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

    $capcha = $_POST['capcha'];

    if ($capcha == '') {

    unset($capcha);

    }

    }

    /* заносим введенный пользователем e-mail, если он пустой, то уничтожаем переменную */

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

    $email = $_POST['email'];

    if ($email == '') {

    unset($email);

    }

    }

    $capcha = stripslashes($capcha); //sequrity чистим капчу

    $capcha = htmlspecialchars($capcha);

    $capcha = trim($capcha); //удаляем лишние пробелы

    if (($capcha == $_SESSION["rand_code"]) && ($capcha != "")) { //проверяем капчу

    } else {

    exit("Капча введена неправильно");

    }

    if (empty($login) or empty($password) or empty($email) or empty($capcha)) { //если пользователь не ввел данные, то выдаем ошибку и останавливаем скрипт

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

    }

    if (!preg_match("/[0-9a-z_]+@[0-9a-z_^.]+.[a-z]{2,3}/i", $email)) { //проверка е-mail адреса регулярными выражениями на корректность

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

    }

    $login = stripslashes($login); //если логин и пароль введены, то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести

    $login = htmlspecialchars($login);

    $password = stripslashes($password);

    $password = htmlspecialchars($password);

    $login = trim($login); //удаляем лишние пробелы

    $password = trim($password);

    /*......................Шифруем пароль...........................*/

    //можно добавить несколько своих символов по вкусу, например, вписав "she".

    //Если этот пароль будут взламывать методом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет.

    //Но советую ставить другие символы, можно в начале строки или в середине.

    //При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.

    $password = md5($_POST['password'] . 'swl'); //шифруем пароль

    include $_SERVER['DOCUMENT_ROOT'] . '/chat/dsn.php'; // подключаемся к базе

    $sth = $dsn->prepare("SELECT id FROM users WHERE login=:login"); // проверка на существование пользователя с таким же логином

    $sth->execute(array(':login' => $login));

    if (!empty($sth->fetch(PDO::FETCH_ASSOC))) {

    exit("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");

    }

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

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

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

    $avatar = "avatars/noavatar.png"; //можете нарисовать net-avatara.jpg или взять в исходниках

    } else {

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

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

    /* проверка формата исходного изображения */

    if (preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/', $_FILES['fupload']['name'])) {

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

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

    $target = $path_to_90_directory . $filename;

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

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

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

    }

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

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

    }

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

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

    }

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

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

    //

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