note 83648 added to function.get-headers

From: Date: Thu, 05 Jun 2008 20:59:32 +0000
Subject: note 83648 added to function.get-headers
Groups: php.notes 
Request: Send a blank email to php-notes+get-140158@lists.php.net to get a copy of this message
I tried to replicate the native behavior as much as possible for systems that don't have the get_headers() function. Here it is: <?php if (!function_exists('get_headers')) { 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, 'Moved') > 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; }} ?> The function will handle up to five redirects. Enjoy! ---- Server IP: 216.92.131.65 Probable Submitter: 198.236.64.22 ---- Manual Page -- http://www.php.net/manual/en/function.get-headers.php Edit -- https://master.php.net/note/edit/83648 Del: integrated -- https://master.php.net/note/delete/83648/integrated Del: useless -- https://master.php.net/note/delete/83648/useless Del: bad code -- https://master.php.net/note/delete/83648/bad+code Del: spam -- https://master.php.net/note/delete/83648/spam Del: non-english -- https://master.php.net/note/delete/83648/non-english Del: in docs -- https://master.php.net/note/delete/83648/in+docs Del: other reasons-- https://master.php.net/note/delete/83648 Reject -- https://master.php.net/note/reject/83648 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#140158) next »