我需要用php在我的网络系统上显示安全摄像头的图像。我正在使用curl来尝试完成这项任务。集成包括登录,然后生成外部服务器的SessionID,我需要再次发送才能完成身份验证。但是,将显示相机图像。我该怎么做呢?下面是我使用的代码:
<?php
$Cookie = (dirname(__FILE__) . "/cookie.txt");
# PRIMEIRA REQUISIÇÃO, RECEBE O COOKIE PARA O DOMINIO
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_COOKIEJAR => $Cookie,
CURLOPT_PORT => '8000',
CURLOPT_URL => 'http://camerasquadion.ddns.net:8000/camera.cgi',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_USERPWD => "usuario:senha",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #: <br>" . $err;
} else {
//$this->Result = json_decode($response, true);
echo "Resposta : " . $response;
}
# SEGUNDA REQUISIÇÃO, ENVIA O COOKIE RECEBIDO DE VOLTA PARA O DOMINIO
$ch = curl_init();
// Através da operação CURLOPT_COOKIEFILE estarei enviando meu COOKIE.
curl_setopt_array($ch, array(
CURLOPT_COOKIEFILE => $Cookie,
CURLOPT_URL => 'http://camerasquadion.ddns.net:8000/camera.cgi',
//CURLOPT_URL => 'camerasquadion.ddns.net',
CURLOPT_RETURNTRANSFER => true,
));
$output = curl_exec($ch);
//print_r($output);
?>
<html>
<body>
<h1>Access D-Guard</h1>
<hr>
<img src="http://camerasquadion.ddns.net:8000/camera.cgi?camera=108801&resolucao=640x480&qualidade=100&formato=jpg" />
</body>
</html>
发布于 2018-10-10 05:43:56
看起来登录/密码不正确,因此您的第一个请求失败。
此外,如果你想使用PHP进行身份验证,最终用户不需要身份验证就能立即看到图片,你需要使用curl下载图片-它将在你第一次调用时的$response
中,你需要立即请求图片的url:
<?php
// ...
CURLOPT_URL => 'http://camerasquadion.ddns.net:8000/camera.cgi?camera=108801&resolucao=640x480&qualidade=100&formato=jpg',
然后将图像存储在服务器上,或者直接将其输出到浏览器:
<img src="data:image/jpg;base64,
<?=base64_encode($response)?>">
您可能需要调整代码以使其工作,但这是基本思想。
同样,第一步是拥有有效的用户名和密码以通过身份验证。
https://stackoverflow.com/questions/52727530
复制相似问题