note 84957 added to function.get-headers
| From: | Radon8472 at osu1 dot php dot net | Date: | Thu, 07 Aug 2008 13:07:15 +0000 |
| Subject: | note 84957 added to function.get-headers | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-143265@lists.php.net to get a copy of this message | ||
No, it doesn`t.. It is a bad Idea to searczh for the text "Moved" if you want to find out
if its a redirect.
Better is to look for the Responscode 301,302 and 303.
<?php
function get_headers($Url, $Format= 0, $Depth= 0) {
if ($Depth > 5) return;
$Parts = parse_url($Url);
if (!array_key_exists('path', $Parts)) $Parts['path'] = '/';
if (!array_key_exists('port', $Parts)) $Parts['port'] = 80;
if (!array_key_exists('scheme', $Parts)) $Parts['scheme'] =
'http';
$Return = array();
$fp = fsockopen($Parts['host'], $Parts['port'], $errno, $errstr, 30);
if ($fp) {
$Out = 'GET '.$Parts['path'].(isset($Parts['query']) ?
'?'.@$Parts['query'] : '')." HTTP/1.1\r\n".
'Host: '.$Parts['host'].($Parts['port'] != 80 ?
':'.$Parts['port'] : '')."\r\n".
'Connection: Close'."\r\n";
fwrite($fp, $Out."\r\n");
$Redirect = false; $RedirectUrl = '';
while (!feof($fp) && $InLine = fgets($fp, 1280)) {
if ($InLine == "\r\n") break;
$InLine = rtrim($InLine);
list($Key, $Value) = explode(': ', $InLine, 2);
if ($Key == $InLine) {
if ($Format == 1)
$Return[$Depth] = $InLine;
else $Return[] = $InLine;
if ((strpos($InLine, '301') > 0)||(strpos($InLine, '302')
> 0)||(strpos($InLine, '303') > 0) ) $Redirect = true;
} else {
if ($Key == 'Location') $RedirectUrl = $Value;
if ($Format == 1)
$Return[$Key] = $Value;
else $Return[] = $Key.': '.$Value;
}
}
fclose($fp);
if ($Redirect && !empty($RedirectUrl)) {
$NewParts = parse_url($RedirectUrl);
if (!array_key_exists('host', $NewParts)) $RedirectUrl =
$Parts['host'].$RedirectUrl;
if (!array_key_exists('scheme', $NewParts)) $RedirectUrl =
$Parts['scheme'].'://'.$RedirectUrl;
$RedirectHeaders = get_headers($RedirectUrl, $Format, $Depth+1);
if ($RedirectHeaders) $Return = array_merge_recursive($Return, $RedirectHeaders);
}
return $Return;
}
return false;
}
?>
----
Server IP: 217.13.201.10
Probable Submitter: 87.234.95.126
----
Manual Page -- http://www.php.net/manual/en/function.get-headers.php
Edit -- https://master.php.net/note/edit/84957
Del: integrated -- https://master.php.net/note/delete/84957/integrated
Del: useless -- https://master.php.net/note/delete/84957/useless
Del: bad code -- https://master.php.net/note/delete/84957/bad+code
Del: spam -- https://master.php.net/note/delete/84957/spam
Del: non-english -- https://master.php.net/note/delete/84957/non-english
Del: in docs -- https://master.php.net/note/delete/84957/in+docs
Del: other reasons-- https://master.php.net/note/delete/84957
Reject -- https://master.php.net/note/reject/84957
Search -- https://master.php.net/manage/user-notes.php