JavaScript: удаление html тэгов из стороки

Задача: удалить из переменной все тэги вида <тэг>бла-бла</тэг>

Решение: воспользуемся регуляркой

txt="<a>Ссылка</a> А тут всё хорошо";
txt=txt.replace(/(<([^>]+)>)/ig, "");
console.log(txt)

Выведет в консоль только «А тут всё хорошо»

Отправка PUSH уведомлений в приложение Android из PHP

Для того чтобы отправлять пуш уведомления, необходимо получить ключ установки приложения и знать «ключ сервера». Более подробная информация в консоли Firebase

public function SendPushAndroid($server_key,$token,$title,$message){
        $data = json_encode([
            "to" => $token,
            "notification" => [
                "body" => $message,
                "title" => $title,
                "icon" => "ic_launcher"
            ]
        ]);

        $url = 'https://fcm.googleapis.com/fcm/send';
        $server_key = $server_key;
        $headers = array('Content-Type:application/json','Authorization:key='.$server_key);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $result = curl_exec($ch);
        var_dump($result);
        if ($result === FALSE) {
            die('Oops! FCM Send Error: ' . curl_error($ch));
        }
        curl_close($ch);        
    }    

Переход к следующему input полю при нажатии кнопки Enter

Задача: есть таблица, в каждой ячейке которой находится поле input. Необходимо чтобы после ввода данных в поле и нажатии Enter проиходил переход на следующую ячейку

Решение:

 $('body').on('keydown', 'input, select', function(e) {        
            if (e.key === "Enter") {
                var self = $(this), form = self.parents('table:eq(0)'), focusable, next;
                focusable = form.find('input,textarea').filter(':visible');
                next = focusable.eq(focusable.index(this)+1);
                if (typeof next!=undefined){
                    if (typeof next[0]!=undefined){
                        if (next[0].disabled==true){
                            next = focusable.eq(focusable.index(this)+3);    
                        };
                        if (next.length) next.focus();
                    };
                };
                return false;
            }
    });    

Outlook: добавляем столбец с секундами по мимо времени и даты

Задача: необходимо знать, не только время, но и точные секунды, когда было отправлено или получено письмо.

Решение: настроим новый вид отображения

Далее: Столбцы -> Создать толбец. Выбираем имя, тип и формат и формулу:

В отображаемые столбцы добавляем созданный столбец, и наслаждаемся

Bitrix: уязвимость CGI Generic HTML Injections

Уязвимость актуальна для версии v21.9 и ниже. Пока нет информации что исправлена!

Эксплуатация: при переходе по специально сформированной ссылке на сайт с битриксом, выводится произвольное содержимое и выполняется произвольный js код.

Проверка вшивости сайта:

https://ваш_сайт/catalog/?q=<"dqzsbr%20>

Исправление: самый простой способ, до исправления от битрикса — поправить .httaccess, добавив строчки:

   
    RewriteCond %{QUERY_STRING} "
    RewriteRule ^.*$ - [F]
    RewriteCond %{QUERY_STRING} %22
    RewriteRule ^.*$ - [F]
    RewriteCond %{QUERY_STRING} %3C
    RewriteRule ^.*$ - [F]
    #RewriteCond %{QUERY_STRING} \<
    RewriteCond %{QUERY_STRING} %27
    RewriteRule ^.*$ - [F]
    RewriteCond %{QUERY_STRING} %3E
    RewriteRule ^.*$ - [F]


1 74 75 76 77 78 310