我目前正在连接外部网址并向其发送一个url编码的xml文件。我正在使用CURL来发送它正常工作。
问题: 当用户访问index.html并输入金额时,按提交,它们将被带到post.php(表单提交给CURL)。
因此,信息提交正常,但网址跟随不起作用。我的意思是,在post.php上,它会从该页面下载所有响应,然后一段时间后它就会失败。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'postdata=' . urlencode(xmlGrab()));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
// Download the given URL, and return output
$output = curl_exec($ch);
$headers = substr($output, 0, $curl_info["header_size"]); //split out header
$redirect = curl_getinfo($ch)['redirect_url'];
header('HTTP/1.1 307 Temporary Redirect');
header("Location: $redirect");
// Close the cURL resource, and free system resources
curl_close($ch);
我认为如果我禁用CURLOPT_FOLLOWLOCATION并手动找到redirect_url然后继续转到那个标题,那就行了。但数据不再存在。
情景:
我想达到什么目标?:
答案 0 :(得分:0)
使用simple html dom parser
并再次构建dom,在显示之后,希望不会再次重定向。
像
$page = get_response_from_server(); // your curl function
echo $page = str_get_html($page); //will stay here(hopefully).
我仔细查看了响应标头,我在标题
上找到了Refresh:8;URL=/some_page.
使用此标头,它会在some_page
之后重定向到8 seconds
。
所以,在我看来,改变
curl_setopt($ch, CURLOPT_HEADER, 1);
到
curl_setopt($ch, CURLOPT_HEADER, 0);
可能有帮助。
答案 1 :(得分:-2)
从以下位置更改此行:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
为:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
为0
- >不要设置任何行为。
删除此行:
curl_setopt($ch, CURLOPT_POST, 1);