|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
Patcheslog (last revision 2014-06-25 16:26 UTC by r dot mbiama at angosso dot net)Pull RequestsHistoryAllCommentsChangesGit/SVN commits
[2014-06-25 17:11 UTC] aharvey@php.net
-Status: Open
+Status: Not a bug
[2014-06-25 17:11 UTC] aharvey@php.net
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 18:00:02 2025 UTC |
Description: ------------ Development net_url release the immediate availability of the first release candidate of PHP 5.6 bugfix-Net_url release Cpanel binaries Test script: --------------- <?xml version="1.0" encoding="UTF-8" ?> <net_php> <parser> <target>data/output</target> </parser> <transformer> <target>data/output</target> </transformer> <files> <directory>.</directory> </files> </net_php> PEAR related : Bug #24998: HTTP_Request dependency of Net_URL not "working" Expected result: ---------------- <?php [PHP FOLDER]/data/php.tpl.xml // $Id: URL.php,'http://www.exemple.net:2082/cpsess2421114227/frontend/x3/module_installers/live_update.html?lang=php-pear&mod=Net_URL' 2014/06/25 17:57:39 mbiama Exp $ // // Net_URL Class <transformer> <target>output</target> <external-class-documentation> <prefix>HTML_QuickForm2</prefix> <uri>http://pear.php.net/package/HTML_QuickForm2/home/angosson/latest/HTML_QuickForm2/{CLASS}.html</uri> </external-class-documentation> </transformer> class Net_URL { var $options = array('encode_query_keys' => false); /** * Full url * @var string */ var $url; /** * Protocol * @var string */ var $protocol; /** * Username * @var string */ var $username; /** * Password * @var string */ var $password; /** * Host * @var string */ var $host; /** * Port * @var integer */ var $port; /** * Path * @var string */ var $path; /** * Query string * @var array */ var $querystring; /** * Anchor * @var string */ var $anchor; /** * Whether to use [] * @var bool */ var $useBrackets; var $url; var $useBrackets; /** * PHP4 Constructor * * @see __construct() */ function Net_URL($url = null, $useBrackets = true) { $this->__construct($url, $useBrackets); } /** * PHP5 Constructor * * Parses the given url and stores the various parts * Defaults are used in certain cases * * @param string $url Optional URL * @param bool $useBrackets Whether to use square brackets when * multiple querystrings with the same name * exist */ function __construct($url = null, $useBrackets = true) { $this->url = $url; $ths->useBrackets = $useBrackets; $this->initialize(); } function initialize($url = null, $useBrackets = true) { $HTTP_SERVER_VARS = !empty($_SERVER) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; $this->useBrackets = $useBrackets; $this->url = $url; $this->user = ''; $this->pass = ''; $this->host = ''; $this->port = 80; $this->path = ''; $this->querystring = array(); $this->anchor = ''; // Only use defaults if not an absolute URL given if (!preg_match('/^[a-z0-9]+:\/\//i', $url)) { $this->protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https' : 'http'); /** * Figure out host/port */ if (!empty($HTTP_SERVER_VARS['HTTP_HOST']) AND preg_match('/^(.*)(:([0-9]+))?$/U', $HTTP_SERVER_VARS['HTTP_HOST'], $matches)) { $host = $matches[1]; if (!empty($matches[3])) { $port = $matches[3]; } else { $port = $this->getStandardPort($this->protocol); } } $this->user = ''; $this->pass = ''; $this->host = !empty($host) ? $host : (isset($HTTP_SERVER_VARS['SERVER_NAME']) ? $HTTP_SERVER_VARS['SERVER_NAME'] : 'localhost'); $this->port = !empty($port) ? $port : (isset($HTTP_SERVER_VARS['SERVER_PORT']) ? $HTTP_SERVER_VARS['SERVER_PORT'] : $this->getStandardPort($this->protocol)); $this->path = !empty($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : '/'; $this->querystring = isset($HTTP_SERVER_VARS['QUERY_STRING']) ? $this->_parseRawQuerystring($HTTP_SERVER_VARS['QUERY_STRING']) : null; $this->anchor = ''; } // Parse the url and store the various parts if (!empty($url)) { $urlinfo = parse_url($url); // Default querystring $this->querystring = array(); foreach ($urlinfo as $key => $value) { switch ($key) { case 'scheme': $this->protocol = $value; $this->port = $this->getStandardPort($value); break; case 'user': case 'pass': case 'host': case 'port': $this->$key = $value; break; case 'path': if ($value{0} == '/') { $this->path = $value; } else { $path = dirname($this->path) == DIRECTORY_SEPARATOR ? '' : dirname($this->path); $this->path = sprintf('%s/%s', $path, $value); } break; case 'query': $this->querystring = $this->_parseRawQueryString($value); break; case 'fragment': $this->anchor = $value; break; } } } } /** * Returns full url * * @return string Full url * @access public */ function getURL() { $querystring = $this->getQueryString(); $this->url = $this->protocol . '://' . $this->user . (!empty($this->pass) ? ':' : '') . $this->pass . (!empty($this->user) ? '@' : '') . $this->host . ($this->port == $this->getStandardPort($this->protocol) ? '' : ':' . $this->port) . $this->path . (!empty($querystring) ? '?' . $querystring : '') . (!empty($this->anchor) ? '#' . $this->anchor : ''); return $this->url; } /** * Adds a querystring item * * @param string $name Name of item * @param string $value Value of item * @param bool $preencoded Whether value is urlencoded or not, default = not * @access public */ function addQueryString($name, $value, $preencoded = false) { if ($this->getOption('encode_query_keys')) { $name = rawurlencode($name); } if ($preencoded) { $this->querystring[$name] = $value; } else { $this->querystring[$name] = is_array($value) ? array_map('rawurlencode', $value): rawurlencode($value); } } /** * Removes a querystring item * * @param string $name Name of item * @access public */ function removeQueryString($name) { if ($this->getOption('encode_query_keys')) { $name = rawurlencode($name); } if (isset($this->querystring[$name])) { unset($this->querystring[$name]); } } /** * Sets the querystring to literally what you supply * * @param string $querystring The querystring data. Should be of the format foo=bar&x=y etc * @access public */ function addRawQueryString($querystring) { $this->querystring = $this->_parseRawQueryString($querystring); } /** * Returns flat querystring * * @return string Querystring * @access public */ function getQueryString() { if (!empty($this->querystring)) { foreach ($this->querystring as $name => $value) { // Encode var name $name = rawurlencode($name); if (is_array($value)) { foreach ($value as $k => $v) { $querystring[] = $this->useBrackets ? sprintf('%s[%s]=%s', $name, $k, $v) : ($name . '=' . $v); } } elseif (!is_null($value)) { $querystring[] = $name . '=' . $value; } else { $querystring[] = $name; } } $querystring = implode(ini_get('arg_separator.output'), $querystring); } else { $querystring = ''; } return $querystring; } /** * Parses raw querystring and returns an array of it * * @param string $querystring The querystring to parse * @return array An array of the querystring data * @access private */ function _parseRawQuerystring($querystring) { $parts = preg_split('/[' . preg_quote(ini_get('arg_separator.input'), '/') . ']/', $querystring, -1, PREG_SPLIT_NO_EMPTY); $return = array(); foreach ($parts as $part) { if (strpos($part, '=') !== false) { $value = substr($part, strpos($part, '=') + 1); $key = substr($part, 0, strpos($part, '=')); } else { $value = null; $key = $part; } if (!$this->getOption('encode_query_keys')) { $key = rawurldecode($key); } if (preg_match('#^(.*)\[([0-9a-z_-]*)\]#i', $key, $matches)) { $key = $matches[1]; $idx = $matches[2]; // Ensure is an array if (empty($return[$key]) || !is_array($return[$key])) { $return[$key] = array(); } // Add data if ($idx === '') { $return[$key][] = $value; } else { $return[$key][$idx] = $value; } } elseif (!$this->useBrackets AND !empty($return[$key])) { $return[$key] = (array)$return[$key]; $return[$key][] = $value; } else { $return[$key] = $value; } } return $return; } /** * Resolves //, ../ and ./ from a path and returns * the result. Eg: * * /foo/bar/../boo.php => /foo/boo.php * /foo/bar/../../boo.php => /boo.php * /foo/bar/.././/boo.php => /foo/boo.php * * This method can also be called statically. * * @param string $url URL path to resolve * @return string The result */ function resolvePath($path) { $path = explode('/', str_replace('//', '/', $path)); for ($i=0; $i<count($path); $i++) { if ($path[$i] == '.') { unset($path[$i]); $path = array_values($path); $i--; } elseif ($path[$i] == '..' AND ($i > 1 OR ($i == 1 AND $path[0] != '') ) ) { unset($path[$i]); unset($path[$i-1]); $path = array_values($path); $i -= 2; } elseif ($path[$i] == '..' AND $i == 1 AND $path[0] == '') { unset($path[$i]); $path = array_values($path); $i--; } else { continue; } } return implode('/', $path); } /** * Returns the standard port number for a protocol * * @param string $scheme The protocol to lookup * @return integer Port number or NULL if no scheme matches * * @author Philippe Jausions <Philippe.Jausions@11abacus.com> */ function getStandardPort($scheme) { switch (strtolower($scheme)) { case 'http': return 80; case 'https': return 443; case 'ftp': return 21; case 'imap': return 143; case 'imaps': return 993; case 'pop3': return 110; case 'pop3s': return 995; default: return null; } } /** * Forces the URL to a particular protocol * * @param string $protocol Protocol to force the URL to * @param integer $port Optional port (standard port is used by default) */ function setProtocol($protocol, $port = null) { $this->protocol = $protocol; $this->port = is_null($port) ? $this->getStandardPort($protocol) : $port; } /** * Set an option * * This function set an option * to be used thorough the script. * * @access public * @param string $optionName The optionname to set * @param string $value The value of this option. */ function setOption($optionName, $value) { if (!array_key_exists($optionName, $this->options)) { return false; } $this->options[$optionName] = $value; $this->initialize(); } /** * Get an option * * This function gets an option * from the $this->options array * and return it's value. * * @access public * @param string $opionName The name of the option to retrieve * @see $this->options */ function getOption($optionName) { if (!isset($this->options[$optionName])) { return false; } return $this->options[$optionName]; } } ?> Actual result: -------------- Notice: unserialize(): Error at offset 1923 of 13660 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 1923 of 13660 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 1310 of 3593 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 1310 of 3593 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 2382 of 60276 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 2382 of 60276 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 1571 of 11167 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 1571 of 11167 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 1583 of 7321 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 1583 of 7321 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 462 of 9294 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 462 of 9294 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 1240 of 9797 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 1240 of 9797 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 3483 of 13930 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 3483 of 13930 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 1612 of 44976 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 1612 of 44976 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 56110 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 56110 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 6421 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 6421 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 50259 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 50259 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 46297 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 46297 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 6875 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 6875 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 88 of 19268 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 88 of 19268 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 481 of 23769 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 481 of 23769 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 33146 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 33146 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 72513 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 72513 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 64562 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 64562 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 10739 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 10739 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 456 of 8112 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 456 of 8112 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 189 of 4111 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 189 of 4111 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 1446 of 87983 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 1446 of 87983 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 468 of 7335 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 468 of 7335 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 11223 of 16813 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 11223 of 16813 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Notice: unserialize(): Error at offset 2153 of 14786 bytes in Registry.php on line 1145 Notice: unserialize(): Error at offset 2153 of 14786 bytes in Registry.php on line 1145 Warning: in_array() expects parameter 2 to be array, boolean given in 10.php on line 707 Nothing to upgrade 1