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

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
От безделья накорябал какой никакой, но всё же модуль обратной связи на jQuery Validation Plugin. Это моя первая попытка что-то написать и хочется немного подстраховаться прежде чем опробовать его. Глянте его, насколько моя поделка безопасна.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Безопасен ли такой модуль?
« Ответ #1 : 22.09.2013, 20:29:53 »
sender.php
Код: php
else {
   break;
}
чито это?

непонятно зачем вы шифруете данные через base64
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Безопасен ли такой модуль?
« Ответ #2 : 22.09.2013, 21:03:17 »
Приветствуем как начинающего, мы тоже были такими
Далее по поводу вашего примера. Он не безопасен.. Вот простейший пример подделать заголовок
http://my.opera.com/star771/blog/2012/04/05/php-curl-xmlhttprequest
Далее, вам нужно хорошо разобраться в формах и методах получения данных из них.
к примеру таким образом я получаю все данные формы в массиве не объявляя лишних переменных
Код: php-brief
$data = $input->get('default', array(), 'array', 'post');
Теперь куда это все отсылать, в смысле данные, чтобы использовать защиту <?php echo JHtml::_('form.token'); ?>.
Вы можете обработать AJAX запрос в:
  • контроллере своего компонента, подсунуть чужому компоненту свой контроллер, отдать на обработку com_contact
  • В плагинах выполнив обработку onAfterInitialise() или иных
  • написать свою точку входа, что вы попробовали сделать но не до конца ибо для этого нужно подключить фреймворк
  • положить файл обработчик в корень шаблона и передать ему на отработку (не рекомендую, но самый простой вариант)
Далее Joomla, как и другие движки конечно не полностью написан с нуля программистами. Некоторые классы в том числе PHPMailer относится к этому.
Это отдельное приложение, которое используется для решения отправки почты. Используйте его, оно протестировано и отлажен, обладает полной документацией
https://code.google.com/a/apache-extras.org/p/phpmailer/
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
Re: Безопасен ли такой модуль?
« Ответ #3 : 22.09.2013, 21:32:08 »
sender.php
Код: php
else {
   break;
}
чито это?

непонятно зачем вы шифруете данные через base64
Зачем? Элементарно - от не знания как правильно сделать. Буду дальше грызть науку, за направление поклон и + Fedor Vlasenko
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Безопасен ли такой модуль?
« Ответ #5 : 22.09.2013, 21:40:43 »
Федь немножко проблема есть в AJAX форме и <?php echo JHtml::_('form.token'); ?>. ))

Зачем? Элементарно - от не знания как правильно сделать.
ну вы хоть бы погуглили значения метода break ) он используется для выхода из цикла! скажите в чем вы пишете? потому что нормальная среда сразу подсвечивает ошибку кода (советую взять PhpStorm, лучшая IDE для PHP)
вы можете написать так:
if($error != 0 && $count>7) {exit;}
а дальше писать остальной код!
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
Re: Безопасен ли такой модуль?
« Ответ #7 : 22.09.2013, 21:50:56 »
Большое спасибо Istaan, загрузили по самые уши  ^-^ теперь на долго мне хватит чтения.
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
Re: Безопасен ли такой модуль?
« Ответ #8 : 22.09.2013, 22:02:13 »
вы можете написать так:
if($error != 0 && $count>7) {exit;}
а дальше писать остальной код!
Наверное все же
Код: php
if($error != 0 || $count>7) {exit;}
Или мне хватит на сгодня!  ;D У вас все верно, я туплю уже.
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Безопасен ли такой модуль?
« Ответ #9 : 22.09.2013, 22:17:25 »
Еще до кучи.  ;D
Код: php
if(mail($to, $subject, $body, $headers))  
   echo('success');
else
   echo 'fail';
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
Re: Безопасен ли такой модуль?
« Ответ #10 : 23.09.2013, 22:34:06 »
Выручайте, застрял, не могу сообразить как написать счетщик обращений к скрипту с помощью $session = JFactory::getSession();
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Безопасен ли такой модуль?
« Ответ #11 : 23.09.2013, 22:44:17 »
Выручайте, застрял, не могу сообразить как написать счетщик обращений к скрипту с помощью $session = JFactory::getSession();
$session = JFactory::getSession();
$count = $session->get( 'count', 0 ) + 1;
$session->set( 'count', $count );
echo $count;
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
Re: Безопасен ли такой модуль?
« Ответ #12 : 23.09.2013, 23:05:35 »
Спасибо, работает, но видимо AJAX скрипт принимает echo $count; за ответ и не выводит сообщение о отправке
Спойлер
[свернуть]
*

aspidy

  • Завсегдатай
  • 1008
  • 55 / 1
  • Миграция joomla 1.0-1.5-2.5
Мелкий ремонт. skype poisk-plus
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Безопасен ли такой модуль?
« Ответ #14 : 24.09.2013, 10:32:34 »
Спасибо, работает, но видимо AJAX скрипт принимает echo $count; за ответ и не выводит сообщение о отправке
так вы уберите echo $count; я же написал это для демонстрации того что работает!
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
Re: Безопасен ли такой модуль?
« Ответ #15 : 24.09.2013, 12:52:57 »
так вы уберите echo $count; я же написал это для демонстрации того что работает!
Вот я дурилка конечно  :laugh:
А есть ли какой-то цивилизованный способ передать настройки модуля в PHP обработчик? Сейчас я их кодирую и посылаю через скрытое поле формы. Подозреваю можно в сессию подсунуть переменную, но лучше ли оно так будет? Или как-то ещё можно?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Безопасен ли такой модуль?
« Ответ #16 : 24.09.2013, 13:35:15 »
Можно в сессию подсунуть настройки модуля, и это безопаснее будет )
притом банально:
Код: php
$session = JFactory::getSession();
$session->set( 'my_params', $params );
$my_params = $session->get( 'my_params' );
echo $my_params->get('param_name', '');
если что echo $my_params->get('param_name', ''); тоже пример  ;)
« Последнее редактирование: 24.09.2013, 13:39:53 от Istaan »
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
Re: Безопасен ли такой модуль?
« Ответ #17 : 24.09.2013, 16:31:03 »
Под вашим чутким руководство вот что у меня получилось: Простенький модуль для обратной связи
Буду признателен за любые советы и информацию.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Безопасен ли такой модуль?
« Ответ #18 : 24.09.2013, 17:03:05 »
Под вашим чутким руководство вот что у меня получилось: Простенький модуль для обратной связи
Буду признателен за любые советы и информацию.
1.  $doc = &JFactory::getDocument();
привыкаем не ставить знак & перед JFactory и т.д. )

2. вместо:
Код: php
$doc = &JFactory::getDocument();
$doc->addStyleSheet(JURI::base(). 'modules/mod_callback/css/style.css');
$doc->addScript(JURI::base(). 'modules/mod_callback/js/jquery.validate.min.js');
$doc->addScript(JURI::base(). 'modules/mod_callback/js/ajax.js');
$cfinfo = $doc->getTitle();

я бы написал:
Код: php
JFactory::getDocument()->addStyleSheet(JURI::base(). 'modules/mod_callback/css/style.css');
JFactory::getDocument()->addScript(JURI::base(). 'modules/mod_callback/js/jquery.validate.min.js');
JFactory::getDocument()->addScript(JURI::base(). 'modules/mod_callback/js/ajax.js');
а там где у вас в шаблоне выводится
Код: php
<input id="cfinfo" type="hidden" name="cfinfo" value="<?php echo $cfinfo; ?>" />
просто
Код: php
<input id="cfinfo" type="hidden" name="cfinfo" value="<?php echo JFactory::getDocument()->getTitle(); ?>" />

3. я бы объеденил файлы jquery.validate.min.js и AJAX.js в один файл!
засуньте содержимое файл AJAX.js в конец файла jquery.validate.min.js и переименуйте файл jquery.validate.min.js например в mod_callback.js
ну и соответсвено только его и подключайте!
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Безопасен ли такой модуль?
« Ответ #20 : 25.09.2013, 04:04:56 »
Код: php-brief
//код нужно перенести в tmpl/default.php
$doc = JFactory::getDocument();
$doc
    ->addStyleSheet('/modules/mod_callback/css/style.css')
    ->addScript('/modules/mod_callback/js/jquery.validate.min.js')
    ->addScript('/modules/mod_callback/js/ajax.js');
Код: javascript
jQuery(document).ready(function ($) {
//здесь спокойно можно использовать $ писать jQuery не нужно
// так мы отправляем все данные формы
data: form.serialize(),

});
а теперь самое главное забыли про
каждый раз новый токен
Код: php-brief
JSession::getFormToken(true);
к форме добавляем
Код: php-brief
 <?php echo JHtml::_('form.token'); ?>
и проверяем ответ соответственно
Код: php-brief
JSession::checkToken('post') or die('@|@');
и как получить данные формы писал выше. Не зачем объявлять переменные лишние
проверку полей в php делайте регулярными выражениями. Будет, что почитать  ^-^
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
Re: Безопасен ли такой модуль?
« Ответ #21 : 25.09.2013, 15:04:17 »
Пишу так
Код: php
$data = $input->get('default', array(), 'array', 'post');
сразу ошибку выдаёт, меняю
Код: php
$data = $jinput->get('default', array(), 'array', 'post');
вроде всё ок, но не могу сообразить как из $data получить данные. Английский не знаю, а русскоязычная документация - не могу найти.
Пробовал $data->get('cfinfo', '') и $data[0]
Отправляет строку:
Спойлер
[свернуть]
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Безопасен ли такой модуль?
« Ответ #22 : 25.09.2013, 15:58:35 »
default это у меня так посмотреть, что у тебя
Код: php-brief
echo '<pre>';
print_r($input);
echo '</pre>';
die;
или
Код: php-brief
die(var_dump($input));
и думайте как сделать форму отдельным XML файлом выводя при этом стандартные поля, используя мультиязычность и валидацию. Без форм никак нельзя. В этом нужно разобраться, это то, что нужно знать
http://docs.joomla.org/Standard_form_field_types
и используя стандартные методы валидации
http://docs.joomla.org/Server-side_form_validation
http://docs.joomla.org/Client-side_form_validation
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Безопасен ли такой модуль?
« Ответ #24 : 25.09.2013, 20:54:02 »
А зачем вам его понимать?) и кстати это объект ))
*

wfedin

  • Завсегдатай
  • 1273
  • 102 / 0
Re: Безопасен ли такой модуль?
« Ответ #25 : 25.09.2013, 20:58:23 »
Да я всё тщетно силюсь понять как с этим работать
Пишу так
Код: php
$data = $input->get('default', array(), 'array', 'post');
сразу ошибку выдаёт, меняю
Код: php
$data = $jinput->get('default', array(), 'array', 'post');
вроде всё ок, но не могу сообразить как из $data получить данные. Английский не знаю, а русскоязычная документация - не могу найти.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Безопасен ли такой модуль?
« Ответ #27 : 25.09.2013, 22:09:38 »
1. Создайте форму XML посмотрите формы регистрации к примеру, список полей ссылки давал выше
2. в точке входа
Код: php-brief
require_once dirname(__FILE__). '/helper.php';
JSession::getFormToken(true);
$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));
$form = modSend_orderHelper::getForm();
require JModuleHelper::getLayoutPath('mod_send_order', $params->get('layout', 'default'));
3.
Код: php-brief
class modSend_orderHelper
{
public static function getForm()
{
        $myForm = new JForm('send_order');
// добавили путь где лежит форма здесь form.xml лежит в корне модуля
        $myForm->addFormPath(__DIR__);
//прочитали и вернули
        $myForm->loadFile('form', false);
return $myForm;
}
}
4.
Спойлер
[свернуть]
*

aspidy

  • Завсегдатай
  • 1008
  • 55 / 1
  • Миграция joomla 1.0-1.5-2.5
Re: Безопасен ли такой модуль?
« Ответ #28 : 26.09.2013, 06:22:18 »
Цитировать
require_once dirname(__FILE__). '/helper.php';
Так у него файла helper.php нет, его нужно создавать
Мелкий ремонт. skype poisk-plus
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Безопасен ли такой модуль?
« Ответ #29 : 26.09.2013, 10:15:33 »
Федь у тебя форма
<form id = "send_order" action = "/index.php?task=send_order" method = "post" class = "form-validate" enctype = "multipart/form-data">
а куда она будет субмитится?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображает link CSS style

Автор leo78

Ответов: 0
Просмотров: 950
Последний ответ 15.07.2015, 16:37:06
от leo78
Вариант пагинатора

Автор AlekVolsk

Ответов: 5
Просмотров: 1068
Последний ответ 03.02.2015, 01:00:30
от ELLE
Странности при установке компонента

Автор Александр216

Ответов: 3
Просмотров: 1192
Последний ответ 16.07.2014, 12:38:39
от Aleks.Denezh
Странности в работе sql-запроса

Автор Александр216

Ответов: 7
Просмотров: 1223
Последний ответ 27.06.2014, 22:03:19
от Aleks.Denezh
Прошу помощи с RS monials

Автор Unloved

Ответов: 0
Просмотров: 1358
Последний ответ 06.06.2014, 04:12:25
от Unloved