Как отправить данные из формы к крипту PHP

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 1.X

Как отправить данные из формы к крипту PHP

#16 23 октября 2019 в 15:48

Я прописал это в чистом HTML в коде страницы.

Gordankem
А я же был невнимательным, в этом и заключается абсурдность —
путь переменной в данном случае определяется самой страницей.

И я солидарен со сказанным:

Вы шутите?))) <?php echo TEMPLATE; ?> прописывать в файл а не в адресную строку как у Вас.

Заралик
#17 24 октября 2019 в 05:35


Пошёл бы другим путём.
1. Проверял бы длину строки и ограничил бы её 30 символами для имени и ещё меньше для телефона. Не соответствует — досвидос.
2. Проверил бы поле телефон регулярным выражением, там должны быть только цифры и +. Не соответствует — досвидос.
3. Проверил бы поле Имя регулярным выражением, там должны быть только символы русского, латинского алфавита, тире и пробел. Не соответствует — досвидос.
Далее дальнейшая логика вашего скрипта.

@IamB
Я реализовал проверку на самой форме.
  1. <form class="contact_form_phone" method="post" action="/templates/_мойШаблон_/special/мой_файл.php">
  2. <ul>
  3. <li><input type="text" placeholder="Степан Васильков" name="text" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'* Ваше Имя':this.value;" value="* Ваше Имя" class="your-name" required maxlength="16"/></li>
  4. <li><input type="text" placeholder="+7XXXXXXXXXX" name="tel" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'* Ваш Телефон':this.value;" value="* Ваш Телефон" class="phone-address" required pattern="^\+7\d{3}\d{7}$" maxlength="12" /></li>
  5. <li><input type="submit" name="send" value="Отправить" class="send-message" /></li>
  6. </ul>
  7. </form>
В таком виде это можно делать?
Или нужно что-то ещё уже для PHP?
#18 24 октября 2019 в 06:49

В таком виде это можно делать?

Gordankem
Можно.

Или нужно что-то ещё уже для PHP?

Gordankem
Нужно. И вот почему:
Во-первых: есть вероятность, что у пользователя отключены или заблочены яваскрипты на вашем сайте, тогда проверка в форме не сработает.
Во-вторых: есть вероятность, что форму будут заполнять боты, тогда ваши яваскрипты вообще не запустятся и проверка не сработает.
Поэтому проверку полей формы яваскриптом делают лишь для людей, чтобы они видели сразу, возможные ошибки в заполнении формы, а не после ее отправки. Основную проверку формы делают уже на принимающей стороне, в вашем случае это php.
#19 24 октября 2019 в 08:43


В таком виде это можно делать?

Gordankem
Можно.

Или нужно что-то ещё уже для PHP?

Gordankem
Нужно. И вот почему:
Во-первых: есть вероятность, что у пользователя отключены или заблочены яваскрипты на вашем сайте, тогда проверка в форме не сработает.
Во-вторых: есть вероятность, что форму будут заполнять боты, тогда ваши яваскрипты вообще не запустятся и проверка не сработает.
Поэтому проверку полей формы яваскриптом делают лишь для людей, чтобы они видели сразу, возможные ошибки в заполнении формы, а не после ее отправки. Основную проверку формы делают уже на принимающей стороне, в вашем случае это php.

Loadырь

Тогда ещё два вопрос.
Можно ли оставить для формы использование JS и при этом сделать также на PHP обработчике формы?
Можете подсказать как на PHP это реализовать?
#20 24 октября 2019 в 10:29
Коллега же вам объяснил зачем нужна обработка на стороне клиента и зачем на стороне сервера.
Алгоритм я вам написал, просто реализуйте его на PHP.
В чем у вас затруднения с реализацией?
#21 24 октября 2019 в 10:47


Коллега же вам объяснил зачем нужна обработка на стороне клиента и зачем на стороне сервера.
Алгоритм я вам написал, просто реализуйте его на PHP.
В чем у вас затруднения с реализацией?

@IamB

Проблема прописать регулярными выражениями для переменной с данными для имени и для переменной с данными для телефона. Тут нужно условие если переменная $text и $telefon с регулярным выражением получила правильные данные то идём дальше. Не могу понять как это прописать.
#22 24 октября 2019 в 22:16
Создайте два файла form.php и handler.php на сервере, поддерживающим PHP.
  1.  
  2. <?php ?>
  3. <form method="post" action="handler.php">
  4. <ul>
  5. <li><input type="text" placeholder="Степан Васильков" name="name" /></li>
  6. <li><input type="text" placeholder="+7XXXXXXXXXX" name="phone" /></li>
  7. <li><input type="submit" name="send" value="Отправить" /></li>
  8. </ul>
  9. </form>
  10.  
-------------------------------------
  1.  
  2. <?php
  3. header ( 'Content-Type: text/html; charset= utf-8' );
  4. ini_set('display_errors', true);
  5.  
  6. // если кто-то просто перешёл на этот адрес
  7. if (filter_input(INPUT_POST, "send") !== "Отправить") {
  8. exit("Не нажата кнопка.");
  9. }
  10.  
  11. $link ='<a href="form.php">Назад к форме.</a><br>';
  12.  
  13. $name = filter_input(INPUT_POST, "name");
  14. $phone = filter_input(INPUT_POST, "phone");
  15. echo "Введены: ".$name." ".$phone."<br>";
  16.  
  17. // проверки
  18. if (mb_strlen($name, "utf-8") > 20 || mb_strlen($phone, "utf-8") !== 12) {
  19. echo $link;
  20. exit("Неверная длина одого из полей.");
  21. }
  22.  
  23. if (!preg_match("~^[a-zа-яё\s]+$~iu", $name)) {
  24. echo $link;
  25. exit("Неверно заполнено имя.");
  26. }
  27.  
  28. if (!preg_match("~^\+([0-9]+)$~", $phone)) {
  29. echo $link;
  30. exit("Неверно заполнен телефон.");
  31. }
  32.  
  33. echo "Проверки завершены. ".$link;
  34.  
С помощью браузера перейдите к form.php. Вводите данные и смотрите, что получится.
#23 25 октября 2019 в 06:54
Всё разобрался спасибо за помощь. Проблема решена.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.