Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用PHP cURL将图像上载到另一个站点后,如何防止重定向?_Php_Post_Redirect_File Upload_Curl - Fatal编程技术网

在使用PHP cURL将图像上载到另一个站点后,如何防止重定向?

在使用PHP cURL将图像上载到另一个站点后,如何防止重定向?,php,post,redirect,file-upload,curl,Php,Post,Redirect,File Upload,Curl,站点有一个表单,允许一次上载一个图像。我使用PHPCURL从一个zip文件上传多个图像,这很有效 上传完成后,我想在浏览器中查看curl_exec响应和curl_getinfo数据。但是,在我被重定向到图像上载到的站点之前,我只能在一瞬间看到它们: $ch = curl_init($this->aData['urlData']['actionUrl']); foreach ($this->aData['images'] as $aFile) { $s

站点有一个表单,允许一次上载一个图像。我使用PHPCURL从一个zip文件上传多个图像,这很有效

上传完成后,我想在浏览器中查看curl_exec响应和curl_getinfo数据。但是,在我被重定向到图像上载到的站点之前,我只能在一瞬间看到它们:

$ch = curl_init($this->aData['urlData']['actionUrl']);

    foreach ($this->aData['images'] as $aFile)
    {
        $sUploadFile = $this->curlUploadFilename($aFile);

        $aPostData = array('sFromUrl' => $sFromUrl, 'token' => $sToken, 'uploadfile' => $sUploadFile, 'upload' => 1);

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_REFERER']);
        curl_setopt($ch, CURLOPT_COOKIE, $sCookies);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $aPostData);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLINFO_HEADER_OUT, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

        $aResponse = curl_exec($ch);

        if(curl_errno($ch) != 0)
        {
            $this->sErrorMsg = "POST cURL Error:\r\n" . curl_error($ch) . "\r\n";
            curl_close($ch);
            return false;
        }

        $aTempInfo[] = array('image' => $aFile, 'curlInfo' => curl_getinfo($ch), 'curlResponse' => $aResponse);
    }

    $this->aInfo = $aTempInfo;
    curl_close($ch);
    return true;
我将CURLOPT_FOLLOWLOCATION设置为False,它仍然重定向。我未处于安全模式,且未设置open_basedir

我添加了CURLOPT_NOBODY作为True,CURLOPT_CUSTOMREQUEST作为POST(以防止请求切换到HEAD)。我得到了不同的结果:

  • 如果在CURLOPT_POSTFIELDS之后添加,则不会重定向我,但上载失败

  • 如果之前添加,上传成功,但我仍然重定向


我知道CURLOPT_HEADER和CURLINFO_HEADER_OUT应该做什么,但我将它们都设置为False只是为了看看这是否有区别,但我仍然被重定向。

从curl_init()中删除URL;并使用CURLOPT_URL指定它:

curl_setopt($ch, CURLOPT_URL, $this->aData['urlData']['actionUrl']);

我知道这是一篇老文章,但我还是继续回答它。我相信当你回显结果时,响应中有一些javascript正在执行重定向。尝试将响应转储到文件而不是浏览器中,查看其中是否有javascript,如果找到,请执行
str_replace()
或其他操作删除脚本的罪魁祸首部分,然后回显输出。

我将继续使用此选项设置URL,但仍会被重定向。我希望得到一个干净的修复,但是黑客暂时就可以了。我的队友不需要查看数据,因为在提交之前会有一个复选框来绕过它。