我需要使用php在我的Web系统上显示安全摄像机图像。我正在使用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>
答案 0 :(得分:0)
登录名/密码似乎不正确,因此您的第一个请求失败。
此外,如果您要使用PHP进行身份验证,并且最终用户无需身份验证即可立即查看该图像,则需要使用curl下载图像-该图像将在您第一次调用的$response
中,您需要立即请求图片网址的位置:
<?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)?>">
您可能需要调整代码才能使其正常工作,但这是基本思想。
同样,第一步是具有有效的用户名和密码以通过身份验证。