request.init.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <?php
  2. if (!defined('IS_INITPHP')) exit('Access Denied!');
  3. /*********************************************************************************
  4. * InitPHP 3.8.1 国产PHP开发框架 Controller-request Http请求类
  5. *-------------------------------------------------------------------------------
  6. * 版权所有: CopyRight By initphp.com
  7. * 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己
  8. *-------------------------------------------------------------------------------
  9. * Author:zhuli Dtime:2014-11-25
  10. ***********************************************************************************/
  11. class requestInit {
  12. /**
  13. * Request-获取POST信息
  14. * Controller中使用方法:$this->controller->get_post($name = '')
  15. * @param string $name POST的键值名称
  16. * @return string
  17. */
  18. public function get_post($name = '') {
  19. if (empty($name)) return $_POST;
  20. return (isset($_POST[$name])) ? $_POST[$name] : '';
  21. }
  22. /**
  23. * Request-获取GET方法的值
  24. * Controller中使用方法:$this->controller->get_get($name = '')
  25. * @param string $name GET的键值名称
  26. * @return string
  27. */
  28. public function get_get($name = '') {
  29. if (empty($name)) return $_GET;
  30. return (isset($_GET[$name])) ? $_GET[$name] : '';
  31. }
  32. /**
  33. * Request-获取COOKIE信息
  34. * Controller中使用方法:$this->controller->get_cookie($name = '')
  35. * @param string $name COOKIE的键值名称
  36. * @return string
  37. */
  38. public function get_cookie($name = '') {
  39. if ($name == '') return $_COOKIE;
  40. return (isset($_COOKIE[$name])) ? $_COOKIE[$name] : '';
  41. }
  42. /**
  43. * Request-获取SESSION信息
  44. * Controller中使用方法:$this->controller->get_session
  45. * @param string $name SESSION的键值名称
  46. * @return string
  47. */
  48. public function get_session($name = '') {
  49. if ($name == '') return $_SESSION;
  50. return (isset($_SESSION[$name])) ? $_SESSION[$name] : '';
  51. }
  52. /**
  53. * Request-获取ENV信息
  54. * Controller中使用方法:$this->controller->get_env($name = '')
  55. * @param string $name ENV的键值名称
  56. * @return string
  57. */
  58. public function get_env($name = '') {
  59. if ($name == '') return $_ENV;
  60. return (isset($_ENV[$name])) ? $_ENV[$name] : '';
  61. }
  62. /**
  63. * Request-获取SERVICE信息
  64. * Controller中使用方法:$this->controller->get_service
  65. * @param string $name SERVER的键值名称
  66. * @return string
  67. */
  68. public function get_service($name = '') {
  69. if ($name == '') return $_SERVER;
  70. return (isset($_SERVER[$name])) ? $_SERVER[$name] : '';
  71. }
  72. /**
  73. * Request-获取当前正在执行脚本的文件名
  74. * Controller中使用方法:$this->controller->get_php_self()
  75. * @return string
  76. */
  77. public function get_php_self() {
  78. return $this->get_service('PHP_SELF');
  79. }
  80. /**
  81. * Request-获取当前正在执行脚本的文件
  82. * Controller中使用方法:$this->controller->get_service_name()
  83. * @return string
  84. */
  85. public function get_service_name() {
  86. return $this->get_service('SERVER_NAME');
  87. }
  88. /**
  89. * Request-获取请求时间
  90. * Controller中使用方法:$this->controller->get_request_time()
  91. * @return int
  92. */
  93. public function get_request_time() {
  94. return $this->get_service('REQUEST_TIME');
  95. }
  96. /**
  97. * Request-获取useragent信息
  98. * Controller中使用方法:$this->controller->get_useragent()
  99. * @return string
  100. */
  101. public function get_useragent() {
  102. return $this->get_service('HTTP_USER_AGENT');
  103. }
  104. /**
  105. * Request-获取URI信息
  106. * Controller中使用方法:$this->controller->get_uri()
  107. * @return string
  108. */
  109. public function get_uri() {
  110. return $this->get_service('REQUEST_URI');
  111. }
  112. /**
  113. * Request-判断是否为POST方法提交
  114. * Controller中使用方法:$this->controller->is_post()
  115. * @return bool
  116. */
  117. public function is_post() {
  118. return (strtolower($this->get_service('REQUEST_METHOD')) == 'post') ? true : false;
  119. }
  120. /**
  121. * Request-判断是否为GET方法提交
  122. * Controller中使用方法:$this->controller->is_get()
  123. * @return bool
  124. */
  125. public function is_get() {
  126. return (strtolower($this->get_service('REQUEST_METHOD')) == 'get') ? true : false;
  127. }
  128. /**
  129. * Request-判断是否为AJAX方式提交
  130. * Controller中使用方法:$this->controller->is_ajax()
  131. * @return bool
  132. */
  133. public function is_ajax() {
  134. if ($this->get_service('HTTP_X_REQUESTED_WITH') && strtolower($this->get_service('HTTP_X_REQUESTED_WITH')) == 'xmlhttprequest') return true;
  135. if ($this->get_post('initphp_ajax') || $this->get_get('initphp_ajax')) return true; //程序中自定义AJAX标识
  136. return false;
  137. }
  138. /**
  139. * HTTP请求类-获取用户IP
  140. *
  141. * 1. 使用方法【Controller】:<code>$this->controller->get_ip()</code>
  142. * @return string
  143. */
  144. public function get_ip() {
  145. static $realip = null;
  146. if (null !== $realip) {
  147. return $realip;
  148. }
  149. if (isset($_SERVER)) {
  150. if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  151. $realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  152. } else if (isset($_SERVER['HTTP_CLIENT_IP'])) {
  153. $realip = $_SERVER['HTTP_CLIENT_IP'];
  154. } else {
  155. $realip = $_SERVER['REMOTE_ADDR'];
  156. }
  157. } else {
  158. if (getenv('HTTP_X_FORWARDED_FOR')) {
  159. $realip = getenv('HTTP_X_FORWARDED_FOR');
  160. } else if (getenv('HTTP_CLIENT_IP')) {
  161. $realip = getenv('HTTP_CLIENT_IP');
  162. } else {
  163. $realip = getenv('REMOTE_ADDR');
  164. }
  165. }
  166. // 处理多层代理的情况
  167. if (false !== strpos($realip, ',')) {
  168. $realip = reset(explode(',', $realip));
  169. }
  170. // IP地址合法验证
  171. $realip = filter_var($realip, FILTER_VALIDATE_IP, null);
  172. if (false === $realip) {
  173. return '0.0.0.0'; // unknown
  174. }
  175. return $realip;
  176. }
  177. }