Server IP : 15.235.198.142 / Your IP : 216.73.216.190 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/php/Slim/Psr7/Factory/ |
Upload File : |
<?php /** * Slim Framework (https://slimframework.com) * * @license https://github.com/slimphp/Slim-Psr7/blob/master/LICENSE.md (MIT License) */ declare(strict_types=1); namespace Slim\Psr7\Factory; use InvalidArgumentException; use Psr\Http\Message\UriFactoryInterface; use Psr\Http\Message\UriInterface; use Slim\Psr7\Uri; use function count; use function explode; use function parse_url; use function preg_match; use function strpos; use function strstr; use function substr; use const PHP_URL_QUERY; class UriFactory implements UriFactoryInterface { /** * {@inheritdoc} */ public function createUri(string $uri = ''): UriInterface { $parts = parse_url($uri); if ($parts === false) { throw new InvalidArgumentException('URI cannot be parsed'); } $scheme = $parts['scheme'] ?? ''; $user = $parts['user'] ?? ''; $pass = $parts['pass'] ?? ''; $host = $parts['host'] ?? ''; $port = $parts['port'] ?? null; $path = $parts['path'] ?? ''; $query = $parts['query'] ?? ''; $fragment = $parts['fragment'] ?? ''; return new Uri($scheme, $host, $port, $path, $query, $fragment, $user, $pass); } /** * Create new Uri from environment. * * @internal This method is not part of PSR-17 * * @param array $globals The global server variables. * * @return Uri */ public function createFromGlobals(array $globals): Uri { // Scheme $https = $globals['HTTPS'] ?? false; $scheme = !$https || $https === 'off' ? 'http' : 'https'; // Authority: Username and password $username = $globals['PHP_AUTH_USER'] ?? ''; $password = $globals['PHP_AUTH_PW'] ?? ''; // Authority: Host $host = ''; if (isset($globals['HTTP_HOST'])) { $host = $globals['HTTP_HOST']; } elseif (isset($globals['SERVER_NAME'])) { $host = $globals['SERVER_NAME']; } // Authority: Port $port = !empty($globals['SERVER_PORT']) ? (int)$globals['SERVER_PORT'] : ($scheme === 'https' ? 443 : 80); if (preg_match('/^(\[[a-fA-F0-9:.]+])(:\d+)?\z/', $host, $matches)) { $host = $matches[1]; if (isset($matches[2])) { $port = (int) substr($matches[2], 1); } } else { $pos = strpos($host, ':'); if ($pos !== false) { $port = (int) substr($host, $pos + 1); $host = strstr($host, ':', true); } } // Query string $queryString = $globals['QUERY_STRING'] ?? ''; // Request URI $requestUri = ''; if (isset($globals['REQUEST_URI'])) { $uriFragments = explode('?', $globals['REQUEST_URI']); $requestUri = $uriFragments[0]; if ($queryString === '' && count($uriFragments) > 1) { $queryString = parse_url('https://www.example.com' . $globals['REQUEST_URI'], PHP_URL_QUERY) ?? ''; } } // Build Uri and return return new Uri($scheme, $host, $port, $requestUri, $queryString, '', $username, $password); } }