You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
4.1 KiB
150 lines
4.1 KiB
<?php |
|
/** |
|
* Request class file. |
|
* |
|
* @link http://www.yiiframework.com/ |
|
* @copyright Copyright © 2008-2012 Yii Software LLC |
|
* @license http://www.yiiframework.com/license/ |
|
*/ |
|
|
|
namespace yii\base; |
|
|
|
/** |
|
* @author Qiang Xue <qiang.xue@gmail.com> |
|
* @since 2.0 |
|
*/ |
|
class Request extends ApplicationComponent |
|
{ |
|
private $_scriptFile; |
|
|
|
/** |
|
* Initializes the application component. |
|
* This method overrides the parent implementation by preprocessing |
|
* the user request data. |
|
*/ |
|
public function init() |
|
{ |
|
} |
|
|
|
/** |
|
* Returns the relative URL of the entry script. |
|
* The implementation of this method referenced Zend_Controller_Request_Http in Zend Framework. |
|
* @return string the relative URL of the entry script. |
|
*/ |
|
public function getScriptUrl() |
|
{ |
|
if($this->_scriptUrl===null) |
|
{ |
|
$scriptName=basename($_SERVER['SCRIPT_FILENAME']); |
|
if(basename($_SERVER['SCRIPT_NAME'])===$scriptName) |
|
$this->_scriptUrl=$_SERVER['SCRIPT_NAME']; |
|
else if(basename($_SERVER['PHP_SELF'])===$scriptName) |
|
$this->_scriptUrl=$_SERVER['PHP_SELF']; |
|
else if(isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME'])===$scriptName) |
|
$this->_scriptUrl=$_SERVER['ORIG_SCRIPT_NAME']; |
|
else if(($pos=strpos($_SERVER['PHP_SELF'],'/'.$scriptName))!==false) |
|
$this->_scriptUrl=substr($_SERVER['SCRIPT_NAME'],0,$pos).'/'.$scriptName; |
|
else if(isset($_SERVER['DOCUMENT_ROOT']) && strpos($_SERVER['SCRIPT_FILENAME'],$_SERVER['DOCUMENT_ROOT'])===0) |
|
$this->_scriptUrl=str_replace('\\','/',str_replace($_SERVER['DOCUMENT_ROOT'],'',$_SERVER['SCRIPT_FILENAME'])); |
|
else |
|
throw new Exception(Yii::t('yii','CHttpRequest is unable to determine the entry script URL.')); |
|
} |
|
return $this->_scriptUrl; |
|
} |
|
|
|
/** |
|
* Sets the relative URL for the application entry script. |
|
* This setter is provided in case the entry script URL cannot be determined |
|
* on certain Web servers. |
|
* @param string $value the relative URL for the application entry script. |
|
*/ |
|
public function setScriptUrl($value) |
|
{ |
|
$this->_scriptUrl='/'.trim($value,'/'); |
|
} |
|
|
|
/** |
|
* Returns whether this is an AJAX (XMLHttpRequest) request. |
|
* @return boolean whether this is an AJAX (XMLHttpRequest) request. |
|
*/ |
|
public function getIsAjaxRequest() |
|
{ |
|
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest'; |
|
} |
|
|
|
/** |
|
* Returns whether this is an Adobe Flash or Adobe Flex request. |
|
* @return boolean whether this is an Adobe Flash or Adobe Flex request. |
|
* @since 1.1.11 |
|
*/ |
|
public function getIsFlashRequest() |
|
{ |
|
return isset($_SERVER['HTTP_USER_AGENT']) && (stripos($_SERVER['HTTP_USER_AGENT'],'Shockwave')!==false || stripos($_SERVER['HTTP_USER_AGENT'],'Flash')!==false); |
|
} |
|
|
|
/** |
|
* Returns the server name. |
|
* @return string server name |
|
*/ |
|
public function getServerName() |
|
{ |
|
return $_SERVER['SERVER_NAME']; |
|
} |
|
|
|
/** |
|
* Returns the server port number. |
|
* @return integer server port number |
|
*/ |
|
public function getServerPort() |
|
{ |
|
return $_SERVER['SERVER_PORT']; |
|
} |
|
|
|
/** |
|
* Returns the URL referrer, null if not present |
|
* @return string URL referrer, null if not present |
|
*/ |
|
public function getUrlReferrer() |
|
{ |
|
return isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:null; |
|
} |
|
|
|
/** |
|
* Returns the user agent, null if not present. |
|
* @return string user agent, null if not present |
|
*/ |
|
public function getUserAgent() |
|
{ |
|
return isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:null; |
|
} |
|
|
|
/** |
|
* Returns the user IP address. |
|
* @return string user IP address |
|
*/ |
|
public function getUserHostAddress() |
|
{ |
|
return isset($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:'127.0.0.1'; |
|
} |
|
|
|
/** |
|
* Returns the user host name, null if it cannot be determined. |
|
* @return string user host name, null if cannot be determined |
|
*/ |
|
public function getUserHost() |
|
{ |
|
return isset($_SERVER['REMOTE_HOST'])?$_SERVER['REMOTE_HOST']:null; |
|
} |
|
|
|
/** |
|
* Returns entry script file path. |
|
* @return string entry script file path (processed w/ realpath()) |
|
*/ |
|
public function getScriptFile() |
|
{ |
|
if($this->_scriptFile!==null) |
|
return $this->_scriptFile; |
|
else |
|
return $this->_scriptFile=realpath($_SERVER['SCRIPT_FILENAME']); |
|
} |
|
}
|
|
|