diff options
author | Freya Murphy <freya@freyacat.org> | 2024-12-11 19:57:12 -0500 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-12-11 19:57:12 -0500 |
commit | d5f1976e62cb0a32b8bafdb71d7d082d16413256 (patch) | |
tree | 487832bc4deae45429bd78875ebb221739d73a8b /src/web/core/router.php | |
parent | fix spacing, remote __init function (diff) | |
download | website-d5f1976e62cb0a32b8bafdb71d7d082d16413256.tar.gz website-d5f1976e62cb0a32b8bafdb71d7d082d16413256.tar.bz2 website-d5f1976e62cb0a32b8bafdb71d7d082d16413256.zip |
make ip nullable, refactor get_ip and get_req_route in router
Diffstat (limited to '')
-rw-r--r-- | src/web/core/router.php | 65 |
1 files changed, 17 insertions, 48 deletions
diff --git a/src/web/core/router.php b/src/web/core/router.php index a1307cf..6a543aa 100644 --- a/src/web/core/router.php +++ b/src/web/core/router.php @@ -52,47 +52,11 @@ class Router extends Component { $parts = explode('/', $path); // get the length $len = count($parts); - // get route info $route = array(); - // e.g. / - if ($path === '') - $route = array( - 'app' => 'index', - 'slug' => 'index', - 'args' => array(), - ); - // e.g. /home /login - else if ($len === 1) - $route = array( - 'app' => $parts[0], - 'slug' => 'index', - 'args' => array(), - ); - // e.g. /home/posts - else if ($len === 2) - $route = array ( - 'app' => $parts[0], - 'slug' => $parts[1], - 'args' => array(), - ); - // e.g. /home/posts/joe - else - $route = array ( - 'app' => $parts[0], - 'slug' => $parts[1], - 'args' => array_slice($parts, 2), - ); - - if (isset($routes[$path])) { - $parts = explode('/', $routes[$path]); - if (count($parts) == 1) { - $route['app'] = $parts[0]; - } else { - $route['app'] = $parts[0]; - $route['slug'] = $parts[1]; - } - } + $route['app'] = $len > 0 ? $parts[0] : 'index'; + $route['slug'] = $len > 1 ? $parts[1] : 'index'; + $route['args'] = array_slice($parts, 2); return $route; } @@ -100,17 +64,22 @@ class Router extends Component { /** * Gets the users ip */ - private function get_ip(): string + private function get_ip(): ?string { - $ip = ''; - if (!empty($_SERVER['HTTP_CLIENT_IP'])) { - $ip = $_SERVER['HTTP_CLIENT_IP']; - } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { - $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; - } else { - $ip = $_SERVER['REMOTE_ADDR']; + $headers = array ( + 'HTTP_CLIENT_IP', + 'HTTP_X_FORWARDED_FOR', + 'HTTP_X_FORWARDED', + 'HTTP_FORWARDED_FOR', + 'HTTP_FORWARDED', + 'HTTP_X_REAL_IP', + 'REMOTE_ADDR' + ); + foreach ($headers as $header) { + if (isset($_SERVER[$header])) + return $_SERVER[$header]; } - return $ip; + return NULL; } /** |