cvs: phpweb /include posttohost.inc

From: Date: Wed, 13 Aug 2003 12:15:09 +0000
Subject: cvs: phpweb /include posttohost.inc
Groups: php.mirrors 
Request: Send a blank email to php-mirrors+get-20202@lists.php.net to get a copy of this message
goba Wed Aug 13 08:15:09 2003 EDT Modified files: /phpweb/include posttohost.inc Log: Apply coding conventions Index: phpweb/include/posttohost.inc diff -u phpweb/include/posttohost.inc:1.2 phpweb/include/posttohost.inc:1.3 --- phpweb/include/posttohost.inc:1.2 Tue May 13 21:43:47 2003 +++ phpweb/include/posttohost.inc Wed Aug 13 08:15:09 2003 @@ -1,43 +1,59 @@ <?php -function posttohost($url, $data) { - $url = parse_url($url); - if (!$url) return "couldn't parse url"; - if (!isset($url['port'])) { $url['port'] = ""; } - if (!isset($url['query'])) { $url['query'] = ""; } - - $encoded = ""; - - while (list($k,$v) = each($data)) { - $encoded .= ($encoded ? "&" : ""); - $encoded .= rawurlencode($k)."=".rawurlencode($v); - } - - $fp = fsockopen($url['host'],$url['port']?$url['port']:80); - if (!$fp) return "failed to open socket to $url[host]"; - - fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query'])); - fputs($fp, "Host: $url[host]\n"); - fputs($fp, "Content-type: application/x-www-form-urlencoded\n"); - fputs($fp, "Content-length: " . strlen($encoded) . "\n"); - fputs($fp, "Connection: close\n\n"); - - fputs($fp, "$encoded\n"); - - $line = fgets($fp,1024); - if (!eregi("^HTTP/1\\.. 200", $line)) return; - - $results = ""; $inheader = 1; - while(!feof($fp)) { - $line = fgets($fp,1024); - if ($inheader && ($line == "\n" || $line == "\r\n")) { - $inheader = 0; +// $Id: posttohost.inc,v 1.3 2003/08/13 12:15:09 goba Exp $ + +/* + This code is used to post data to the central server which + can store the data in database and/or mail notices or requests + to PHP.net stuff and servers +*/ + +function posttohost($url, $data) +{ + // Get parts of URL + $url = parse_url($url); + if (!$url) { return "couldn't parse url"; } + + // Provide defaults for port and query string + if (!isset($url['port'])) { $url['port'] = ""; } + if (!isset($url['query'])) { $url['query'] = ""; } + + // Build POST string + $encoded = ""; + foreach ($data as $k => $v) { + $encoded .= ($encoded ? "&" : ""); + $encoded .= rawurlencode($k) . "=" . rawurlencode($v); } - elseif (!$inheader) { - $results .= $line; + + // Open socket on host + $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80); + if (!$fp) { return "failed to open socket to {$url['host']}"; } + + // Send HTTP 1.0 POST request to host + fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query'])); + fputs($fp, "Host: {$url['host']}\n"); + fputs($fp, "Content-type: application/x-www-form-urlencoded\n"); + fputs($fp, "Content-length: " . strlen($encoded) . "\n"); + fputs($fp, "Connection: close\n\n"); + fputs($fp, "$encoded\n"); + + // Read the first line of data, only accept if 200 OK is sent + $line = fgets($fp, 1024); + if (!eregi("^HTTP/1\\.. 200", $line)) { return; } + + // Put everything, except the headers to $results + $results = ""; $inheader = TRUE; + while(!feof($fp)) { + $line = fgets($fp, 1024); + if ($inheader && ($line == "\n" || $line == "\r\n")) { + $inheader = FALSE; + } + elseif (!$inheader) { + $results .= $line; + } } - } - fclose($fp); + fclose($fp); - return $results; + // Return with data received + return $results; }

« previous php.mirrors (#20202) next »