首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用curl和php将cookie发送到外部.cgi页面?

如何使用curl和php将cookie发送到外部.cgi页面?
EN

Stack Overflow用户
提问于 2018-10-10 02:48:43
回答 1查看 57关注 0票数 0

我需要用php在我的网络系统上显示安全摄像头的图像。我正在使用curl来尝试完成这项任务。集成包括登录,然后生成外部服务器的SessionID,我需要再次发送才能完成身份验证。但是,将显示相机图像。我该怎么做呢?下面是我使用的代码:

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-10 05:43:56

看起来登录/密码不正确,因此您的第一个请求失败。

此外,如果你想使用PHP进行身份验证,最终用户不需要身份验证就能立即看到图片,你需要使用curl下载图片-它将在你第一次调用时的$response中,你需要立即请求图片的url:

代码语言:javascript
复制
<?php
// ...
CURLOPT_URL => 'http://camerasquadion.ddns.net:8000/camera.cgi?camera=108801&resolucao=640x480&qualidade=100&formato=jpg',

然后将图像存储在服务器上,或者直接将其输出到浏览器:

代码语言:javascript
复制
<img src="data:image/jpg;base64,
<?=base64_encode($response)?>">

您可能需要调整代码以使其工作,但这是基本思想。

同样,第一步是拥有有效的用户名和密码以通过身份验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52727530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档