Ответы пользователя по тегу HTML
  • Как на сайте отобразить MJPG поток, который требует digest авторизации?

    Anastasia2306
    @Anastasia2306
    PHP-разработчик.
    Это не будет работать в таком виде, потому что это на уровне браузера стоит защита от таких вот конструкций. Вы правильно указали, что без PHP тут не обойтись. Я бы как-то решила этот вопрос:

    <?php
    $url = 'http://192.168.1.8/cgi-bin/mjpg/video.cgi?channel=1&subtype=1';
    
    // Функция для digest-авторизации
    function digest_parse($txt)
    {
        $needed_parts = array('nonce'=>1, 'realm'=>1, 'qop'=>1);
        $data = array();
        $keys = implode('|', array_keys($needed_parts));
    
        preg_match_all('@('.$keys.')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $matches, PREG_SET_ORDER);
    
        foreach ($matches as $m) {
            $data[$m[1]] = $m[3] ? $m[3] : $m[4];
            unset($needed_parts[$m[1]]);
        }
    
        return $needed_parts ? false : $data;
    }
    
    // Инициализация cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    
    // получения заголовков www-Authenticate
    $response = curl_exec($ch);
    
    // разбор заголовк а WWW-Authenticate
    if (preg_match('/^WWW-Authenticate: Digest (.*)$/im', $response, $matches)) {
        $digest_parts = digest_parse($matches[1]);
    
        // Создание заголовка Authorization
        // Здесь также надо сгенерить правильный ответ на основе полученных данных и вашего логина и пароля
        // наподобие этого
        $digest_response = ''; // ответ
    
        // Установка опций для cURL с заголовком Authorization
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Digest username="adminka", realm="'.$digest_parts['realm'].'", nonce="'.$digest_parts['nonce'].'", uri="/cgi-bin/mjpg/video.cgi?channel=1&subtype=1", response="'.$digest_response.'", qop='.$digest_parts['qop'].', nc=00000001, cnonce="d41d8cd98f00b204e9800998ecf8427e"'));
    }
    
    // Удаление предыдущих заголовков
    curl_setopt($ch, CURLOPT_HEADER, 0);
    
    // Передача потока клиенту
    curl_exec($ch);
    curl_close($ch);
    ?>


    Ну а потом уже смело в теге img можно сделать так:
    <img src="вашскрипт.php" width="720" height="480">

    Пример с PHP кодом не полный - я лишь натолкнула вас на мысль, как это может работать. Удачи!
    Ответ написан
    1 комментарий
  • Как ограничить доступ к странице сайта на устройстве пк браузеров?

    Anastasia2306
    @Anastasia2306
    PHP-разработчик.
    Один из способов определения мобильного устройства является глобальный массив $_SERVER. Нас интересует $_SERVER[‘HTTP_USER_AGENT’]:

    function check_mobile_device() { 
    	$mobile_agent_array = array('ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
    	$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
    	foreach ($mobile_agent_array as $value) {
    		if (strpos($agent, $value) !== false) return true;
    	}
    	return false;
    }


    Используем так:

    if (check_mobile_device()) {...}
    Ответ написан
    2 комментария
  • Как сохранять высоту textarea при вводе?

    Anastasia2306
    @Anastasia2306
    PHP-разработчик.
    Попробуйте так

    <textarea id="myTextarea" oninput="autoResize()"></textarea>


    <script>
    function autoResize() {
          const textarea = document.getElementById('myTextarea');
          textarea.style.height = '';
          textarea.style.height = textarea.scrollHeight + 'px';
    }
    </script>
    Ответ написан
  • Как оформлять телефоны на странице?

    Anastasia2306
    @Anastasia2306
    PHP-разработчик.
    Если сайт на PHP, то проверяйте устройство пользователя и выводите соответствующую ссылку.

    <?php if($devise_type == 'pk') { echo '<span>+7-123-456-78-90</span>'; } ?>
    <?php if($devise_type == 'smartphone') { echo '<a href = "tel:+7-123-456-78-90">+7-123-456-78-90</a>'; } ?>
    Ответ написан
    Комментировать