Ошибка смс-активатора

Если вы обнаружили какие либо ошибки, недочеты и неудобства или другие незачеты в программе напишите нам об этом на этом форуме - мы бум исправлять
Ответить
Хозяин Гугла
Сообщения: 42
Зарегистрирован: 19 июн 2019, 19:59

Ошибка смс-активатора

Сообщение Хозяин Гугла » 13 июл 2019, 22:26

Когда приходит смсочка от sms-activate по апи и скрипт собирается сделать

Код: Выделить всё

$sms=trim($smsactivate->code);
$keyboard->send_input("$sms",10);

начинает самовольно открываться и сбивать фокус со страницы:
C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php

Такое появляется в debug

Код: Выделить всё

Notice: Undefined offset: 2 in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php on line 122

Fatal error: Uncaught Error: Call to undefined function debug_mess() in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php:127
Stack trace:
#0 C:\XWeb\Human Emulator Studio Single 7.0.36\My Scripts\31.php(63): XHEBaseSMS->get_code(900)
#1 {main}
thrown in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php on line 127
PHP Notice: Undefined offset: 2 in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php on line 122
PHP Fatal error: Uncaught Error: Call to undefined function debug_mess() in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php:127
Stack trace:
#0 C:\XWeb\Human Emulator Studio Single 7.0.36\My Scripts\31.php(63): XHEBaseSMS->get_code(900)
#1 {main}
thrown in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php on line 127
Как бы мне это устранить? Или я чего то принципиально не понял с этим апи и сам ломаю все?

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Ошибка смс-активатора

Сообщение Support » 14 июл 2019, 00:21

По поводу ошибки:
Notice: Undefined offset: 2 in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php on line 122

122 строка в файле xhe_base_sms.php это
// разбираем полученные данные
list($state_acc, $text, $code)=explode(':',$this->answer); 

просто похоже что в вашем смс нет : поэтому и появляется ошибка, что не может разобрать.

но при этом дальше скрипт попадает в эту часть кода, куда случайно попала не объявленная функция debug_mess
// если пришел номер телефона
        if($state_acc=="STATUS_OK")
        {
            debug_mess("$this->servis Получили код телефона ".$code.", вводим");
            $this->code=$code;
        }
достаточно заменить на echo и вы будете видеть в панели отладки ответ от смс сервиса помещённый в переменную $code
// если пришел номер телефона
        if($state_acc=="STATUS_OK")
        {
            echo "$this->servis Получили код телефона ".$code.", вводим<br>";
            $this->code=$code;
        }

Хозяин Гугла
Сообщения: 42
Зарегистрирован: 19 июн 2019, 19:59

Re: Ошибка смс-активатора

Сообщение Хозяин Гугла » 03 ноя 2019, 17:40

Прошу прощения за некромантию, но тогда я не разобрался и плюнул, а сейчас полон волевых намерений с вашей помощью покончить с этим :3

После замены debug_mess на echo,
аналогично,
выдает при получении смсочки

Код: Выделить всё

http://sms-activate.ru ???????µN€ : 996779649225 id : 188196751
N??????±N‰?°?µ?? N?N‚?°N‚N?N? ?°??N‚?????°N†???? c http://sms-activate.ru
http://sms-activate.ru ????N‚????????N?N‚N? ???????µN€?° ??????N‚???µN€?¶???µ???° ??N‚???µN‚ ??N‚ N??µN€???µN€?° ACCESS_READY
?Y???»N?N‡??N‚N? N???N? ?????? N? N‚?µ?»?µN„?????° 996779649225
?–???µ?? N???N? N‚?µ?»?µN„?????°.. http://sms-activate.ru ??N‚???µN‚ ??N‚ N??µN€???µN€?° STATUS_WAIT_CODE
?–???µ?? N???N? N‚?µ?»?µN„?????°.. http://sms-activate.ru ??N‚???µN‚ ??N‚ N??µN€???µN€?° STATUS_WAIT_CODE
http://sms-activate.ru ?Y???»N?N‡???»?? ??N‚???µN‚ STATUS_OK:930217

Notice: Undefined offset: 2 in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php on line 122
http://sms-activate.ru ?Y???»N?N‡???»?? ?????? N‚?µ?»?µN„?????° , ????????????N??????±N‰?°?µ?? N?N‚?°N‚N?N? ?°??N‚?????°N†???? c http://sms-activate.ru
?z?????‘?s??: ?zN‚???µN‚ N??µN€N?????N??°ACCESS_ACTIVATION


Recoverable fatal error: Object of class XHECode could not be converted to string in C:\XWeb\Human Emulator Studio Single 7.0.36\My Scripts\33.php on line 53
PHP Notice: Undefined offset: 2 in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php on line 122
PHP Recoverable fatal error: Object of class XHECode could not be converted to string in C:\XWeb\Human Emulator Studio Single 7.0.36\My Scripts\33.php on line 53

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Ошибка смс-активатора

Сообщение Support » 04 ноя 2019, 00:35

вот эта строчка в вашем коде:
http://sms-activate.ru ?Y???»N?N‡???»?? ??N‚???µN‚ STATUS_OK:930217

говорит о том что пришел номер телефона

?z?????‘?s??: ?zN‚???µN‚ N??µN€N?????N??°ACCESS_ACTIVATION
это ответ сервиса - ACCESS_ACTIVATION - сервис успешно активирован.

а далее скрипт пытается получить сообщение из смс-ки, а так как текст видимо не содержит двух : то скрипт спотыкается на следующем PHP Notice: Undefined offset: 2 in C:\XWeb\Human Emulator Studio Single 7.0.36\Templates\Objects\xhe_base_sms.php on line 122:

в коде это выглядит так:
// разбираем полученные данные
list($state_acc, $text, $code)=explode(':',$this->answer);
что бы работало без ошибок надо заменить код выше на следующий код:
 
// разбираем полученные данные
if(substr_count($this->answer,":")==2)
{
    list($state_acc, $text, $code)=explode(':',$this->answer);
}
но тогда что бы получить текст сообщения вам в вашем скрипте нужно будет работать с переменной $answer а не с $code.

Хозяин Гугла
Сообщения: 42
Зарегистрирован: 19 июн 2019, 19:59

Re: Ошибка смс-активатора

Сообщение Хозяин Гугла » 04 ноя 2019, 08:37

я заменил строчку выше, но
после попытки вывода $answer в echo выскакивает

Код: Выделить всё

Notice: Undefined variable: answer in C:\XWeb\Human Emulator Studio Single 7.0.42\My Scripts\0.php on line 67
вот мой текущий xhe_base_sms.php

Код: Выделить всё

<?php

class XHEBaseSMS
{
    // сервис
    var $servis;
    // ключ сервиса
    var $api_key;
    // id операции 
    var $id;
    // номер телефона
    var $number;
    // статус активации
    var $status;
    // РєРѕРґ
    var $code;
    // код ответа
    var $answer;
    // реф код для программы для сервиса
    var $ref;

    function __construct($api='',$servis='http://sms-activate.ru',$ref='humanemulator') 
    {
      $this->api_key = $api;
      $this->servis = $servis;
      $this->ref = $ref;
    } 

    // изменить сервис
    function change_service($api,$servis,$ref)
    {
      $this->api_key = $api;
      $this->servis = $servis;
      $this->ref = $ref;

      if($servis=='http://sms-activate.ru')
         $this->ref = 'humanemulator';
      else if($servis=='https://cheapsms.ru')
         $this->ref = 'humanem';
      else if($servis=='https://5sim.net')
         $this->ref = 'ze7luo';
    }

    // запрос количества доступных номеров:
    function get_numbers_status($country=0, $operator='any')
    {
      $str_url = $this->servis."/stubs/handler_api.php?api_key=$this->api_key&action=getNumbersStatus&country=$country&operator=$operator";
      $this->answer = file_get_contents($str_url);  

      //$obj=json_decode($this->answer);
      return $this->answer;
    }

    // получить балланас
    function  get_balance()
    {
        $str_url = $this->servis."/stubs/handler_api.php?api_key=".$this->api_key."&action=getBalance";
        $this->answer = file_get_contents($str_url);  
        
        if(strpos($this->answer,"ACCESS_BALANCE")!==false)
        {
            $arr = explode(':',$this->answer);
            return trim($arr[1]); 
        }

        return $this->answer;
    }
   
    // получить номер телефона   
    function get_phone_number($service='ot',$operator='any',$country='0')
    { 
        $str_url = $this->servis."/stubs/handler_api.php?api_key=".$this->api_key."&action=getNumber&service=$service&operator=$operator&country=$country&ref=".$this->ref;
        $this->answer = file_get_contents($str_url);  
        
       if(strpos($this->answer,'ACCESS_NUMBER')===false)
        {
          echo("ОШИБКА: $this->servis ответ $this->answer<br>");
          return false;
        }
        $arr_phone = explode(':',$this->answer);
        
        $this->id = trim($arr_phone[1]);
        $this->number = trim($arr_phone[2]);

        echo("$this->servis номер : $this->number id :  $this->id<br>");  
  
        return true;
    }

    // получить смс с кодом 
    function get_code($wt=10)
    {
        echo("Получить смс код с телефона $this->number<br>");
        $this->answer=trim(file_get_contents($this->servis."/stubs/handler_api.php?api_key=".$this->api_key."&action=getStatus&id=".$this->id));

        for($i=0;$i<$wt;$i++)
        {
            if($this->answer!="STATUS_WAIT_CODE") break;

            if($this->answer=="STATUS_WAIT_CODE")
            {
                echo("Ждем смс телефона.. $this->servis ответ от сервера $this->answer<br>");
                sleep(10);
                $this->answer=file_get_contents($this->servis."/stubs/handler_api.php?api_key=".$this->api_key."&action=getStatus&id=".$this->id);
            }
        }
        // контрольный
        if($this->answer=="STATUS_WAIT_CODE")
        {
            echo("$this->servis Контрольная проверка на ожидание ..<br>");
            sleep(10);
            $this->answer=file_get_contents($this->servis."/stubs/handler_api.php?api_key=".$this->api_key."&action=getStatus&id=".$this->id);
            if($this->answer=="STATUS_WAIT_CODE")
            { 
                echo("Слишком долго ждем смс. $this->servis ответ от сервера $this->answer<br>");
                return false;
            }
        }
    
        echo("$this->servis Получили ответ $this->answer<br>");
        // разбираем полученные данные
// разбираем полученные данные
if(substr_count($this->answer,":")==2)
{
    list($state_acc, $text, $code)=explode(':',$this->answer);
}
        // если пришел номер телефона
        if($state_acc=="STATUS_OK")
        {
            echo("$this->servis Получили код телефона ".$code.", вводим");
            $this->code=$code;
        }
        else
        {
            echo("$this->servis. Ответ ".$this->answer."<br>");
            return false;
        } 
         
        return true;

    }
    /*
        -1 - отменить активацию
        1 - сообщить о готовности номера (смс на номер отправлено)
        3 - запросить еще один код (бесплатно)
        6 - завершить активацию(если был статус "код получен" - помечает успешно и завершает, если был "подготовка" - удаляет и помечает ошибка, если был статус "ожидает повтора" - переводит активацию в ожидание смс)
        8 - сообщить о том, что номер использован и отменить активацию

        Ответы сервиса:
        ACCESS_READY - готовность номера подтверждена
        ACCESS_RETRY_GET - ожидание нового смс
        ACCESS_ACTIVATION - сервис успешно активирован
        ACCESS_CANCEL - активация отменена
    */
    // сообщить статус активации
    function set_status($status=6)
    {
        echo("сообщаем статус активации c $this->servis<br>");

        $this->answer =file_get_contents($this->servis."/stubs/handler_api.php?api_key=$this->api_key&action=setStatus&status=$status&id=$this->id");

        // разбираем полученные данные
        //list($state_acc, $code)=explode(':',$this->answer);

        // если пришел номер телефона
        if($this->answer=="ACCESS_READY")
        {
            echo("$this->servis готовность номера подтверждена ответ от сервера $this->answer<br>");
        }
        else
        {
            echo("ОШИБКА: Ответ серсвиса".$this->answer."<br>");
            return false;
        } 

        return true;
    }
}
?>

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Ошибка смс-активатора

Сообщение Support » 04 ноя 2019, 16:03

Вот пример работы с базовым классом через $smsactivate
// задаём ключ апи сервиса
$smsactivate->api_key = '3161df9b1fe1ccb8cfd7dA91db765de8';

// получить номер телефона
if(!$smsactivate->get_phone_number('ot'))
{
    while($smsactivate->answer=="NO_NUMBERS")
    {
        $smsactivate->get_phone_number('ot');
        sleep(10);
    }
     
    if(strpos($smsactivate->answer,'ACCESS_NUMBER')===false)
    {
       echo("ответ $smsactivate->servis серваса $smsactivate->answer<br>");
       $app->quit();
    }
}

// смс отправлен
$smsactivate->set_status(1);
// полученный номер телефона
echo $phone= trim($smsactivate->number);
echo "<br>";

/*тут использование номера в форме регистрации 
после чего на телефон отправляется смс
*/

// ожидание *10 в секундах
$wt_wait=7;
// получить код из смс
if(!$smsactivate->get_code($wt_wait))
{
    echo("ОШИБКА: $smsactivate->answer не смогли получить код из СМС-сообщения");
    
    // сообщаем сервису что освобождаем номер
    $smsactivate->set_status(8); 
}
else // при необходимости поправить разбор текста смс, если код будет не верно разбираться из него
{
    // сообщаем сервису что всё ok
    $smsactivate->set_status(); 
    // ответ сервиса
    echo trim($smsactivate->answer).'<br>';
}

// конец
echo "<hr><br>";


для того что бы получить доступ к ответу от сервера с ним надо работать вот так $smsactivate->answer то есть через $smsactivate

Хозяин Гугла
Сообщения: 42
Зарегистрирован: 19 июн 2019, 19:59

Re: Ошибка смс-активатора

Сообщение Хозяин Гугла » 05 ноя 2019, 01:52

При попытке $keyboard->send_input("$smsactivate->answer",10);
выскакивает:

Код: Выделить всё

smsactivate->0.php
http://sms-activate.ru iiia? : 48506903154 id : 
niiauaai noaoon aeoeaaoee c http://sms-activate.ru
http://sms-activate.ru aioiaiinou iiia?a iiaoaa??aaia ioaao io na?aa?a ACCESS_READY
48506903154
Iieo?eou nin eia n oaeaoiia 48506903154
?aai nin oaeaoiia.. http://sms-activate.ru ioaao io na?aa?a STATUS_WAIT_CODE
?aai nin oaeaoiia.. http://sms-activate.ru ioaao io na?aa?a STATUS_WAIT_CODE
http://sms-activate.ru Iieo?eee ioaao STATUS_OK:621247

Notice: Undefined variable: state_acc in C:\XWeb\Human Emulator Studio Single 7.0.42\Templates\Objects\xhe_base_sms.php on line 127
http://sms-activate.ru. Ioaao STATUS_OK:621247
IOEAEA: STATUS_OK:621247 ia niiaee iieo?eou eia ec NIN-niiauaieyniiauaai noaoon aeoeaaoee c http://sms-activate.ru
IOEAEA: Ioaao na?naenaBAD_STATUS

PHP Notice: Undefined variable: state_acc in C:\XWeb\Human Emulator Studio Single 7.0.42\Templates\Objects\xhe_base_sms.php on line 127
в вывод вставляет 'BAD_STATUS', но в debug же сначало пишет код из смс STATUS_OK:621247
как мне вставить "621247" в $keyboard->send_input("???$smsactivate->answer???",10);
нипанятна

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Ошибка смс-активатора

Сообщение Support » 05 ноя 2019, 02:21

Попробуйте в файл шаблона заменить на следующий код, тогда по идее будет разбирать как надо и получать ваш ответ в переменную $code:

вот это:
// разбираем полученные данные
if(substr_count($this->answer,":")==2)
{
    list($state_acc, $text, $code)=explode(':',$this->answer);
}

заменить на это:

$state_acc="";
$text=""; 
$code="";

// разбираем полученные данные
if(substr_count($this->answer,":")==2)
{
    list($state_acc, $text, $code)=explode(':',$this->answer);
}
else if(substr_count($this->answer,":")==1)
{
    list($state_acc, $code)=explode(':',$this->answer);
}



Хозяин Гугла
Сообщения: 42
Зарегистрирован: 19 июн 2019, 19:59

Re: Ошибка смс-активатора

Сообщение Хозяин Гугла » 05 ноя 2019, 02:38

не, пробовал призывать и $smsactivate->code и $code
пишет одно и тоже:

Код: Выделить всё

smsactivate->0.php
http://sms-activate.ru iiia? : 48572530905 id : 188617847
niiauaai noaoon aeoeaaoee c http://sms-activate.ru
http://sms-activate.ru aioiaiinou iiia?a iiaoaa??aaia ioaao io na?aa?a ACCESS_READY
48572530905
Iieo?eou nin eia n oaeaoiia 48572530905
?aai nin oaeaoiia.. http://sms-activate.ru ioaao io na?aa?a STATUS_WAIT_CODE
?aai nin oaeaoiia.. http://sms-activate.ru ioaao io na?aa?a STATUS_WAIT_CODE
?aai nin oaeaoiia.. http://sms-activate.ru ioaao io na?aa?a STATUS_WAIT_CODE
?aai nin oaeaoiia.. http://sms-activate.ru ioaao io na?aa?a STATUS_WAIT_CODE
?aai nin oaeaoiia.. http://sms-activate.ru ioaao io na?aa?a STATUS_WAIT_CODE
?aai nin oaeaoiia.. http://sms-activate.ru ioaao io na?aa?a STATUS_WAIT_CODE
http://sms-activate.ru Iieo?eee ioaao STATUS_OK:531918

Fatal error: Uncaught Error: Call to undefined function debug_mess() in C:\XWeb\Human Emulator Studio Single 7.0.42\Templates\Objects\xhe_base_sms.php:137
Stack trace:
#0 C:\XWeb\Human Emulator Studio Single 7.0.42\My Scripts\0.php(47): XHEBaseSMS->get_code(7)
#1 {main}
thrown in C:\XWeb\Human Emulator Studio Single 7.0.42\Templates\Objects\xhe_base_sms.php on line 137
PHP Fatal error: Uncaught Error: Call to undefined function debug_mess() in C:\XWeb\Human Emulator Studio Single 7.0.42\Templates\Objects\xhe_base_sms.php:137
Stack trace:
#0 C:\XWeb\Human Emulator Studio Single 7.0.42\My Scripts\0.php(47): XHEBaseSMS->get_code(7)
#1 {main}
thrown in C:\XWeb\Human Emulator Studio Single 7.0.42\Templates\Objects\xhe_base_sms.php on line 137

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Ошибка смс-активатора

Сообщение Support » 05 ноя 2019, 03:00

а можете прислать код вашего скрипта на почту саппорта: sales@webemulator.com ?

проверим у себя и вышлем вам рабочий код.

Хозяин Гугла
Сообщения: 42
Зарегистрирован: 19 июн 2019, 19:59

Re: Ошибка смс-активатора

Сообщение Хозяин Гугла » 05 ноя 2019, 03:36

отправил шаблон чего примерно хочу, но там клики мышкой по формам - будет промахиваться.
номер телефона вставляет, а смс-ку так и не отлавливает, не code, не answer

в этом месте нужно смс пропечатать
//clik enter verif code
$keyboard->send_input("$smsactivate->code",10);

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Ошибка смс-активатора

Сообщение Support » 05 ноя 2019, 18:06

Хозяин Гугла писал(а):
05 ноя 2019, 03:36
отправил шаблон чего примерно хочу, но там клики мышкой по формам - будет промахиваться.
номер телефона вставляет, а смс-ку так и не отлавливает, не code, не answer

в этом месте нужно смс пропечатать
//clik enter verif code
$keyboard->send_input("$smsactivate->code",10);
Отправили вам рабочий код. Код получает, в нужное поле вводит.

Хозяин Гугла
Сообщения: 42
Зарегистрирован: 19 июн 2019, 19:59

Re: Ошибка смс-активатора

Сообщение Хозяин Гугла » 06 ноя 2019, 12:42

спасибо ;3

Ответить