PHP中的卷曲有重定向问题

时间:2010-07-31 16:54:22

标签: php parsing curl

嗯,这是代码:

<?
// Getting the comic page
if (!empty($_GET['c'])) $id = $_GET['c'];
else $id = "new";

$url = "http://www.explosm.net/comics/$id/";

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FAILONERROR, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_TIMEOUT, 3);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.447.0 Safari/534.2"); 

$result = curl_exec($curl);
curl_close($curl);
?>

(它实际上更长,但那是我遇到问题的部分)

所以,问题是:如果我在GET参数“c”中指定strip的ID(例如“2126”),一切正常,并且条带的页面被加载到$ result var。

但是,如果我指定一个术语,例如“随机”或“新”(这两个在爆炸网站上都可以正常工作,你可以检查一下,如果你想),$ result就等于什么都没有。 要对此进行测试,您可以使用此页面:http://expmo.1free.ws/test.phphttp://expmo.1free.ws/test.php?c=2126正常,但http://expmo.1free.ws/test.phphttp://expmo.1free.ws/test.php?c=random没有)

你能帮帮我吗?谢谢。

1 个答案:

答案 0 :(得分:2)

您使用的是哪个版本的PHP?如果启用了safe_mode,即使设置了CURLOPT_FOLLOWLOCATION,curl也不会遵循重定向。如果启用错误报告,请参阅:

  

警告:curl_setopt()   [function.curl-SETOPT]:   CURLOPT_FOLLOWLOCATION不能   在safe_mode或。时激活   open_basedir已设置...

然后您知道您必须手动关注重定向(因为您在共享主机上并且可能无法更改safe_modeopen_basedir设置),方法是解析响应代码并{{1自己头。