Gordankem
Коллега же вам объяснил зачем нужна обработка на стороне клиента и зачем на стороне сервера.
Алгоритм я вам написал, просто реализуйте его на PHP.
В чем у вас затруднения с реализацией?
Проблема прописать регулярными выражениями для переменной с данными для имени и для переменной с данными для телефона. Тут нужно условие если переменная $text и $telefon с регулярным выражением получила правильные данные то идём дальше. Не могу понять как это прописать.
Можно.В таком виде это можно делать?
Нужно. И вот почему:Или нужно что-то ещё уже для PHP?
Во-первых: есть вероятность, что у пользователя отключены или заблочены яваскрипты на вашем сайте, тогда проверка в форме не сработает.
Во-вторых: есть вероятность, что форму будут заполнять боты, тогда ваши яваскрипты вообще не запустятся и проверка не сработает.
Поэтому проверку полей формы яваскриптом делают лишь для людей, чтобы они видели сразу, возможные ошибки в заполнении формы, а не после ее отправки. Основную проверку формы делают уже на принимающей стороне, в вашем случае это php.
Тогда ещё два вопрос.
Можно ли оставить для формы использование JS и при этом сделать также на PHP обработчике формы?
Можете подсказать как на PHP это реализовать?
Я реализовал проверку на самой форме.
Пошёл бы другим путём.
1. Проверял бы длину строки и ограничил бы её 30 символами для имени и ещё меньше для телефона. Не соответствует — досвидос.
2. Проверил бы поле телефон регулярным выражением, там должны быть только цифры и +. Не соответствует — досвидос.
3. Проверил бы поле Имя регулярным выражением, там должны быть только символы русского, латинского алфавита, тире и пробел. Не соответствует — досвидос.
Далее дальнейшая логика вашего скрипта.
<form class="contact_form_phone" method="post" action="/templates/_мойШаблон_/special/мой_файл.php"> <ul> <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> <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> <li><input type="submit" name="send" value="Отправить" class="send-message" /></li> </ul> </form>
Или нужно что-то ещё уже для PHP?
Насчёт безопасности формы я продумал
Как вариант.
В форме указать путь явно. А вот в файле обработчике form_sms.php фильтровать то, что пришло с POST запросом.
Боятся стоит того, что ваш скрипт будет работать и с некорректными данными. К примеру, вам в поле name загрузят пару томов Л.Толстого.
$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);
Что ещё можно добавить для безопасности получения данных из формы?
Здесь: /forum/thread32436-1.html#318005Основной вопрос прописать обращение без указания явного пути?
И Вам следует обеспечить наличие соответствующего файла с расширением php (form_sms.php)
в соответствующем каталоге шаблона по умолчанию _default_ (а не _montaj_).
Откуда взято вроде? С потолка.Но это как бы небезопасно считается вроде
Два вопроса насчёт работы с шаблоном.
Есть ли ограничение в админке движка на отработку PHP кода?
Например
<form class="contact_form_phone" method="post" action="/templates/_мойШаблон_/special/мой_файл.php">
_мойШаблон_/special/
Вопрос в другом, как называются файлы обработки form_sms.php и sms_send.php или мой_файл.php я думаю не имеет значения.
Невозможно скрыть разницу междукак это скрыть?
sms_send.php и form_sms.php
(и шаблоне _default_).
В консоли Вашего сайта три ошибки —
Страница не найдена — 404
Нет файлов:
/graphics/loader.white.gif
/graphics/zoomout.cur
/graphics/outlines/drop-shadow.png
Главное как к нему прописать обращение без указания явного пути. В редакторе админки <?php ?> походу не воспринимается как код.
Основной вопрос прописать обращение без указания явного пути?
Вы шутите?))) прописывать в файл а не в адресную строку как у Вас.Пустая страница Ошибка 404 и адрес не отрабатывает.
Я прописал это в чистом HTML в коде страницы.
Как отправить данные из формы к крипту PHP
Сработало только в явном виде
Это не ответ.
Я код прописываю на странице, в движке сайта, когда включаю отображение HTML.
action="/templates/<?php echo TEMPLATE; ?>/special/sms_send.php"
Я прописал это в чистом HTML в коде страницы.
Сработало только в явном виде
action="/templates/_montaj_/special/form_sms.php"
Путь к файлу:он не находится просто
"/templates//special/sms_send.php"
Вопрос, в echo TEMPLATE; нужно прописать имя шаблона или оно имя шаблона определяется само?
Привожу код формы если кому нужно
<form class="contact_form_phone" method="post" action="../special/sms_send.php"> <ul> <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> <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> <li><input type="submit" name="send" value="Отправить" class="send-message" /></li> </ul> </form>
Всем спасибо за помощь, мне она пригодилась. Кому нужно пользуйтесь материалом.
{if $item.NSLevel <= 1} <li class="krug_menu{$item.id} {if ($menuid==$item.id || ($currentmenu.NSLeft > $item.NSLeft && $currentmenu.NSRight < $item.NSRight)) && $item.NSLevel<=1}selected{/if}>"> {/if} {if $item.NSLevel <= 1} <a href="{$item.link}" target="{$item.target}" {if $menuid==$item.id}class="selected"{/if} title="{$item.title|escape:'html'}"> {if $item.iconurl}<img src="/images/menuicons/{$item.iconurl}" alt="{$item.title|escape:'html'}" />{/if} <span class="podpisRazd">{$item.title}</span> </a> {else}
Может если занимает много времени отказаться от этой идеи ?
Отказаться нельзя, это необходимо. Я уже реализовал вывод в круг. Сейчас прибавилась другая задача. Как скрыть из пункта меню текст, у меня это Главная монтаж.
Gordankem, вот было в закладках, может чем поможет:
/forum/thread11984-1.html#100344
Пасибо за подсказку, это решение мне кажется подходит. Выводятся ID пунктов меню, которые можно классу присвоить и стили для них прописать.
Респект, почёт и уважение. Тема пока актуальна, я ещё не закончил ))
Вот, что на мой взгляд нужно, вывод реальных ID меню
/*--------------*/
<li class="color{$item.id} {if ($menuid==$item.id || ($currentmenu.NSLeft > $item.NSLeft && $currentmenu.NSRight < $item.NSRight)) && $item.NSLevel<=1}selected{/if}>"
Мне подсказывали ещё сделать вывод итераций массива, может это тоже хорошее решение было бы, но я что-то так и не смог это сделать.
Результат