123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- <?php
- /**
- * Description of newPHPClass
- *
- * @author stanley-king
- */
- class request_helper
- {
- static public function fcgi_role()
- {
- return fcgi_getparam('FCGI_ROLE');
- }
- static public function script_file()
- {
- return fcgi_getparam('SCRIPT_FILENAME');
- }
- static public function query_string()
- {
- return fcgi_getparam('QUERY_STRING');
- }
- static public function method()
- {
- return fcgi_getparam('REQUEST_METHOD');
- }
- static public function content_type()
- {
- return fcgi_getparam('CONTENT_TYPE');
- }
- static public function content_length()
- {
- return fcgi_getparam('CONTENT_LENGTH');
- }
- static public function content()
- {
- return fcgi_getcontent();
- }
- static public function script_name()
- {
- return fcgi_getparam('SCRIPT_NAME');
- }
- static public function req_uri()
- {
- return fcgi_getparam('REQUEST_URI');
- }
- static public function doc_uri()
- {
- return fcgi_getparam('DOCUMENT_URI');
- }
- static public function doc_root()
- {
- return fcgi_getparam('DOCUMENT_ROOT');
- }
- static public function srv_protocol()
- {
- return fcgi_getparam('SERVER_PROTOCOL');
- }
- static public function gate_interface()
- {
- return fcgi_getparam('GATEWAY_INTERFACE');
- }
- static public function srv_software()
- {
- return fcgi_getparam('SERVER_SOFTWARE');
- }
- static public function remote_addr()
- {
- return fcgi_getparam('REMOTE_ADDR');
- }
- static public function remote_port()
- {
- return fcgi_getparam('REMOTE_PORT');
- }
- static public function srv_addr()
- {
- return fcgi_getparam('SERVER_ADDR');
- }
- static public function srv_port()
- {
- return fcgi_getparam('SERVER_PORT');
- }
- static public function srv_name()
- {
- return fcgi_getparam('SERVER_NAME');
- }
- static public function redirect_status()
- {
- return fcgi_getparam('REDIRECT_STATUS');
- }
- static public function http_host()
- {
- return fcgi_getparam('HTTP_HOST');
- }
- static public function http_connection()
- {
- return fcgi_getparam('HTTP_CONNECTION');
- }
- static public function http_accept()
- {
- return fcgi_getparam('HTTP_ACCEPT');
- }
- static public function http_upgrade_insecure_requests()
- {
- return fcgi_getparam('HTTP_UPGRADE_INSECURE_REQUESTS');
- }
- static public function http_useragent()
- {
- return fcgi_getparam('HTTP_USER_AGENT');
- }
- static public function http_accept_encoding()
- {
- return fcgi_getparam('HTTP_ACCEPT_ENCODING');
- }
- static public function http_accept_language()
- {
- return fcgi_getparam('HTTP_ACCEPT_LANGUAGE');
- }
- static public function http_cookie()
- {
- return fcgi_getparam('HTTP_COOKIE');
- }
- static public function SRV_PARAMS()
- {
- static $fields = array(
- "USER",
- "HOME",
- "FCGI_ROLE",
- "SCRIPT_FILENAME",
- "QUERY_STRING",
- "REQUEST_METHOD",
- "CONTENT_TYPE",
- "CONTENT_LENGTH",
- "SCRIPT_NAME",
- "REQUEST_URI",
- "DOCUMENT_URI",
- "DOCUMENT_ROOT",
- "SERVER_PROTOCOL",
- "GATEWAY_INTERFACE",
- "SERVER_SOFTWARE",
- "REMOTE_ADDR",
- "REMOTE_PORT",
- "SERVER_ADDR",
- "SERVER_PORT",
- "SERVER_NAME",
- "REDIRECT_STATUS",
- "HTTP_VIA",
- "HTTP_EAGLEEYE_TRACEID",
- "HTTP_ALI_SWIFT_LOG_HOST",
- "HTTP_ALI_SWIFT_STAT_HOST",
- "HTTP_X_FORWARDED_FOR",
- "HTTP_X_CLIENT_SCHEME",
- "HTTP_ALI_CDN_REAL_IP",
- "HTTP_CACHE_CONTROL",
- "HTTP_UPGRADE_INSECURE_REQUESTS",
- "HTTP_USER_AGENT",
- "HTTP_ACCEPT",
- "HTTP_ACCEPT_ENCODING",
- "HTTP_ACCEPT_LANGUAGE",
- "HTTP_COOKIE",
- "HTTP_ALI_CDN_DEBUG_LINK_LOG",
- "HTTP_ALI_SWIFT_ORIGIN_HOST",
- "HTTP_HOST",
- "PHP_SELF",
- "REQUEST_TIME_FLOAT",
- "REQUEST_TIME",
- "HTTP_ACCEPT", "HTTP_ACCEPT_CHARSET",
- "HTTP_ACCEPT_ENCODING",
- "HTTP_ACCEPT_LANGUAGE", "HTTP_AUTHORIZATION",
- "HTTP_CONNECTION", "CONTENT_TYPE",
- "CONTENT_LENGTH", "HTTP_COOKIE", "HTTP_COOKIE2",
- "HTTP_HOST", "HTTP_PRAGMA",
- "HTTP_REFERER", "HTTP_USER_AGENT",
- "HTTP_CACHE_CONTROL",
- "HTTP_IF_MODIFIED_SINCE", "HTTP_IF_MATCH",
- "HTTP_IF_NONE_MATCH",
- "HTTP_IF_RANGE",
- "HTTP_IF_UNMODIFIED_SINCE",
- "HTTP_KEEP_ALIVE",
- "HTTP_RANGE",
- "HTTP_X_FORWARDED_FOR",
- "HTTP_VIA",
- 'HTTPS',
- 'REMOTE_ADDR',
- 'REMOTE_HOST',
- 'REMOTE_PORT',
- 'REMOTE_USER',
- 'REDIRECT_REMOTE_USER',
- 'SERVER_ADMIN',
- 'SERVER_PORT',
- 'SERVER_SIGNATURE',
- 'REQUEST_URI',
- 'PHP_AUTH_DIGEST',
- 'PHP_AUTH_USER',
- 'PHP_AUTH_PW',
- 'AUTH_TYPE',
- 'PATH_INFO',
- 'HTTP_CLIENT_TYPE',
- 'HTTP_CLIENT_VERSION',
- 'HTTP_SIGN',
- 'ORIG_PATH_INFO');
- return $fields;
- }
- static public function fill_server()
- {
- $tm = gettimeofday();
- $_SERVER['REQUEST_TIME_FLOAT'] = doubleval($tm['sec']) + doubleval($tm['usec']) / 1000000;
- $_SERVER['REQUEST_TIME'] = intval($tm['sec']);
- $fields = self::SRV_PARAMS();
- foreach ($fields as $field) {
- $param = fcgi_getparam($field);
- $_SERVER[$field] = $param;
- }
- }
- static public function clear_server()
- {
- $fields = self::SRV_PARAMS();
- foreach ($fields as $field) {
- unset($_SERVER[$field]);
- }
- }
- static function start_with ($string, $startString)
- {
- $len = strlen($startString);
- return (substr($string, 0, $len) === $startString);
- }
- static public function fill_param()
- {
- $method = strtolower(request_helper::method());
- $squery = request_helper::query_string();
- self::parse_formurl($squery,$method);
- if ($method == 'post') {
- $content = request_helper::content();
- $_SERVER['post_content'] = $content;
- }
- if(!empty($content))
- {
- $content_type = strtolower(self::content_type());
- Log::record("type = {$content_type}, content={$content}",Log::DEBUG);
- $checker = function ($stype)
- {
- $formtypes = ['application/x-www-form-urlencoded','text/xml','text/html','multipart/form-data','application/octet-stream'];
- foreach ($formtypes as $type) {
- if(self::start_with($stype,$type)) {
- return true;
- }
- }
- return false;
- };
- if(empty($content_type) || $checker($content_type)) {
- self::parse_formurl($content,$method);
- }
- }
- }
- static private function parse_formurl($squery,$method)
- {
- if(empty($squery)) return;
- $params = preg_split('/&/', $squery);
- if ($method == 'get' || $method == 'post')
- {
- foreach ($params as $pair)
- {
- if(empty($pair)) continue;
- $kv = explode('=', $pair);
- $count = count($kv);
- if($count === 1) {
- $key = $kv[0];
- $val = "";
- }
- elseif($count === 2) {
- $key = $kv[0];
- $val = urldecode($kv[1]);
- }
- else {
- continue;
- }
- if(!empty($key)) {
- $_GET[$key] = $val;
- $_POST[$key] = $val;
- }
- Log::record("{$key}:{$val}",Log::DEBUG);
- }
- }
- }
- }
- function init_request()
- {
- request_helper::fill_server();
- request_helper::fill_param();
- }
- class local_request
- {
- private $script_file;
- private $query_string;
- private $method;
- public function __construct($uri)
- {
- $param = parse_url($uri);
- $this->script_file = BASE_ROOT_PATH . $param['path'];
- $this->query_string = $param['query'];
- $this->method = 'GET';
- }
- public function script_file()
- {
- return $this->script_file;
- }
- public function query_string()
- {
- return $this->query_string;
- }
- public function method()
- {
- return $this->method;
- }
- }
- function init_localreq(local_request $req)
- {
- $squery = $req->query_string();
- $params = preg_split('/&|=/', $squery);
- $method = strtolower($req->method());
- if ($method == 'get' || $method == 'post') {
- for ($i = 0; $i < count($params); ++$i) {
- $key = $params[$i];
- $val = $params[++$i];
- $_GET[$key] = $val;
- $_POST[$key] = $val;
- }
- }
- }
|