0 Пользователей и 1 Гость просматривают эту тему.
  • 48 Ответов
  • 4140 Просмотров
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Обработчик формы
« Ответ #30 : 31.05.2014, 00:05:20 »
Цитировать
http://твой_сайт/?tmpl=obr01
Хмм, действительно работает. Интересно почему?  Я то думал что такая ссылка должна рендерить шаблон вьюхи у компонента который к главной привязян а это рендерит файл который валяется в шаблоне тупо...это что за магия?

upd кажется дошло. Это типа обертки layout выбранного шаблона в который уже компонент непосредственно рендерится и модули. Если не указан то типа index.php используется. Еще там лежит component.php - обертка с минимум HTML.А для шаблона вьюхи компонента используется ?layout= ... Запутатся конечно легко)
« Последнее редактирование: 31.05.2014, 00:37:16 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Обработчик формы
« Ответ #31 : 31.05.2014, 03:33:13 »
Цитировать
только не вставлял первой строкой defined('_JEXEC') or die;, с этим почему-то не работает вобще
у вас не работает потому что вы в action формы прописали http://www.worldofsites.ru/templates/vt_marketing/obr01.php в этом случае защита как раз срабатывает и скрипт вас отфутболивает, потому что вы обращаетесь к нему напрямую как раз.
Или вы прописали  http://www.worldofsites.ru/?tmpl=obr01 - эта форма не будет отправлять данные после знака вопроса.
Вам нужно создать скрытое поле в форме <input type="hidden" name="tmpl" value="obr01"> а в action прописать http://www.worldofsites.ru. Правда во всех этих манипуляциях я вообще не вижу никакого смысла. Все что требуется эта проверка на наличие пост. А если есть необходимость удостоверится  что данные пришли именно с этой формы то можно добавить в форму специальное поле а в обработчике проверять его наличие. Типо токена..
« Последнее редактирование: 31.05.2014, 04:37:45 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Леон

  • Захожу иногда
  • 331
  • 4 / 0
Re: Обработчик формы
« Ответ #32 : 31.05.2014, 10:17:29 »
В экшене вот  action="http://www.worldofsites.ru/?tmpl=obr01", и да сделал проверку, на пост данные не знаю как, сделал на проверку, чтобы поля не были пустые иначе отсылает на главную страницу.
*

Леон

  • Захожу иногда
  • 331
  • 4 / 0
Re: Обработчик формы
« Ответ #33 : 31.05.2014, 15:09:31 »
Плохая защита?))  zomby6888))
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Обработчик формы
« Ответ #34 : 31.05.2014, 15:09:46 »
В экшене вот  action="http://www.worldofsites.ru/?tmpl=obr01", и да сделал проверку, на пост данные не знаю как, сделал на проверку, чтобы поля не были пустые иначе отсылает на главную страницу.
На самом деле в вашем случае это недостаточно. Я за 5 минут написал скрипт который отправляет пост запросы на ваш обработчик. Отослал вам 10 писем, не пришли еще? )
интернет-блог: http://websiteprog.ru
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Обработчик формы
« Ответ #35 : 31.05.2014, 15:11:16 »
Цитировать
Плохая защита?))
Это еще цветочки. Я могу разместить его где нибудь на порносайте и при каждом клике вам будет пачками спам приходить)
интернет-блог: http://websiteprog.ru
*

Леон

  • Захожу иногда
  • 331
  • 4 / 0
Re: Обработчик формы
« Ответ #36 : 31.05.2014, 15:12:04 »
Что посоветуете в таком случае еще сделать?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Обработчик формы
« Ответ #37 : 31.05.2014, 15:13:55 »
6. JHtml::_('form.token');
используйте токен в форме а в обработчике проверку на его наличие;
Код: php
JRequest::checkToken() or jexit('Invalid Token');
« Последнее редактирование: 31.05.2014, 15:18:44 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Обработчик формы
« Ответ #38 : 31.05.2014, 15:20:44 »
6. JHtml::_('form.token');
используйте токен в форме а в обработчике проверку на его наличие;
Да, это самое верное решение.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Леон

  • Захожу иногда
  • 331
  • 4 / 0
Re: Обработчик формы
« Ответ #39 : 31.05.2014, 15:43:36 »
В обработчике вроде понятно, а где в форме прописать  JHtml::_('form.token'); ? код формы находится в модуле HTML

а если (сейчас уже дошло как это) вставить в форму скрытое поле и в обработчике по мимо проверки пост данных прописать еще значение этого поля? Злоумышленник сможет увидеть код моего php файла? (там будет в условии видно имя скрытого поля)

а нет проверил, если сильно захотеть имя скрытого поля можно увидеть в исходном коде HTML страницы
« Последнее редактирование: 31.05.2014, 16:15:40 от Леон »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Обработчик формы
« Ответ #40 : 31.05.2014, 16:29:51 »
mod_custom он вроде так называется?

1. Создаете папку mod_mycustom.
2. Копируете туда все файлы из \modules\mod_custom
3. Переименовывайте файлы mod_custom.php и mod_custom.xml в mod_mycustom.php mod_mycustom.xml
4. Создаете в этой  папке папку languages и копируете туда файлы ru-RU.mod_custom.sys.ini, ru-RU.mod_custom.ini из папки /languages. Переименовываете их в ru-RU.mod_mycustom.sys.ini и ru-RU.mod_mycustom.ini
5. Заменяете все слова mod_custom на mod_mycustom в mod_custom.xml.
6. В вашей папке  в подпапке tmpl в файле default.php заменяете строку <?php echo $module->content;?> на код вашей формы.
7. Перед закрывающим тегом </form> вашей формы добавляете <?php echo JHTML::_( 'form.token' ); ?>

Запаковываете все этов архив и устанавливаете через менеджере расширений. Если все сделали правильно то в менеджере модулей увидите модуль с именем mod_mycustom. Если все получится то вас можно будет поздравить, вы создали собственный модуль)
« Последнее редактирование: 31.05.2014, 16:37:44 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Леон

  • Захожу иногда
  • 331
  • 4 / 0
Re: Обработчик формы
« Ответ #41 : 31.05.2014, 17:43:26 »
меня нельзя поздравить, так кроме заголовка модуля ничего не выводится больше((
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Обработчик формы
« Ответ #42 : 31.05.2014, 17:48:14 »
заголовок выводится, уже хорошо) в папке вашего модуля содержимое файла /tmpl/default.php покажите
интернет-блог: http://websiteprog.ru
*

Леон

  • Захожу иногда
  • 331
  • 4 / 0
Re: Обработчик формы
« Ответ #43 : 31.05.2014, 17:51:41 »
Код
<?php
defined('_JEXEC') or die;
?>


<div class="custom<?php echo $moduleclass_sfx ?>" <?php if ($params->get('backgroundimage')) : ?> style="background-image:url(<?php echo $params->get('backgroundimage');?>)"<?php endif;?> >


<a id="btn01">Заказать!</a>
<form target="_blank" action="http://www.worldofsites.ru/?tmpl=obr01" method="post" role="form" novalidate="novalidate"
</form>  
<div id='PopUp01'>
<div class="PopUpCont01" id='PopUpCont'>
<form target="_blank" action="http://www.worldofsites.ru/?tmpl=obr01" method="post" role="form" novalidate="novalidate">
<a class="callx01"><img src="/templates/vt_marketing/files/images/x.png"/></a>
<h4>Заказать тариф Host 1</h4></br>
<label>Введите свое имя:</label>
<input type="text" placeholder="Например: Василий" name="yourname" class="form-control">
<label>Введите свой номер телефона:</label>
<input type="text" placeholder="Например: 7 (495) 442-45-23" name="phn" class="form-control">
<label>Введите свой e-mail:</label>
<input type="hidden" name="usluga" value="Тариф Host 1">
<input type="text" placeholder="Например: email@mail.ru" name="eml" class="form-control"> </br>
<button type="submit">Оставить заявку</button>
<?php echo JHTML::_( 'form.token' ); ?>
</form>
</div>
</div>
</div>

подгрузку css/js не укаывал, но и без них должна хоть страшная форма, но появиться (ну или хотябы канопка "заказать")
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Обработчик формы
« Ответ #44 : 31.05.2014, 18:06:07 »
5. Заменяете все слова mod_custom на mod_mycustom в mod_custom.xml.
То же самое с mod_custom.php.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Обработчик формы
« Ответ #45 : 31.05.2014, 19:00:47 »
Цитировать
То же самое с mod_custom.php.
угу, все правильно только переименован он должен быть в mod_mycustom.php уже. Последняя строчка там впринципе такая должна быть:
require JModuleHelper::getLayoutPath('mod_mycustom', $params->get('layout', 'default'));

Если не получится могу скинуть куда нибудь рабочий архив.

интернет-блог: http://websiteprog.ru
*

Леон

  • Захожу иногда
  • 331
  • 4 / 0
Re: Обработчик формы
« Ответ #46 : 31.05.2014, 19:59:09 »
ууу спасибо, в последней строке да, не переименовал на mycustom, теперь кнопка появилась и работает как надо)))), а еще один вопросик) У меня есть модуль "Тарифы", это стандартный HTML модуль. Как мне внутри его вывести мой модуль mycustom? (это кнопка "заказать" внизу)

И форма теперь) с формы отправляется а просто по ссылке: Invalid Token

Проблем нет, поставил из джеда Modules Anywhere. И в нужном месте вывел {module 134}, а сам модуль опубликовал, но в разделе "Привязка к пунктам меню" поставил "нигде" и все работает) 

У меня таких кнопки будет 4, на каждый тариф своя кнопка со своей формой а обработчик у них один. И думаю к каждому модулю цеплять файлы css/js будет неудобно их общий размер порядка 300КБ, прописал их 1 раз в файле шаблона.

Еще заметил вот что. Если заполнить форму и отправить, обработчик высвечивает что все успешно и приходит письмо на почту, а если это окно об успешной отправке не закрывать а обновить страницу то он опять обрабатывает, так должно быть?
« Последнее редактирование: 31.05.2014, 20:45:32 от Леон »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Обработчик формы
« Ответ #47 : 31.05.2014, 21:22:19 »
Еще заметил вот что. Если заполнить форму и отправить, обработчик высвечивает что все успешно и приходит письмо на почту, а если это окно об успешной отправке не закрывать а обновить страницу то он опять обрабатывает, так должно быть?

Сделайте перенаправление после отправки почты. Можно на ту же страницу. Тогда логика должна быть такая:
Код: php
If(!isset($_POST))
{
  ...//выводим сообщение об успешной отправке
}
else
{
  ... //проверяем токен, отправляем почту
  header ('Location: http://www.worldofsites.ru/?tmpl=obr01'); //обновляем страницу, избавляемся от post данных
}
интернет-блог: http://websiteprog.ru
*

Леон

  • Захожу иногда
  • 331
  • 4 / 0
Re: Обработчик формы
« Ответ #48 : 04.06.2014, 17:09:49 »
Может кто подсказать почему такое происходит. В этом же моем модуле кнопки заказа. На главной странице сайта, есть таблица "Хостинг-тарифы" под ней 4 кнопки "Заказать" работают как и должны. А вот наверху в меню если выбрать пункт "Хостинг" там эта же самая таблица и в ней эти же кнопки. Но при нажатии на кнопку в поле "Email" вместо подсказки идет какой-то скрипт. (сайт под аватаркой)

Есть мысли почему на главной странице этот модуль нормально отображается а на других такая штука и только с одним полем?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка 1054 Unknown column 'created_by' in 'field list' VirtueMart

Автор Evgen Kulibin

Ответов: 3
Просмотров: 785
Последний ответ 26.02.2023, 01:56:42
от lakshmi
Ошибка 1054 - обновление Joomla 2.5 на 3.4

Автор arevuare

Ответов: 1
Просмотров: 564
Последний ответ 25.09.2019, 14:02:14
от ChaosHead
Как убрать текст на главной?

Автор m03mug08

Ответов: 5
Просмотров: 1062
Последний ответ 07.09.2018, 14:52:24
от Konst
Ошибка 1054 - Unknown column 'u.name' in 'order clause

Автор Shademy

Ответов: 27
Просмотров: 8675
Последний ответ 30.03.2018, 13:41:20
от Roki37
Проблема отображения модулей на шаблоне proto

Автор Artefact

Ответов: 10
Просмотров: 974
Последний ответ 17.08.2017, 18:29:40
от Artefact