嗯,这是代码:
<?
// 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.php
(http://expmo.1free.ws/test.php?c=2126
正常,但http://expmo.1free.ws/test.php
和http://expmo.1free.ws/test.php?c=random
没有)
答案 0 :(得分:2)
您使用的是哪个版本的PHP?如果启用了safe_mode
,即使设置了CURLOPT_FOLLOWLOCATION
,curl也不会遵循重定向。如果启用错误报告,请参阅:
警告:curl_setopt() [function.curl-SETOPT]: CURLOPT_FOLLOWLOCATION不能 在safe_mode或。时激活 open_basedir已设置...
然后您知道您必须手动关注重定向(因为您在共享主机上并且可能无法更改safe_mode
或open_basedir
设置),方法是解析响应代码并{{1自己头。