И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
BAV_Lug
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
Непрочитанное сообщение
BAV_Lug » 2009-04-09 23:07:58
Собственно есть в сетке у меня камера которая умеет отдавать картинку по урлу вида
"http://адрес камеры/image.jpg"
Написал такой скрипт image.php
Код: Выделить всё
<?php
define('SOURCE', 'http://адрес камеры/image.jpg');
$source = imagecreatefromjpeg(SOURCE)
or die('Cannot jpg');
imagejpeg($source);
imagedestroy($source);
?>
Ну и некий html в котором используется картинка с камеры.
Все замечательно работает. Но вот понадобилось мне сделать на камере авторизацию по логину-паролю. Установил. Естественно скрипт стал не рабочий. Как из PHP эту авторизацию замутить?
BAV_Lug
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
zg
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Непрочитанное сообщение
zg » 2009-04-10 7:16:41
BAV_Lug писал(а):Как из PHP эту авторизацию замутить?
какую
эту? там поди Basic Authentication?
Если да, то вот вдержка из HTTP/1.1
Код: Выделить всё
11.1 Базовая схема установления подлинности (Basic Authentication
Scheme).
"Базовая" схема установления подлинности основана на том, что
агент пользователя должен доказывать свою подлинность при помощи
идентификатора пользователя (user-ID) и пароля (password) для
каждой области (realm). Значению области (realm) следует быть
непрозрачной (opaque) строкой, которую можно проверять только на
равенство с другими областями на этом сервере. Сервер обслужит
запрос, только если он может проверить правильность идентификатора
пользователя (user-ID) и пароля (password) для защищенной области
(protection space) запрошенного URI (Request-URI). Никаких
опциональных опознавательных параметров нет.
После получения запроса на URI, находящийся в защищаемой области
(protection space), сервер МОЖЕТ ответить вызовом (challenge),
подобным следующему:
WWW-Authenticate: Basic realm="WallyWorld"
где "WallyWorld" - строка, назначенная сервером, которая
идентифицирует область защиты запрашиваемого URI (Request-URI).
Чтобы получить права доступа, клиент посылает идентификатор
пользователя (userid) и пароль (password), разделенные одним
символом двоеточия (":"), внутри base64-кодированной строки
рекомендаций (credentials).
basic-credentials = "Basic" SP basic-cookie
basic-cookie =
user-pass = userid ":" password
userid = *
password = *TEXT
Userid может быть чувствителен к регистру.
Если агент пользователя хочет послать идентификатор пользователя
(userid) "Aladdin", и пароль (password) "open sesame", он будет
использовать следующее поле заголовка:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Соглашения о защите, связанные с базовой схемой установления
подлинности, смотрите в разделе 15.
zg
-
BAV_Lug
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
Непрочитанное сообщение
BAV_Lug » 2009-04-10 19:45:28
Ну и как это будет выглядеть на PHP?
Я просто PHP не очень хорошо знаю

BAV_Lug
-
ev
- ст. лейтенант
- Сообщения: 1325
- Зарегистрирован: 2008-07-27 17:11:30
- Откуда: Москва
Непрочитанное сообщение
ev » 2009-04-10 20:59:44
а что за камера?
ev
-
BAV_Lug
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
Непрочитанное сообщение
BAV_Lug » 2009-04-10 22:09:44
ev писал(а):а что за камера?
А это принципиально?
Камера длинк 900
Авторизация Basic
Что добавить в код, чтобы получать с камеры картинку? Логин-пароль естественно знаю

BAV_Lug
-
zg
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Непрочитанное сообщение
zg » 2009-04-10 22:17:50
BAV_Lug писал(а):Что добавить в код, чтобы получать с камеры картинку? Логин-пароль естественно знаю
примерно так, если мануалы не врут
Код: Выделить всё
<?php
$login = 'login';
$passw = 'password';
$authBasic = 'Authorization: Basic '. base64_encode($login .':'. $passw);
// Опции для потока
$opts = array
(
'http' => array
(
'method' => 'GET',
'header' => $authBasic ."\r\n"
)
);
$context = stream_context_create($opts);
// Получение файла
$file = file_get_contents('http://www.example.com/', false, $context);
?>
скрипт не проверял.... может и не работать
Ссылка на мануал
http://ru2.php.net/manual/en/function.f ... ntents.php
PS: проверил -))) маны не врут, скрипт рабочий

zg
-
BAV_Lug
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
Непрочитанное сообщение
BAV_Lug » 2009-04-10 22:39:37
zg писал(а):BAV_Lug писал(а):Что добавить в код, чтобы получать с камеры картинку? Логин-пароль естественно знаю
примерно так, если мануалы не врут
Код: Выделить всё
<?php
$login = 'login';
$passw = 'password';
$authBasic = 'Authorization: Basic '. base64_encode($login .':'. $passw);
// Опции для потока
$opts = array
(
'http' => array
(
'method' => 'GET',
'header' => $authBasic ."\r\n"
)
);
$context = stream_context_create($opts);
// Получение файла
$file = file_get_contents('http://www.example.com/', false, $context);
?>
скрипт не проверял.... может и не работать
Ссылка на мануал
http://ru2.php.net/manual/en/function.f ... ntents.php
PS: проверил -))) маны не врут, скрипт рабочий

Спасибо за наводку конечно, но мне не очень понятно, как потом $file превратить в изображение.
BAV_Lug
-
zg
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Непрочитанное сообщение
zg » 2009-04-10 22:48:31
BAV_Lug писал(а):как потом $file превратить в изображение.
добавь в конец скрипта
Код: Выделить всё
header('Content-type: image/jpeg', true);
echo $file;
zg
-
BAV_Lug
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
Непрочитанное сообщение
BAV_Lug » 2009-04-10 22:53:41
zg писал(а):BAV_Lug писал(а):как потом $file превратить в изображение.
добавь в конец скрипта
Код: Выделить всё
header('Content-type: image/jpeg', true);
echo $file;
Спасибо. Буду пробовать.
BAV_Lug
-
BAV_Lug
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
Непрочитанное сообщение
BAV_Lug » 2009-04-10 23:18:00
Появился еще вопросик.
Как сделать так, чтобы картинка перегружалась через определенное время сама (не вся страница - это я знаю как), а только одна картинка.
Подозреваю, что нужно копать в сторону ява скрипт.
Хочется на страничке набор радио-боксов с временем. В зависимости от того какой выбран - каритинка обновляется с таким интервалом.
BAV_Lug
-
zg
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Непрочитанное сообщение
zg » 2009-04-11 7:43:36
BAV_Lug писал(а):а только одна картинка.
посылай заголовок рефреш у картинки, например, так
и картинка будет перегружаться сама каждые 10 секунд... Ещё не плохо бы вырубить кэширование, делается следующими заголовками
Код: Выделить всё
// Запрет кэширования
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
Но можно и через яваскрипт, правда кэширование картинки всё равно лучше вырубить.
zg