note 61917 added to function.parse-url
| From: | TyronMadlener at osu1 dot php dot net | Date: | Wed, 15 Feb 2006 09:15:20 +0000 |
| Subject: | note 61917 added to function.parse-url | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-103750@lists.php.net to get a copy of this message | ||
I needed to get information about the real URL, because some URL are just redirects to the real one.
This function here tracks down the real URL as long as it gets redirects (errorcode 301,302, 303,
305 or 307) as response.
In this example i resolve my homepage www.tyron.at which redirects to a subdirectory.
$real_url = ResolveURL("http://www.tyron.at");
echo "<pre>";
print_r(parse_url($real_url));
function ResolveURL($url) {
$info = parse_url($url);
//echo "url: '$url'<br><pre>";
//print_r($info);
$fp = fsockopen($info['host'],80);
if($fp) {
$path = $info['path'];
if(!strlen($path)) $path = "/";
if(strlen($info['query'])) $path.="?".$info['query'];
$out = "GET $path HTTP/1.1\r\n";
$out .= "Host: ".$info['host']."\r\n";
$out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8)
Gecko/20050511 Firefox/1.0.4\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
if(ereg("HTTP/1.1 30(1|2|3|5|7)",$resp = fgets($fp,512))) {
while (!feof($fp)) {
if(preg_match("/Location: (.*)$/",$line=fgets($fp, 1024),$matches))
$url = ResolveURL(chop($matches[1]));
}
}
//echo $resp;
fclose($fp);
}
return $url;
}
----
Server IP: 80.78.242.21
Probable Submitter: 194.183.130.253 (proxied: 1.1 KKV-S08)
----
Manual Page -- http://www.php.net/manual/en/function.parse-url.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+61917
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+61917&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+61917&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+61917&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+61917&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+61917&report=yes&reason=non-english
Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+61917&report=yes&reason=already+in+docs
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+61917&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+61917&report=yes
Search -- http://master.php.net/manage/user-notes.php