    function __construct($server, $path = false, $port = 80, $timeout = 15, $timeout_io = null)
    {
        if (!$path) {
            // Assume we have been given a URL instead
            $bits = parse_url($server);
            // print_r($bits);
            $this->server = $bits['host'];
            $this->port = isset($bits['port']) ? $bits['port'] : 80;
            $this->path = isset($bits['path']) ? $bits['path'] : '/';

            // Make absolutely sure we have a path
            if (!$this->path) {
                $this->path = '/';
            }

            if (!empty($bits['query'])) {
                $this->path .= '?' . $bits['query'];
            }
        } else {
            $this->server = $server;
            $this->path = $path;
            $this->port = $port;
        }
        $this->useragent = ' -- PingTool/1.0.0';
        $this->timeout = $timeout;
        $this->timeout_io = $timeout_io;
    }
The software constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component.