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

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Здравствуйте, помогите допилить плагин. Необходимо после регистрации нового пользователя отправить данные на другой сайт по апи.

Собственно файлик

Цитировать
<?php defined( '_JEXEC' ) or die( 'Restricted access' );
//получаем данные нового пользователя
if($isNew){
   $user = JFactory::getUser();
        $first_name = $user->name;
   $email_address = $user->email;
   $phone = $user->phone;

   //отправляем данные
$request = '
&first_name="$first_name"
&email_address="$email_address"
&phone="$phone"
$url = 'http://site.ru/api/';
$sendSpot($url, $request);
   }

function sendSpot($url, $data) {
             $ch = curl_init();
             curl_setopt($ch, CURLOPT_URL, $url);
             curl_setopt($ch, CURLOPT_FAILONERROR, 1);
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
             curl_setopt($ch, CURLOPT_TIMEOUT, 7);
             curl_setopt($ch, CURLOPT_POST, 1);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

             $result = curl_exec($ch);

             curl_close($ch);

             return $result;
            }
« Последнее редактирование: 06.10.2016, 14:51:06 от makslm »
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Нужна помощь в написании модуля
« Ответ #1 : 04.10.2016, 11:09:23 »
Так а в чем конкретно помочь? Откуда мы знаем, что там за API, в каком формате они принимают данные.
Да и пароль вы собрались в открытом виде передавать или в виде хеша (что для стороннего сайта будет бессмысленно)?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании модуля
« Ответ #2 : 04.10.2016, 11:16:16 »
/api?key=[your_key]&first_name=ttt&last_name=dd&email_address=daacsda@dsaa.com
данные передаются в таком виде, нужно выполнить такой запрос и данные запишутся.. необходима отправка только серверно, что б не видно было в адресной строке
« Последнее редактирование: 06.10.2016, 14:51:44 от makslm »
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Нужна помощь в написании модуля
« Ответ #3 : 04.10.2016, 11:19:18 »
Я бы сделал переход по сформированной ссылке с указанными параметрами через AJAX в момент выполнения скрипта
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании модуля
« Ответ #4 : 04.10.2016, 11:21:54 »
Я бы сделал переход по сформированной ссылке с указанными параметрами через AJAX в момент выполнения скрипта
это будет на стороне клиента, и он должен остатся на сайте, а данные уйти
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Нужна помощь в написании модуля
« Ответ #5 : 04.10.2016, 11:46:16 »
это будет на стороне клиента, и он должен остатся на сайте, а данные уйти
ну так я про то и говорю, запрос уйдет, мы остаемся на сайте клиента, еще если тот сайт дает ответ на полученные данные можно сказать клиенту о результатах обработки
Код: javascript
$.ajax({
        type: 'POST',
        url: 'http://site.com/back.php/affiliate/externalSorce/api?key=[your_key]&method=createLead&first_name=ttt&last_name=dd&email_address=daacsda@dsaa.com',
        data: '',
        cache: false,
        success: function(response){
          alert(response);
        }
});
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Нужна помощь в написании модуля
« Ответ #6 : 04.10.2016, 12:06:55 »
А причем тут вообще модуль? если тут плагин нужен. Что такое $isNew
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании модуля
« Ответ #7 : 04.10.2016, 12:09:33 »
ну так я про то и говорю, запрос уйдет, мы остаемся на сайте клиента, еще если тот сайт дает ответ на полученные данные можно сказать клиенту о результатах обработки
Код: javascript
$.ajax({
        type: 'POST',
        url: 'http://site.com/back.php/affiliate/externalSorce/api?key=[your_key]&method=createLead&first_name=ttt&last_name=dd&email_address=daacsda@dsaa.com',
        data: '',
        cache: false,
        success: function(response){
          alert(response);
        }
});

по идеи подходит, а как скрыть ключ что б скрипте не видно было?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Нужна помощь в написании модуля
« Ответ #8 : 04.10.2016, 12:21:52 »
а как скрыть ключ что б скрипте не видно было?
в данном случае никак
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании модуля
« Ответ #9 : 04.10.2016, 12:30:51 »
А причем тут вообще модуль? если тут плагин нужен. Что такое $isNew
верно подметили.. смешал все в кучу, необходим плагин..

function onUserAfterSave( $data, $isNew, $result, $error ){
if($isNew){$user = JFactory::getUser();
   $first_name = $user->name;
   $email_address = $user->email;
   $phone = $user->phone;}
}
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Нужна помощь в написании плагина
« Ответ #10 : 04.10.2016, 13:53:08 »
Если мне память не из
верно подметили.. смешал все в кучу, необходим плагин..

function onUserAfterSave( $data, $isNew, $result, $error ){
if($isNew){$user = JFactory::getUser();
   $first_name = $user->name;
   $email_address = $user->email;
   $phone = $user->phone;}
}
В первых в плагине $user = JFactory::getUser(); вы получие юзера которых сохранял, а учитывая isNew Получитите либо админа либо гостя. Далее стандартная функция выглядит так
Код: php
public function onUserAfterSave($user, $isnew, $success, $msg)
А данные пользователя получаться так
Код: php
   $first_name = $user['name'];
   $email_address = $user['email'];
насчет телефона хз.
Далее помино "проверки" isNew проверяйте  $success

Теперь работа с api
Во превых дайте ссылку на документацию api ни кто тут от вас не просит писать на форуме секретный ключ.
Во вторых у всех человеческих сервисов с api есть примеры реализации на php.
В третьих.
У любого сервиса есть защиты от спама, лимит и т.д. Поэтому вам надо исключить запросы к api от ботов (можете считать что ваш сайт мега защищен от реги ботов, но все равно доп. проверка не помешает). Как вариант завести таблицу где будут хранится email или другой идентификатор уже отправленных данных. К примеру если вы удалите юзера, то email можно использовать повторно, а если хранить в данные в топ таблице, хоть она прибавит веса, но зато будет защита и сервис вас не заблокирует. Про подобные защиты пишут все сервисы и сайты предоставляющие апи. Ваша обязанность контролировать сколько и какие запросы вы отправляете.
Закончили с проверкой переходим к отправке.
Материалов по данной теме тьма, пользуйтесь поиском. Зависит от того что вы получить к примеру можно использовать file_get_contents() а для формирования параметров запроса http_build_query()

Это максимум чем можно помочь. Если только не писать весь код за вас.

P.S судя знаний php у вас явно маловато *(без обид). Обратитесь в коммерческий раздел или хотя бы возьмите за основу тот же дефолтный contactcreator
« Последнее редактирование: 04.10.2016, 14:16:13 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании плагина
« Ответ #11 : 05.10.2016, 14:35:06 »
Цитировать
<?php
defined('_JEXEC') or die;
class PlgUserNewLead extends JPlugin
{
   protected $autoloadLanguage = true;
   public function onUserAfterSave($user, $isnew, $success, $msg)
   {
      if (!$success)
      {
         return false;
      }
      if (!$isnew)
      {
         return false;
      }
      $user_id = (int) $user['id'];
      if (empty($user_id))
      {
         return false;
      }
      if ($isNew) {
         $first_name = $user['username']
         $email_address = $user['email'];
         }
         
      if( $curl = curl_init() ) {
      curl_setopt($curl, CURLOPT_URL, 'http://site.ru/api?key=xxx&method=createLead&first_name='$first_name'&last_name=last_name&email_address='$email_address');
      $out = curl_exec($curl);
      echo $out;
      curl_close($curl);
   }
Должно работать?  !
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Нужна помощь в написании плагина
« Ответ #12 : 05.10.2016, 14:40:39 »
Должно работать?  !
В логике промхнулся.  if ($isNew) надо не на данные пользователя, а на отправку
« Последнее редактирование: 05.10.2016, 14:58:41 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании плагина
« Ответ #13 : 06.10.2016, 09:56:08 »
Вроди как разобрался с этим, установил плагин...
....
if ($isNew) {
         $file = file_get_contents('site.ru');
   }
При получении данных с site.ru, на site.ru я это увижу..

Не работает( Его нужно дополнительно подключать в регистрации?
Если да, можно пример пожалуйста?
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Нужна помощь в написании плагина
« Ответ #14 : 06.10.2016, 10:45:15 »
Вроди как разобрался с этим, установил плагин...
....
if ($isNew) {
         $file = file_get_contents('site.ru');
   }
При получении данных с site.ru, на site.ru я это увижу..

Не работает( Его нужно дополнительно подключать в регистрации?
Если да, можно пример пожалуйста?

Поймите если вы хотите чтобы вам помогли с апи то нужна ссылка на документацию этого апи. А лучше всего в коммерческий раздел
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании плагина
« Ответ #15 : 06.10.2016, 10:50:47 »
вопрос с апи сейчас не актуален
 $file = file_get_contents('site.ru'); работает, проверял отдельно созданным файлом..

код плагина упростил.. что б сразу отправка была при if new

я должен сам научится и понять)
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании плагина
« Ответ #16 : 06.10.2016, 15:48:06 »
 ! HELP даже так не работает(
Цитировать
<?
class plgUserNewlead extends JPlugin {
function onUserAfterSave ($user, $isnew)
   {
         
      if ($isnew)
         {
      $fp = fopen("11.txt", "a");

fwrite($fp, "123123123123213"."\r\n");

fclose($fp);
         }
   }

Для теста создал файл 1.php
<?php
$fp = fopen("11.txt", "a");
fwrite($fp, "123123123123213"."\r\n");
fclose($fp);
?>
- работает, записало цифры в файл
}
« Последнее редактирование: 06.10.2016, 15:56:43 от makslm »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод отладочной информации системного плагина

Автор effrit

Ответов: 23
Просмотров: 1017
Последний ответ 02.10.2018, 10:24:46
от effrit
Объясните как работает MVC Override с помощью плагина Joomla!

Автор kens1n

Ответов: 8
Просмотров: 1631
Последний ответ 09.10.2016, 11:00:25
от robert
Нужна помощь по PHP

Автор pahtab

Ответов: 2
Просмотров: 1207
Последний ответ 26.03.2016, 08:12:43
от b2z
Продолжая тему разработки контент плагина, сорянчик))

Автор IvanTopor

Ответов: 7
Просмотров: 971
Последний ответ 26.02.2016, 16:27:18
от b2z
[Решено] Создание контент плагина

Автор IvanTopor

Ответов: 4
Просмотров: 1246
Последний ответ 26.02.2016, 13:10:37
от IvanTopor