index.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. function d() {
  3. }
  4. function error($code = 403) {
  5. if($code == 404) {
  6. header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
  7. header("Status: 404 Not Found");
  8. $_SERVER['REDIRECT_STATUS'] = 404;
  9. return $GLOBALS['basedir'] . 'pages/errors/404.php';
  10. } else {
  11. header($_SERVER["SERVER_PROTOCOL"]." 403 Forbidden");
  12. header("Status: 403 Forbidden");
  13. $_SERVER['REDIRECT_STATUS'] = 403;
  14. return $GLOBALS['basedir'] . 'pages/errors/403.php';
  15. }
  16. }
  17. function getRequestPage($request = '') {
  18. if($request == '' or $request == '/') {
  19. return array(array(), array());
  20. }
  21. $rArray = explode('/', $request);
  22. $args = array();
  23. while(!file_exists($file = 'pages/' . implode('/', $rArray) . '.php') and $rArray != NULL) {
  24. array_unshift($args, array_pop($rArray));
  25. }
  26. return array($rArray, $args);
  27. }
  28. include 'libs/utils.php';
  29. $baseurl = trim(full_url($_SERVER), '/') . '/';
  30. $basedir = dirname($_SERVER['SCRIPT_FILENAME']) . '/';
  31. $dirty_req = preg_replace('/(\?.*)/', '', $_SERVER['REQUEST_URI']);
  32. $dn = dirname($_SERVER['SCRIPT_NAME']);
  33. $dirty_req = substr($dirty_req, strlen($dn));
  34. $dirty_req = trim($dirty_req, '/');
  35. if(strlen($dirty_req) > 0) {
  36. $baseurl = substr(trim(preg_replace('/(\?.*)/', '', $baseurl), '/'), 0, -strlen($dirty_req));
  37. }
  38. if(strlen($dirty_req) > 0) {
  39. if(substr($_SERVER['REQUEST_URI'], -1) === '/') {
  40. $redirect_url = trim(full_url($_SERVER), '/');
  41. header("HTTP/1.1 301 Moved Permanently");
  42. header("Location: $redirect_url");
  43. die;
  44. }
  45. }
  46. $request = $dirty_req;
  47. ob_start();
  48. $r = getRequestPage($request);
  49. $GLOBALS['args'] = $r[1];
  50. if(empty($r[0])) {
  51. if(empty($r[1])) {
  52. include $basedir . 'pages/home.php';
  53. } else {
  54. include error(404);
  55. }
  56. } else {
  57. include $basedir.'pages/'.implode('/', $r[0]).'.php';
  58. }
  59. $html = ob_get_clean();
  60. echo $html;