LiteNet.Ru - Актуально о ПК и ПО. 2006-2019.
СТАТЬИ | НОВОСТИ | ПРОГРАММЫ | ОБРАТНАЯ СВЯЗЬ | КАРТА САЙТА
Сейчас на сайте: 3 пользователей онлайн
Обновления
Комментарии interesting news ... [17.03.24]
Комментарии Спасибо... [17.02.24]
Материал Форма ввода php [08.05.23]
Материал Windows 11 LTSC выйдет во второй половине 2024 года [08.05.23]
Материал Microsoft прекратит выпуск обновлений для Windows 10 [29.04.23]
Комментарии Огромный респект и... [04.10.22]
Комментарии не помогло... [10.07.22]
Комментарии не получается войт... [02.11.21]
Комментарии Да нет в редакторе... [05.10.21]
Комментарии Toshiba Tecra s11 ... [21.07.21]
Комментарии Все получилось, сп... [21.07.21]
Комментарии не сработало... [04.06.21]
Комментарии Доброго времени! У... [27.03.21]
Комментарии У меня этот метод ... [19.03.21]
Комментарии всё испробовал,не ... [17.03.21]
Материал Представлена настоящая зарядка по воздуху Xiaomi Mi Air Charge [31.01.21]
Материал Отныне для запуска WhatsApp на ПК и в браузере требуется биометрия [31.01.21]
Материал Google Chrome 88.0.4324.104 [31.01.21]
Материал Avast Free Antivirus 20.10.5824 [31.01.21]
Материал Яндекс.Браузер 20.12.3.138 [31.01.21]
Материал Maxthon 6.1.1.1000 [31.01.21]
Материал MKVToolnix 53.0.0 [31.01.21]
Материал ProduKey 1.95 [31.01.21]
Материал Telegram Desktop 2.5.8 [31.01.21]

RSS

Последние добавленные статьи

Форма ввода php
08.05.2023

Display Driver UninstallerЯзык программирования PHP позволяет делать и обрабатывать пользовательские формы фактически любой сложности. В этой статье я научу вас создавать и обрабатывать формы. Для начала рассмотрим принцип работы форм и из чего они состоят.

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

Рассмотрим простой пример,форма отправки имени,фамилии и номера телефона: Файл forma.html

    <form action="action.php" method="post" enctype="multipart/form-data">
        Ваше имя: <input type="text" name="name" /><br />
        Ваша фамилия: <input type="text" name="surname" /><br />
        Ваш телефон: <input type="text" name="phone" /><br />
        <input type="submit" value="Отправить форму" />
    </form>

В теге form указан путь к обработчику и метод передачи данных. Параметр enctype позволяет передавать через форму файлы. Например если нам нужно приложить к форме какой-нибудь документ-то этот атрибут обязателен. Тэги input - это элементу формы. Какой элемент-зависит от атрибута type. Теперь код обработчика. Файл action.php

    //Принимаем постовые данные
    $name=$_POST['name'];
    $surname=$_POST['surname'];
    $phone=$_POST['phone'];
     
    //вывод на экран
    echo $name.' '.$surname.' ваш номер телефона '.$phone;

Это простейший пример php формы.В реал конечно же никому не интересно заполнять форму лишь для того, чтобы потом посмотреть что же вы заполнили... Чаще всего полученную информацию заносят в базу данных,отправляют на почту или записывают в файл. Мы рассмотрим все три случая. Начнем с простого-запись в файл. Менять будем только обработчик.

Форма с записью результата в файл
Оставляем нашу форму как есть и заносим в файл имя, фамилию, телефон и IP адрес посетителя.

    //Принимаем постовые данные
    $name=$_POST['name'];
    $surname=$_POST['surname'];
    $phone=$_POST['phone'];
     
    //обращаемся к глобальной переменной SERVER
    $ip=$_SERVER['REMOTE_ADDR'];
     
    //формируем строку для записи
    $str=$name.' '.$surname.', '.$phone.', '.$ip.'\r\n';
     
    //открываем файл для записи.Если файл не существует-он будет создан
    $fopen  =  fopen('my_form_reports.txt', 'a+');
    //записываем строку
    fputs ($fopen, $str);
    //закрываем файл
    fclose ($fopen);


Вот и всё. Тестируйте.

Форма с записью результата в базу данных MySql
В случае с базой чуть посложнее. Тут очень важен момент безопасности. Данные необходимо профильтровать и лишь потом занести в БД, иначе злоумышленник может провести SQL инъекцию и уничтожить вашу базу данных.Обязательно используйте функцию mysql_real_escape_string. Пишем обработчик:

    //принимаем данные
    $name=$_POST['name'];
    $surname=$_POST['surname'];
    $phone=$_POST['phone'];
     
    //соединяемся с БД
    mysql_connect('localhost', 'user_name', 'user_password');
    mysql_select_db('db_name');
     
    //обязательно экранируем нежелательные символы функцией mysql_real_escape_string
    $sql="insert into `table_name` (name,surname,phone,ip) values
        (
            '".  mysql_real_escape_string($name)."',
            '".  mysql_real_escape_string($surname)."',
            '".  mysql_real_escape_string($phone)."',
            '".$_SERVER['REMOTE_ADDR']."'
        )";
    $res=mysql_query($sql);

Будет лучшим использовать библиотеку PDO. Код будет выглядеть следующим образом:

    $name=$_POST['name'];
    $surname=$_POST['surname'];
    $phone=$_POST['phone'];
    //соединение с базой
    $db  =  new  PDO('mysql:dbname=db_name; host=localhost',"user_name","user_password");
     
    //далее сам запрос
    $sql="insert into `table_name` (name,surname,phone,ip) values (:name,:surname,:phone,:ip)";
    $sth=$db->prepare($sql);
    $sth->bindValue(':name', $name);
    $sth->bindValue(':surname', $surname);
    $sth->bindValue(':phone', $phone);
    $sth->bindValue(':ip', $_SERVER['REMOTE_ADDR']);
    $sth->execute();


Обратите внимание,что при использовании PDO наши переменные не проходили никакой проверки. Но это не является уязвимостью. Библиотека PDO самостоятельно очистит всё лишнее и выполнит запрос. Чтоб узнать результат запроса-допишите в конце следующий код:

    $error=$sth->errorInfo();
    print_r($error);


Форма с отправкой e-mail средствами php
Опять правим форму. На этот раз экранируем ненужные символы для безопасного отображения в браузере. Используется для этого функция htmlspecialchars.

    //Принимаем постовые данные
    $name=$_POST['name'];
    $surname=$_POST['surname'];
    $phone=$_POST['phone'];
     
    //Тут указываем на какой ящик посылать письмо
    $to = "email@yandex.ru";
    //Далее идет тема и само сообщение
    $subject = "Тема письма";
    $message = "

    Письмо отправлено из моей формы.

Пользователь указал:
     Имя: ".htmlspecialchars($name)."

    Фамилия: ".htmlspecialchars($surname)."

    Телефон: ".htmlspecialchars($phone);
$headers = "From: MySite.ru <site-email@mysite.ru>\r\nContent-type: text/html; charset=utf8 \r\n";
    mail ($to, $subject, $message, $headers);
   


Вот и всё. Если делаете форму, доступную для посетителей сайта-обязательно используйте капчу. Качайте исходники, разбирайтесь. Пишите комментарии, задавайте вопросы.

https://php-include.ru/stati/forma-vvoda-ph

 

Что еще почитать?


Оставленные комментарии:


Всего 0 комментариев


Введите Ваше имя:


Не используйте HTML и ВВ-коды - не работает. Пользуйтесь смайликами :)
Very HappySmileLaughingCoolWinkSurprised
RazzSleepSadShockedEvil or Very MadRolling Eyes

В этом поле Вы можете ввести текст комментария:


До конца всего осталось символов

Код на БОТливость: Код на БОТливость:
Введите код: