2 /**********************************************************************
3 Copyright (C) FrontAccounting, LLC.
4 Released under the terms of the GNU General Public License, GPL,
5 as published by the Free Software Foundation, either version 3
6 of the License, or (at your option) any later version.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
14 Read content of remote url via http.
15 Does not require curl php extension nor allow_url_fopen=1.
17 function url_get_contents($url, $timeout=10)
19 // get the host name and url path
20 $parsedUrl = parse_url($url);
22 if (@$parsedUrl['scheme'] == 'file')
23 return file_get_contents($parsedUrl['path']);
25 $host = $parsedUrl['host'];
27 if (isset($parsedUrl['path'])) {
28 $path = $parsedUrl['path'];
30 // the url is pointing to the host like http://www.mysite.com
34 if (isset($parsedUrl['query'])) {
35 $path .= '?' . $parsedUrl['query'];
38 if (isset($parsedUrl['port'])) {
39 $port = $parsedUrl['port'];
41 // most sites use port 80
46 // connect to the remote server
47 $fp = @fsockopen($host, $port, $errno, $errstr, $timeout );
51 // send the necessary headers to get the file
52 fputs($fp, "GET $path HTTP/1.0\r\n" .
54 (isset($parsedUrl['pass']) ? "Authorization: Basic ".
55 base64_encode($parsedUrl['user'].':'.$parsedUrl['pass'])."\r\n" : '').
56 "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\r\n" .
58 "Accept-Language: en-us,en;q=0.5\r\n" .
59 "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" .
60 "Connection: close\r\n" .
61 "Referer: http://$host\r\n\r\n");
63 // retrieve the response from the remote server
65 $response = stream_get_contents($fp);
67 if (!strpos($response, "200 OK\r\n"))
70 $pos = strpos($response, "\r\n\r\n");
72 $response = substr($response, $pos + 4);
75 // return the file content
79 function url_copy($from, $to, $timeout=10)
81 $f = fopen($to, 'wb');
82 if (!$f || !fwrite($f, url_get_contents($from, $timeout)))