在使用PHP cURL将图像上载到另一个站点后,如何防止重定向?
站点有一个表单,允许一次上载一个图像。我使用PHPCURL从一个zip文件上传多个图像,这很有效 上传完成后,我想在浏览器中查看curl_exec响应和curl_getinfo数据。但是,在我被重定向到图像上载到的站点之前,我只能在一瞬间看到它们:在使用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
$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,但仍会被重定向。我希望得到一个干净的修复,但是黑客暂时就可以了。我的队友不需要查看数据,因为在提交之前会有一个复选框来绕过它。