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

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

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

#1 22 октября 2019 в 14:01
Всем привет. Делаю форму для отправки СМС, написал её на HTML и встроил в код страницы. Механизм такой, после нажатия кнопки Отправить, данные из полей должны передаться в фаил по указанному пути. С этим у меня и проблема, как прописать путь к файлу php. Фаил я положил в папку с шаблоном в каталог /special/
Привожу код формы если кому нужно
  1. <form class="contact_form_phone" method="post" action="../special/sms_send.php">
  2. <ul>
  3. <li><input type="text" placeholder="Степан Васильков" name="sender" 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="phone" 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>
Проблема заключается в том, что фаил не вызывается, он не находится просто.
#2 22 октября 2019 в 14:41

он не находится просто

Gordankem
Путь к файлу:
"/templates/<?php echo TEMPLATE; ?>/special/sms_send.php"
#3 22 октября 2019 в 14:52


он не находится просто

Gordankem
Путь к файлу:
"/templates//special/sms_send.php"

DeDja

Вопрос, в echo TEMPLATE; нужно прописать имя шаблона или оно имя шаблона определяется само?
#4 22 октября 2019 в 14:57

или оно имя шаблона определяется само

Gordankem
Определяется само благодаря переменной TEMPLATE.
Можно прописать явным порядком с именем шаблона,
к примеру так: "/templates/_default_/special/sms_send.php"
Успехов.
#5 23 октября 2019 в 06:08
Не срабатывает.
  1. action="/templates/<?php echo TEMPLATE; ?>/special/sms_send.php"
Пустая страница Ошибка 404 и адрес не отрабатывает.
Я прописал это в чистом HTML в коде страницы.


Сработало только в явном виде
  1. action="/templates/_montaj_/special/form_sms.php"
Но это как бы небезопасно считается вроде, как это скрыть?
#6 23 октября 2019 в 06:59

как это скрыть?

Gordankem
Невозможно скрыть разницу между
sms_send.php и form_sms.php
(и шаблоне _default_).

В консоли Вашего сайта три ошибки —
Страница не найдена — 404
Нет файлов:

/graphics/loader.white.gif
/graphics/zoomout.cur
/graphics/outlines/drop-shadow.png
#7 23 октября 2019 в 09:25

Пустая страница Ошибка 404 и адрес не отрабатывает.
Я прописал это в чистом HTML в коде страницы.
Как отправить данные из формы к крипту PHP

Сработало только в явном виде

Gordankem
Вы шутите?))) <?php echo TEMPLATE; ?> прописывать в файл а не в адресную строку как у Вас.
#8 23 октября 2019 в 09:27

Но это как бы небезопасно считается вроде, как это скрыть?

Gordankem
Где Вы это увидели, при просмотре css или в строке?
#9 23 октября 2019 в 10:11


Пустая страница Ошибка 404 и адрес не отрабатывает.
Я прописал это в чистом HTML в коде страницы.
Как отправить данные из формы к крипту PHP

Сработало только в явном виде

Gordankem
Вы шутите?))) прописывать в файл а не в адресную строку как у Вас.

Заралик

Это не ответ.
Я код прописываю на странице, в движке сайта, когда включаю отображение HTML.
#10 23 октября 2019 в 10:17


как это скрыть?

Gordankem
Невозможно скрыть разницу между
sms_send.php и form_sms.php
(и шаблоне _default_).

В консоли Вашего сайта три ошибки —
Страница не найдена — 404
Нет файлов:

/graphics/loader.white.gif
/graphics/zoomout.cur
/graphics/outlines/drop-shadow.png

DeDja
Вопрос в другом, как называются файлы обработки form_sms.php и sms_send.php или мой_файл.php я думаю не имеет значения.
Главное как к нему прописать обращение без указания явного пути. В редакторе админки <?php ?> походу не воспринимается как код.
Основной вопрос прописать обращение без указания явного пути?
#11 23 октября 2019 в 11:29

Основной вопрос прописать обращение без указания явного пути?

Gordankem
Здесь: /forum/thread32436-1.html#318005
И Вам следует обеспечить наличие соответствующего файла с расширением php (form_sms.php)
в соответствующем каталоге шаблона по умолчанию _default_ (а не _montaj_).

Но это как бы небезопасно считается вроде

Gordankem
Откуда взято вроде? С потолка.
#12 23 октября 2019 в 11:51
Как вариант.
В форме указать путь явно. А вот в файле обработчике form_sms.php фильтровать то, что пришло с POST запросом.
Боятся стоит того, что ваш скрипт будет работать и с некорректными данными. К примеру, вам в поле name загрузят пару томов Л.Толстого.
#13 23 октября 2019 в 14:44


Основной вопрос прописать обращение без указания явного пути?

Gordankem
Здесь: /forum/thread32436-1.html#318005
И Вам следует обеспечить наличие соответствующего файла с расширением php (form_sms.php)
в соответствующем каталоге шаблона по умолчанию _default_ (а не _montaj_).

Но это как бы небезопасно считается вроде

Gordankem
Откуда взято вроде? С потолка.

DeDja

Два вопроса насчёт работы с шаблоном.
Есть ли ограничение в админке движка на отработку PHP кода?
Например
  1. <form class="contact_form_phone" method="post" action="/templates/_мойШаблон_/special/мой_файл.php">
Второй вопрос почему если явно прописать путь, то доступ к файлу из
  1. _мойШаблон_/special/
я получаю?
#14 23 октября 2019 в 14:50


Как вариант.
В форме указать путь явно. А вот в файле обработчике form_sms.php фильтровать то, что пришло с POST запросом.
Боятся стоит того, что ваш скрипт будет работать и с некорректными данными. К примеру, вам в поле name загрузят пару томов Л.Толстого.

@IamB
Насчёт безопасности формы я продумал
$tel = $_POST['tel']; //Поле из формы имя
$text = $_POST['text']; //Поле из формы телефон
$tel = htmlspecialchars($tel); //функция преобразования специальных символов для защиты
$text = htmlspecialchars($text);
$tel = urldecode($tel); //декодирование URL адеса в случае прописывания его в поле формы
$text = urldecode($text);
$tel = trim($tel); //удаление пробелов в начале и в конце строки
$text = trim($text);

Что ещё можно добавить для безопасности получения данных из формы?
#15 23 октября 2019 в 15:14
Пошёл бы другим путём.
1. Проверял бы длину строки и ограничил бы её 30 символами для имени и ещё меньше для телефона. Не соответствует — досвидос.
2. Проверил бы поле телефон регулярным выражением, там должны быть только цифры и +. Не соответствует — досвидос.
3. Проверил бы поле Имя регулярным выражением, там должны быть только символы русского, латинского алфавита, тире и пробел. Не соответствует — досвидос.
Далее дальнейшая логика вашего скрипта.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.