mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-23 02:45:33 +08:00
167 lines
6.1 KiB
PHP
167 lines
6.1 KiB
PHP
<?php
|
||
/**
|
||
* Copyright © ShopeX (http://www.shopex.cn). All rights reserved.
|
||
* See LICENSE file for license details.
|
||
*/
|
||
|
||
|
||
class base_request{
|
||
|
||
var $request_params = array();
|
||
|
||
/**
|
||
* 设置_params
|
||
* @param mixed $request_params 参数
|
||
* @return mixed 返回操作结果
|
||
*/
|
||
public function set_params($request_params){
|
||
$this->request_params = $request_params;
|
||
}
|
||
|
||
static function get_base_url(){
|
||
$filename = (isset($_SERVER['SCRIPT_FILENAME'])) ? basename($_SERVER['SCRIPT_FILENAME']) : '';
|
||
if (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $filename) {
|
||
$base_url = $_SERVER['ORIG_SCRIPT_NAME'];
|
||
} elseif (isset($_SERVER['SCRIPT_NAME']) && basename($_SERVER['SCRIPT_NAME']) === $filename) {
|
||
$base_url = $_SERVER['SCRIPT_NAME'];
|
||
} elseif (isset($_SERVER['PHP_SELF']) && basename($_SERVER['PHP_SELF']) === $filename) {
|
||
$base_url = $_SERVER['PHP_SELF'];
|
||
} else {
|
||
$path = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '';
|
||
$file = isset($_SERVER['SCRIPT_FILENAME']) ? $_SERVER['SCRIPT_FILENAME'] : '';
|
||
$segs = explode('/', trim($file, '/'));
|
||
$segs = array_reverse($segs);
|
||
$index = 0;
|
||
$last = count($segs);
|
||
$base_url = '';
|
||
do {
|
||
$seg = $segs[$index];
|
||
$base_url = '/' . $seg . $base_url;
|
||
++$index;
|
||
} while (($last > $index) && (false !== ($pos = strpos($path, $base_url))) && (0 != $pos));
|
||
}
|
||
|
||
$request_uri = self::get_request_uri();
|
||
if (0 === strpos($request_uri, $base_url)) {
|
||
return self::dirname($base_url);
|
||
}
|
||
if (0 === strpos($request_uri, strstr(PHP_OS, "WIN") ? str_replace('\\', '/', dirname($base_url)) : dirname($base_url))) {
|
||
return self::dirname($base_url);
|
||
}
|
||
|
||
$truncatedrequest_uri = $request_uri;
|
||
if (($pos = strpos($request_uri, '?')) !== false) {
|
||
$truncatedrequest_uri = substr($request_uri, 0, $pos);
|
||
}
|
||
|
||
$basename = basename($base_url);
|
||
if (empty($basename) || !strpos($truncatedrequest_uri, $basename)) {
|
||
return;
|
||
}
|
||
|
||
if ((strlen($request_uri) >= strlen($base_url))
|
||
&& ((false !== ($pos = strpos($request_uri, $base_url))) && ($pos !== 0))) {
|
||
$base_url = substr($request_uri, 0, $pos + strlen($base_url));
|
||
}
|
||
return rtrim(self::dirname($base_url), '/');
|
||
}
|
||
|
||
static function get_path_info() {
|
||
$path_info = '';
|
||
if (isset($_SERVER['PATH_INFO'])) {
|
||
$path_info = $_SERVER['PATH_INFO'];
|
||
}elseif(isset($_SERVER['ORIG_PATH_INFO'])){
|
||
$path_info = $_SERVER['ORIG_PATH_INFO'];
|
||
$script_name = self::get_script_name();
|
||
if(substr($script_name, -1, 1) == '/'){
|
||
$path_info = $path_info . '/';
|
||
}
|
||
}else{
|
||
$script_name = self::get_script_name();
|
||
$script_dir = preg_replace('/[^\/]+$/', '', $script_name);
|
||
$request_uri = self::get_request_uri();
|
||
$urlinfo = parse_url($request_uri);
|
||
if ( strpos($urlinfo['path'], $script_name) === 0) {
|
||
$path_info = substr($urlinfo['path'], strlen($script_name));
|
||
} elseif ( strpos($urlinfo['path'], $script_dir) === 0 ) {
|
||
$path_info = substr($urlinfo['path'], strlen($script_dir));
|
||
}
|
||
}
|
||
if($path_info){
|
||
$path_info = "/".ltrim($path_info,"/");
|
||
}
|
||
return $path_info;
|
||
}
|
||
|
||
static function get_script_name() {
|
||
return isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : (isset($_SERVER['ORIG_SCRIPT_NAME']) ? $_SERVER['ORIG_SCRIPT_NAME'] : '');
|
||
}
|
||
|
||
static function get_request_uri() {
|
||
if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
|
||
return $_SERVER['HTTP_X_REWRITE_URL'];
|
||
} elseif (isset($_SERVER['REQUEST_URI'])) {
|
||
return $_SERVER['REQUEST_URI'];
|
||
} elseif (isset($_SERVER['ORIG_PATH_INFO'])) {
|
||
return $_SERVER['ORIG_PATH_INFO'] . (!empty($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : '');
|
||
}
|
||
}
|
||
|
||
static function get_host() {
|
||
$host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '');
|
||
//$host = $_SERVER['HTTP_HOST'];
|
||
if (!empty($host)) {
|
||
return $host;
|
||
}
|
||
|
||
$scheme = self::get_schema();
|
||
$name = self::get_name();
|
||
$port = self::get_port();
|
||
|
||
if (($scheme == "HTTP" && $port == 80) || ($scheme == "HTTPS" && $port == 443)) {
|
||
return $name;
|
||
} else {
|
||
return $name . ':' . $port;
|
||
}
|
||
}
|
||
|
||
static function get_name()
|
||
{
|
||
return $_SERVER['SERVER_NAME'];
|
||
}//End Function
|
||
|
||
static function get_schema()
|
||
{
|
||
if (defined('WITH_HTTPS_SUPPORT') && strtolower(WITH_HTTPS_SUPPORT) == 'on') {
|
||
return "HTTPS";
|
||
}else{
|
||
return ($_SERVER['HTTPS'] == 'on') ? "HTTPS" : "HTTP";
|
||
}
|
||
}//End Function
|
||
|
||
static function get_port()
|
||
{
|
||
return $_SERVER['SERVER_PORT'];
|
||
}//End Function
|
||
|
||
static function get_remote_addr(){
|
||
if(!isset($GLOBALS['_REMOTE_ADDR_'])){
|
||
$addrs = array();
|
||
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
|
||
foreach( array_reverse( explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) as $x_f ) {
|
||
$x_f = trim($x_f);
|
||
if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $x_f ) ) {
|
||
$addrs[] = $x_f;
|
||
}
|
||
}
|
||
}
|
||
$GLOBALS['_REMOTE_ADDR_'] = isset($addrs[0])?$addrs[0]:$_SERVER['REMOTE_ADDR'];
|
||
}
|
||
return $GLOBALS['_REMOTE_ADDR_'];
|
||
}
|
||
|
||
static function dirname($dir){
|
||
return substr($dir,0,strrpos($dir,"/"));
|
||
}
|
||
}
|