Ответы пользователя по тегу PHP
  • Как преобразовать дату July 19, 2021 08:10 PM в Y-m-d H:i?

    @easycode
    не боюсь задавать глупые вопросы ))
    так пробовали?
    <?php
    $input = 'July 19, 2021 08:10 PM';
    echo date('Y-m-d H:i', strtotime($input));
    Ответ написан
  • Наложить отформатированный текст на PNG?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    нашел и применил готовое решение: https://github.com/stil/gd-text
    Ответ написан
    Комментировать
  • Почему не отправляется письмо на почту?

    @easycode
    не боюсь задавать глупые вопросы ))
    Может не мучится и сразу заюзать какой-нибудь phpMailer или swiftMailer с отправкой письма через реальный почтовый сервер по протоколу SMTP ? - так и меньше проблем с попаданием письма в СПАМ будет!

    p.s.: код отправки письма лучше вынести в отдельную функцию или метод класса ( не знаю Вашего контекста ) - а то сразу глаза режет:
    if (mail(strtolower($data["reg_mail"]), "Подтвердите Email на PLUMBEAR", $message, $headers)) {
                include Base::PathTPL("header");
          include Base::PathTPL("auth/email");
          include Base::PathTPL("footer");
            }

    жесткий замес )))
    Ответ написан
    Комментировать
  • Как передать содержимое в переменную PHP?

    @easycode
    не боюсь задавать глупые вопросы ))
    ну типа:
    <div id="list"></div>
    
    <script type="text/javascript">
      jQuery(document).ready(function($) {
        jQuery.post('index.php', 'list': jQuery('#list').html(), function(data, textStatus, xhr) {
          /*optional stuff to do after success */
        });
      });
    </script>


    на стороне сервера:
    <?php
    #index.php
    echo $_POST['list']; // содержимое div-а с id = list
    Ответ написан
    Комментировать
  • Как сделать такой же код в php?

    @easycode
    не боюсь задавать глупые вопросы ))
    На скорую руку - не проверял корректность - но примерно так:

    <?php 
    
    function Encrypt($theText) {
      $output = '';
      $Temp = [];
      $Temp2 = [];
      $TextSize = strlen($theText);
      for ($i = 0; i < $TextSize; $i++) {
        $rnd = round(mt_rand * 122) + 20;
        $Temp[$i] = ord($theText{$i}) + $rnd;
        $Temp2[$i] = $rnd;
      }
      for ($i = 0; $i < $TextSize; $i++) {
        $output += chr($Temp[$i]) . chr($Temp2[$i]);
      }
      return output;
    }
    
    function unEncrypt($theText) {
      $output = '';
      $Temp = [];
      $Temp2 = [];
      $TextSize = strlen($theText);
      for ($i = 0; $i < $TextSize; $i++) {
        $Temp[$i] = ord($theText{$i});
        $next = $i + 1;
        $Temp2[$i] = ord($theText{$next});
      }
      for ($i = 0; $i < $TextSize; $i=$i+2) {
        $output .= chr($Temp[$i] - $Temp2[$i]);
      }
      return $output;
    }
    Ответ написан
  • Как узнать было ли такое в массиве?

    @easycode
    не боюсь задавать глупые вопросы ))
    1) перебор элементов массива с сравнением:
    foreach ($json['result'] as $_item) {
     if ($_item['received']['from'] == 'USERNAME1' and $_item['received']['AMOUNT'] == '12345678')


    2) вариант за которой могут расстрелять )))
    if ( preg_match('|"from":"USERNAME1",\s"AMOUNT":12345678,|is', $json, $match) )
    Ответ написан
    Комментировать
  • Как после нажатия кнопок в сообщении от Telegram-Bot'а скрыть их?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Разобрался и вот небольшой примерчик (вырезка):

    $telegram = new Telegram\Bot\Api('XXXXXXXXXXXXXXXXXXXX');
    $update = $this->telegram->getWebhookUpdates();
    $update = json_decode($this->update, true);
    
    $keyboard = Keyboard::make()->inline()->row(Keyboard::inlineButton(['text' => 'One more?','callback_data' => '/random']));
    
    $telegram->editMessageText([
        'chat_id' => $update['callback_query']['message']['chat']['id'],
        'message_id' => $update['callback_query']['message']['message_id'],
        'text' => 'Ответочка',
        'reply_markup' => $keyboard,
        'parse_mode' => 'markdown',
    ]);
    Ответ написан
    Комментировать
  • Как правильно передать callback в telegram-bot?

    @easycode
    не боюсь задавать глупые вопросы ))
    Понимаю, что уже не актуально, но вот совсем недавно нужно было писать еще одного бота на этой же библиотеке. Я воспользовался своим старым "скелетом":

    require_once( dirname(__FILE__) . '/vendor/autoload.php');
    
    use Telegram\Bot\Commands\Command;
    use Telegram\Bot\Keyboard\Keyboard;
    
    class TelegaBot {
    
        public $chat = array();
    
        public $chat_id;
    
        public $message;
    
        public $telegram;
    
        public $lastCommand = '';
    
        public $text;
    
        public $reply;
        
        public $keyboard = array();
    
    function __construct()
        {
    $this->telegram = new Telegram\Bot\Api('XXXXXXXXXXXXXXXXXXXXX');
    
    $this->update = $this->telegram->getWebhookUpdates();
    
    if ( isset($this->update['callback_query'])) {
        $this->message = $this->update['callback_query'];
    } else {
        $this->message = $this->update;
    }
    
    $this->chat_id = $this->message['message']['chat']['id'];
    
    $this->text = $this->message["message"]["text"];
    
    if ($this->chat_id) {
    
        $this->chat['username'] = $this->message['message']['from']['username'];
        $this->chat['name'] = $this->message['message']['from']['first_name'];
    
        // если передается команда, то запоминаем её
        if ( preg_match('|/([a-z0-9_]{3,})|is', $this->text, $buff) and trim($buff[1]) != '') {
            $this->lastCommand = $buff[1];
        }
    
        // ловин нажатие по кнопке:
        if (isset($this->update['callback_query'])) {
            if ($this->message['data']) {
                $this->lastCommand = $this->message['data'];
            }
        }
    }
    
    if ($this->lastCommand) {
        $method = 'cmd_' . $this->lastCommand;
        if (method_exists('TGBot', $method)) {
            call_user_func(array($this, $method));       
        } else {
            $this->reply = "Что-то не припомню такой команды :=)\n\nПожалуйста, пользуйтесь кнопками в моих сообщениях или если вдруг чувствуете, что я начал подглюкивать сообщите об этом моему разработчику...";
        }
    }
    
    
    private function cmd_start()
    {
        $this->keyboard = [
            [
                Keyboard::inlineButton(['text' => 'Кнопка 1', 'callback_data' => 'button1']),
                Keyboard::inlineButton(['text' => 'Кнопка 2', 'callback_data' => 'button2'])
            ]
        ];
        return $this->sendMessage();
    
    }
    
    public function cmd_button1()
    {
        // функционал реакции бота на нажатия кнопки 1
    }
    
    
    public function sendMessage()
    {
        $data = array(
            'chat_id' => chat_id,
            'text' => $this->reply,
        );
        if (count($this->keyboard) and is_array($this->keyboard)) {
            $data['reply_markup'] = $this->telegram->replyKeyboardMarkup([ 
                'inline_keyboard' => $this->keyboard, 
                'resize_keyboard' => true, 
                'one_time_keyboard' => true, 
            ]);
        }
    
        $this->telegram->sendMessage($data);
    }


    весь код класса не привожу, но самое главное что в callback_query я не пишу слэши перед командами если заметили:
    Keyboard::inlineButton(['text' => 'Кнопка 1', 'callback_data' => 'button1']),


    мне так удобнее отличать команду от нажатия на кнопку ) хотя по сути это тоже команда )
    Ответ написан
    Комментировать
  • Не работает HTTP-аунтификация на HTTPS-сайте?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Так как на моём хостинг был: PHP FastCGI, то после того как я дописал в конец .htaccess строчку:

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]


    всё заработало как и должно было!
    Ответ написан
    Комментировать
  • 1С Бухгалтерия не создает счет при загрузке заказов с сайта?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    УРА! Разобрался.
    Для начала очень важная настройка:
    5e21e894323cf924871177.png
    по причине её у меня не загружались заказы в 1Ске, а далее я взял образец XML с сайта: https://www.cs-cart.ru/docs/4.3.x/developer/1c/ord... и он подошёл:

    5e21ea0f43aa2430708347.png

    <?xml version="1.0" encoding="utf-8"?>
    <КоммерческаяИнформация ВерсияСхемы="2.03" ДатаФормирования="2020-01-17">
    <Документ>
    	<Ид>108</Ид>
    	<Номер>108</Номер>
    	<Дата>2020-01-17</Дата>
    	<ХозОперация>Заказ товара</ХозОперация>
    	<Роль>Продавец</Роль>
    	<Валюта>руб</Валюта>
    	<Курс>1</Курс>
    	<Сумма>140.00</Сумма>
    	<Контрагенты>
    		<Контрагент>
    			<Ид>62E1BAD5-97D9-4A6D-AE51-51DBD6780837</Ид>
    			<Наименование>New New</Наименование>
    			<Роль>Покупатель</Роль>
    			<ПолноеНаименование>New New</ПолноеНаименование>
    			<Фамилия>New</Фамилия>
    			<Имя>New</Имя>
    			<АдресРегистрации>
    				<Представление>520111, Российская Федерация, Красноярск, Красная</Представление>
    				<АдресноеПоле>
    					<Тип>Почтовый индекс</Тип>
    					<Значение>520111</Значение>
    				</АдресноеПоле>
    				<Контакты>
    					<Контакт>
    						<Тип>Почта</Тип>
    						<Значение>new@test.test</Значение>
    					</Контакт>
    					<Контакт>
    						<Тип>Телефон</Тип>
    						<Значение>+79512111111</Значение>
    					</Контакт>
    				</Контакты>
    			</АдресРегистрации>
    			<Представители>
    				<Представитель>
    					<Контрагент>
    						<Отношение>Контактное лицо</Отношение>
    						<Ид>62E1BAD5-97D9-4A6D-AE51-51DBD6780837</Ид>
    						<Наименование>Покупатель</Наименование>
    					</Контрагент>
    				</Представитель>
    			</Представители>
    		</Контрагент>
    	</Контрагенты>
    	<Время>17:12:09</Время>
    	<Комментарий/>
    	<Товары>
    		<Товар>
    			<Ид>FF0AB9DD-D3B4-4AC6-9C54-2A4CE415000D</Ид>
    			<Наименование>Nike "Untouchable" Women's Tank Top</Наименование>
    			<БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница>
    			<ЦенаЗаЕдиницу>25.00</ЦенаЗаЕдиницу>
    			<Количество>1</Количество>
    			<Сумма>25</Сумма>
    			<ЗначенияРеквизитов>
    				<ЗначениеРеквизита>
    					<Наименование>ВидНоменклатуры</Наименование>
    					<Значение>Товар</Значение>
    				</ЗначениеРеквизита>
    				<ЗначениеРеквизита>
    					<Наименование>ТипНоменклатуры</Наименование>
    					<Значение>Товар</Значение>
    				</ЗначениеРеквизита>
    			</ЗначенияРеквизитов>
    		</Товар>
    	</Товары>
    	<ЗначенияРеквизитов>
    		<ЗначениеРеквизита>
    			<Наименование>Статус заказа</Наименование>
    			<Значение>Принят</Значение>
    		</ЗначениеРеквизита>
    		<ЗначениеРеквизита>
    			<Наименование>Метод оплаты</Наименование>
    			<Значение>Заказ по телефону</Значение>
    		</ЗначениеРеквизита>
    	</ЗначенияРеквизитов>
    </Документ>
    </КоммерческаяИнформация>
    Ответ написан
    9 комментариев
  • Как настроить синхронизацию своего php-скрипта с 1С Бухгалтерия?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Ответ написан
    Комментировать
  • Как передавать параметры при вызове команды через Plesk REST API?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Оказалось всё просто:

    var_dump( setRequest(
    	'https://XXX.XXX.XXX.XXX:8443/api/v2/cli/autoresponder/call',
    	array(
    		'X-API-Key: c1986243-c4b7-0fc3-d543-67u9ad3a000a',
    	), 
    	array(
    		'params'=> array(
    			'--update',
    			'-mail',
    			'administrator@mydomen.ru',
    			'-status',
    			'true',
    			'-subject',
    			'Re: this subject text',
    			'-text',
    			'This is text email message!',
    		),
    	)
    ) );


    Параметры пишутся как элементы массива по порядку - так как бы они шли в команде CLI, см. https://docs.plesk.com/en-US/onyx/cli-linux/using-...
    Ответ написан
    Комментировать
  • Как обработать нажатие на кнопку клавиатуры бота, созданном на Telegram Bot API - PHP SDK?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Как я понял в версии 2.2 этой библиотеки можно использовать только обычные текстовые кнопки без callback_data - для передачи которого нужно использовать inline кнопки.

    1) Нужно обновится до dev-версии, если через composer то вот так:
    composer require irazasyed/telegram-bot-sdk:dev-master

    2) Далее код несколько меняется:
    <?php
    
    use Telegram\Bot\Commands\Command;
    use Telegram\Bot\Keyboard\Keyboard;
    
    $telegram = new Telegram\Bot\Api('MY_KEY'); 
            
    $update = $telegram->getWebhookUpdates();
    
    // данные сообщения в зависимости от callback_query
    if ( isset($this->update['callback_query'])) {
        $message = $update['callback_query'];
    } else {
        $message = $update;
    }
    
    $chatId = $message['message']['chat']['id'];
    
    // правильно формируем клавиатуру:
    $keyboard = [
        [
            Keyboard::inlineButton(['callback_data'=>'/butt1','text'=>'Кнопка 1']),
            Keyboard::inlineButton(['callback_data'=>'/buut2','text'=>'Кнопка 2'])
        ]
    ];
    
    $reply_markup = $telegram->replyKeyboardMarkup([ 
        // 'keyboard' => $keyboard, // вместо этого используем:
        'inline_keyboard' => $keyboard,
        'resize_keyboard' => true, 
        'one_time_keyboard' => false 
    ]);
    
    
    // если нажали кнопку:
    if ( isset($this->update['callback_query'])) {
    	$telegram->sendMessage(array(
    	  'chat_id' => $chatId,
    	    'text' => "Вы нажали на кнопку с кодом: " . $message['data'], // именно в $message['data'] - будет то что прописано у нажатой кнопки в качестве callback_data
    	    'reply_markup' => $reply_markup,
    	));
    } else {
    	$telegram->sendMessage(array(
    	  'chat_id' => $chatId,
    	    'text' => 'Нажмите на одну из кнопок:',
    	    'reply_markup' => $reply_markup,
    	));
    }


    Может кому-нибудь еще пригодится )
    Ответ написан
    Комментировать
  • Получить фотографии из открытого Instagram-аккаунта без использования Access-токена возможно ли?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Оказалось что https://www.instagram.com/user/media/ - выдает в формате JSON ленту фоток user'а )
    $user = 'username';
    $url = "https://www.instagram.com/$user/media/";
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    $json = curl_exec($ch); 
    curl_close($ch);
    
    $result =  json_decode($json, true);
    
    if (count($result['items'])) {
        foreach ($result['items'] as $_item) {
            echo '<img src="' . $_item['images']['thumbnail']['url'] . '">';
        }
    }


    Получать более 20 фоток нужно будет большим кол-вом запросов, каждый раз вставляя в запрос ?max_id=ХХХХ - это id фотки полученной в последнем запросе.
    Ответ написан
    8 комментариев
  • Передача своих данных в HTTP-заголовках в ответ на Ajax-запрос - как?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    т.е. если я правильно понимаю я могу из PHP отправлять свой собственный HTTP-заголовок и спокойно его прочитать через getResponseHeader. Как лучше именовать свой заголовок? Есть какие-либо ограничения? Правила?
    Ответ написан
  • Как реализовать авторизацию в Phonegap-приложении?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Отвечаю сам, что не разумно конечно же:
    1. PhoneGap-приложения не поддерживают COOKIE
    2. Без поддержки COOKIE браузеру не где хранить session_id, потому привязка к PHP-сессии работать по умолчанию не будет как я описал.

    Остается думать о том, что с каждым AJAX-запросом надо передавать к примеру этот самый session_id
    Ответ написан
  • Как в PHP отделить HTTP-запросы из мобильного приложения PhoneGap от всех остальных?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Решение:

    Использовать в config.xml строку:
    <preference name="AppendUserAgent" value="Ваше добавочное значение" />


    ну а далее в PHP на сервере смотреть на наличие этого добавочного значение в $_SERVER['HTTP_USER_AGENT']
    Ответ написан
    Комментировать