Request.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. class Request {
  3. // @usage: Request::isHttps();
  4. public static function isHttps() {
  5. // method for previous apache: !empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on'
  6. // [forwarded] => 1
  7. // [HTTP_X_FORWARDED_PROTO] => https
  8. // [HTTP_X_FORWARDED_PORT] => 443
  9. if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO']) {
  10. return true;
  11. } else if (!empty($_SERVER['HTTPS']) && 'on' == $_SERVER['HTTPS']) {
  12. return true;
  13. }
  14. return false;
  15. }
  16. // @usage: Request::getHostUri();
  17. public static function getHostUri() {
  18. // return current host with protocol
  19. // [SCRIPT_URI] => http://biuro.biall-net.pl:34543/dev-pl/se-master/wfs-qgis.php/default_db/
  20. // [SCRIPT_URL] => /dev-pl/se-master/wfs-qgis.php/default_db/
  21. // [SCRIPT_NAME] => /dev-pl/se-master/wfs-qgis.php
  22. // [HTTP_HOST] => biuro.biall-net.pl
  23. $uri = (Request::isHttps())? 'https://' : 'http://';
  24. $uri .= "{$_SERVER['HTTP_HOST']}";
  25. return $uri;
  26. }
  27. public static function getHost() { return V::get('HTTP_HOST', '', $_SERVER); }
  28. // @usage: Request::getScriptUri();
  29. public static function getScriptUri() {
  30. // [SCRIPT_URI] => http://biuro.biall-net.pl:34543/dev-pl/se-master/wfs-qgis.php/default_db/
  31. // [SCRIPT_URL] => /dev-pl/se-master/wfs-qgis.php/default_db/
  32. // [SCRIPT_NAME] => /dev-pl/se-master/wfs-qgis.php
  33. // [HTTP_HOST] => biuro.biall-net.pl
  34. $uri = (Request::isHttps())? 'https://' : 'http://';
  35. if (!empty($_SERVER['SCRIPT_URI'])) {
  36. return "{$uri}{$_SERVER['HTTP_HOST']}{$_SERVER['SCRIPT_URL']}";
  37. }
  38. $uri = "{$uri}{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
  39. $pos = strrpos($uri, '/');
  40. if (false !== $pos) {
  41. return substr($uri, 0, $pos + 1);
  42. }
  43. return $uri;
  44. }
  45. // @usage: Request::getPathUri() . "indeks.php?..."
  46. public static function getPathUri() {
  47. // [SCRIPT_URI] => http://biuro.biall-net.pl:34543/dev-pl/se-master/wfs-qgis.php/default_db/
  48. // [SCRIPT_URL] => /dev-pl/se-master/wfs-qgis.php/default_db/
  49. // [SCRIPT_NAME] => /dev-pl/se-master/wfs-qgis.php
  50. // [HTTP_HOST] => biuro.biall-net.pl
  51. $uri = (Request::isHttps())? 'https://' : 'http://';
  52. $uri .= $_SERVER['HTTP_HOST'];
  53. $scriptPath = '';
  54. $scriptName = $_SERVER['SCRIPT_NAME'];
  55. if ('/' == substr($scriptName, -1)) {
  56. $scriptPath = $scriptName;
  57. } else {
  58. $scriptPathEx = explode('/', $scriptName);
  59. array_pop($scriptPathEx);
  60. $scriptPath = implode('/', $scriptPathEx) . '/';
  61. }
  62. $uri .= $scriptPath;
  63. return $uri;
  64. }
  65. // @usage: Request::getUriDirName() . "/index.php?...";
  66. public static function getUriDirName() {
  67. // [SCRIPT_URI] => http://biuro.biall-net.pl:34543/dev-pl/se-master/wfs-qgis.php/default_db/
  68. // [SCRIPT_URL] => /dev-pl/se-master/wfs-qgis.php/default_db/
  69. // [SCRIPT_NAME] => /dev-pl/se-master/wfs-qgis.php
  70. // [HTTP_HOST] => biuro.biall-net.pl
  71. $uri = (Request::isHttps())? 'https://' : 'http://';
  72. $uri .= $_SERVER['HTTP_HOST'];
  73. $uri .= dirname($_SERVER['SCRIPT_NAME']);
  74. return $uri;
  75. }
  76. // @usage: Request::getRewriteTaskPath();
  77. public static function getRewriteTaskPath() {
  78. $reqUri = $_SERVER['REQUEST_URI'];
  79. $reqScript = $_SERVER['SCRIPT_NAME'];
  80. $taskPath = str_replace($reqScript, '', $reqUri);
  81. return $taskPath;
  82. }
  83. // @usage: Request::getRequestBody();
  84. public static function getRequestBody() {
  85. static $requestBody = null;
  86. if (null === $requestBody) {
  87. $requestBody = file_get_contents("php://input");
  88. }
  89. return $requestBody;
  90. }
  91. // @usage: Request::getRequestJson();
  92. public static function getRequestJson() {
  93. static $requestJson = null;
  94. $body = Request::getRequestBody();
  95. if (!empty($body)) {
  96. $requestJson = @json_decode($body, $assoc = true);
  97. if (null == $requestJson && 0 !== json_last_error()) throw new Exception("Error Parsing Json from Request" . json_last_error());
  98. }
  99. return $requestJson;
  100. }
  101. // @usage: Request::getUserIp();
  102. public static function getUserIp() {
  103. static $ip = null;
  104. if (null !== $ip) return $ip;
  105. if (isset($_SERVER['HTTP_CLIENT_IP'])) $ip = $_SERVER['HTTP_CLIENT_IP'];
  106. else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  107. else if (isset($_SERVER['HTTP_X_FORWARDED'])) $ip = $_SERVER['HTTP_X_FORWARDED'];
  108. else if (isset($_SERVER['HTTP_FORWARDED_FOR'])) $ip = $_SERVER['HTTP_FORWARDED_FOR'];
  109. else if (isset($_SERVER['HTTP_FORWARDED'])) $ip = $_SERVER['HTTP_FORWARDED'];
  110. else if (isset($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR'];
  111. else $ip = 'UNKNOWN';
  112. return $ip;
  113. }
  114. public static function getRefererRoute() {
  115. $referer = self::getRefererUrl();
  116. if (!$referer) return null;
  117. $urlParsed = parse_url($referer);
  118. if (empty($urlParsed['query'])) return null;
  119. parse_str($urlParsed['query'], $urlArgs);
  120. if (empty($urlArgs)) return null;
  121. return V::get('_route', '', $urlArgs);
  122. }
  123. public static function getRefererUrl() {
  124. return V::get('HTTP_REFERER', '', $_SERVER);
  125. }
  126. }