【发布时间】:2010-09-30 10:39:03
【问题描述】:
我看到有人问一个关于检测 URL 是否从 groovy 和 perl 重定向但在 PHP 上找不到任何东西的问题。
有人知道我可以在哪里找到执行此操作的代码吗?
【问题讨论】:
我看到有人问一个关于检测 URL 是否从 groovy 和 perl 重定向但在 PHP 上找不到任何东西的问题。
有人知道我可以在哪里找到执行此操作的代码吗?
【问题讨论】:
$ch = curl_init('http://www.yahoo.com/');
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (($code == 301) || ($code == 302)) {
//This was a redirect
}
【讨论】:
$data = curl_exec($ch) 之类的操作,而不是将结果发送到浏览器,则需要添加curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);。
实际上,我发现这个效果最好:
function GetURL($URL)
{
$ch = curl_init($URL);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
return $code;
}
【讨论】:
请记住,通常针对这个问题给出的答案都没有考虑到由在返回的文档中编码的 javascript 引起的重定向(或者我认为 HTML 中的元刷新标记。)所以无论如何都有可能使用此类代码进行测试时,您会错过某些类型的“重定向”。
不幸的是,解决此问题的唯一方法是让实际的网络浏览器访问网页,并以报告 javascript 和元刷新重定向的方式修改网络浏览器。
干杯!
【讨论】: