CHttpRequest

优质
小牛编辑
130浏览
2023-12-01
所有包 | 属性 | 方法
system.web
继承class CHttpRequest » CApplicationComponent » CComponent
实现IApplicationComponent
源自1.0
版本$Id: CHttpRequest.php 3560 2012-02-10 14:13:00Z mdomba $
源码framework/web/CHttpRequest.php
CHttpRequest encapsulates the $_SERVER variable and resolves its inconsistency among different Web servers.

CHttpRequest also manages the cookies sent from and sent to the user. By setting enableCookieValidation to true, cookies sent from the user will be validated to see if they are tampered. The property cookies returns the collection of cookies. For more details, see CCookieCollection.

CHttpRequest is a default application component loaded by CWebApplication. It can be accessed via CWebApplication::getRequest().

公共属性

隐藏继承属性

属性类型描述定义在
acceptTypesstringReturns user browser accept types, null if not present.CHttpRequest
baseUrlstringReturns the relative URL for the application.CHttpRequest
behaviorsarray这个应用组件附加的行为。 这此行为将在应用组件调用init时附加在应用组件上。 请参照CModel::behaviors如何指定此属性值。CApplicationComponent
browserarrayReturns information about the capabilities of user browser.CHttpRequest
cookiesCCookieCollectionReturns the cookie collection.CHttpRequest
csrfCookiearraythe property values (in name-value pairs) used to initialize the CSRF cookie.CHttpRequest
csrfTokenstringReturns the random token used to perform CSRF validation.CHttpRequest
csrfTokenNamestringthe name of the token used to prevent CSRF.CHttpRequest
enableCookieValidationbooleanwhether cookies should be validated to ensure they are not tampered.CHttpRequest
enableCsrfValidationbooleanwhether to enable CSRF (Cross-Site Request Forgery) validation.CHttpRequest
hostInfostringReturns the schema and host part of the application URL.CHttpRequest
isAjaxRequestbooleanReturns whether this is an AJAX (XMLHttpRequest) request.CHttpRequest
isDeleteRequestbooleanReturns whether this is a DELETE request.CHttpRequest
isInitializedboolean检查应用组件是否已经初始化。CApplicationComponent
isPostRequestbooleanReturns whether this is a POST request.CHttpRequest
isPutRequestbooleanReturns whether this is a PUT request.CHttpRequest
isSecureConnectionbooleanReturn if the request is sent via secure channel (https).CHttpRequest
pathInfostringReturns the path info of the currently requested URL.CHttpRequest
portintegerReturns the port to use for insecure requests.CHttpRequest
preferredLanguagestringReturns the user preferred language.CHttpRequest
queryStringstringReturns part of the request URL that is after the question mark.CHttpRequest
requestTypestringReturns the request type, such as GET, POST, HEAD, PUT, DELETE.CHttpRequest
requestUristringReturns the request URI portion for the currently requested URL.CHttpRequest
scriptFilestringReturns entry script file path.CHttpRequest
scriptUrlstringReturns the relative URL of the entry script.CHttpRequest
securePortintegerReturns the port to use for secure requests.CHttpRequest
serverNamestringReturns the server name.CHttpRequest
serverPortintegerReturns the server port number.CHttpRequest
urlstringReturns the currently requested URL.CHttpRequest
urlReferrerstringReturns the URL referrer, null if not presentCHttpRequest
userAgentstringReturns the user agent, null if not present.CHttpRequest
userHoststringReturns the user host name, null if it cannot be determined.CHttpRequest
userHostAddressstringReturns the user IP address.CHttpRequest

受保护属性

隐藏继承属性

属性类型描述定义在
restParamsarrayReturns the PUT or DELETE request parameters.CHttpRequest

公共方法

隐藏继承方法

方法描述定义在
__call()如果类中没有调的方法名,则调用这个方法。CComponent
__get()返回一个属性值、一个事件处理程序列表或一个行为名称。CComponent
__isset()检查一个属性是否为null。CComponent
__set()设置一个组件的属性值。CComponent
__unset()设置一个组件的属性为null。CComponent
asa()返回这个名字的行为对象。CComponent
attachBehavior()附加一个行为到组件。CComponent
attachBehaviors()附加一个行为列表到组件。CComponent
attachEventHandler()为事件附加一个事件处理程序。CComponent
canGetProperty()确定属性是否可读。CComponent
canSetProperty()确定属性是否可写。CComponent
detachBehavior()从组件中分离一个行为。CComponent
detachBehaviors()从组件中分离所有行为。CComponent
detachEventHandler()分离一个存在的事件处理程序。CComponent
disableBehavior()禁用一个附加行为。CComponent
disableBehaviors()禁用组件附加的所有行为。CComponent
enableBehavior()启用一个附加行为。CComponent
enableBehaviors()启用组件附加的所有行为。CComponent
evaluateExpression()计算一个PHP表达式,或根据组件上下文执行回调。CComponent
getAcceptTypes()Returns user browser accept types, null if not present.CHttpRequest
getBaseUrl()Returns the relative URL for the application.CHttpRequest
getBrowser()Returns information about the capabilities of user browser.CHttpRequest
getCookies()Returns the cookie collection.CHttpRequest
getCsrfToken()Returns the random token used to perform CSRF validation.CHttpRequest
getDelete()Returns the named DELETE parameter value.CHttpRequest
getEventHandlers()返回一个事件的附加处理程序列表。CComponent
getHostInfo()Returns the schema and host part of the application URL.CHttpRequest
getIsAjaxRequest()Returns whether this is an AJAX (XMLHttpRequest) request.CHttpRequest
getIsDeleteRequest()Returns whether this is a DELETE request.CHttpRequest
getIsInitialized()检查应用组件是否已经初始化。CApplicationComponent
getIsPostRequest()Returns whether this is a POST request.CHttpRequest
getIsPutRequest()Returns whether this is a PUT request.CHttpRequest
getIsSecureConnection()Return if the request is sent via secure channel (https).CHttpRequest
getParam()Returns the named GET or POST parameter value.CHttpRequest
getPathInfo()Returns the path info of the currently requested URL.CHttpRequest
getPort()Returns the port to use for insecure requests.CHttpRequest
getPost()Returns the named POST parameter value.CHttpRequest
getPreferredLanguage()Returns the user preferred language.CHttpRequest
getPut()Returns the named PUT parameter value.CHttpRequest
getQuery()Returns the named GET parameter value.CHttpRequest
getQueryString()Returns part of the request URL that is after the question mark.CHttpRequest
getRequestType()Returns the request type, such as GET, POST, HEAD, PUT, DELETE.CHttpRequest
getRequestUri()Returns the request URI portion for the currently requested URL.CHttpRequest
getScriptFile()Returns entry script file path.CHttpRequest
getScriptUrl()Returns the relative URL of the entry script.CHttpRequest
getSecurePort()Returns the port to use for secure requests.CHttpRequest
getServerName()Returns the server name.CHttpRequest
getServerPort()Returns the server port number.CHttpRequest
getUrl()Returns the currently requested URL.CHttpRequest
getUrlReferrer()Returns the URL referrer, null if not presentCHttpRequest
getUserAgent()Returns the user agent, null if not present.CHttpRequest
getUserHost()Returns the user host name, null if it cannot be determined.CHttpRequest
getUserHostAddress()Returns the user IP address.CHttpRequest
hasEvent()确定一个事件是否定义。CComponent
hasEventHandler()检查事件是否有附加的处理程序。CComponent
hasProperty()确定属性是否被定义。CComponent
init()Initializes the application component.CHttpRequest
raiseEvent()发起一个事件。CComponent
redirect()Redirects the browser to the specified URL.CHttpRequest
sendFile()Sends a file to user.CHttpRequest
setBaseUrl()Sets the relative URL for the application.CHttpRequest
setHostInfo()Sets the schema and host part of the application URL.CHttpRequest
setPort()Sets the port to use for insecure requests.CHttpRequest
setScriptUrl()Sets the relative URL for the application entry script.CHttpRequest
setSecurePort()Sets the port to use for secure requests.CHttpRequest
stripSlashes()Strips slashes from input data.CHttpRequest
validateCsrfToken()Performs the CSRF validation.CHttpRequest
xSendFile()Sends existing file to a browser as a download using x-sendfile.CHttpRequest

受保护方法

隐藏继承方法

方法描述定义在
createCsrfCookie()Creates a cookie with a randomly generated CSRF token.CHttpRequest
decodePathInfo()Decodes the path info.CHttpRequest
getRestParams()Returns the PUT or DELETE request parameters.CHttpRequest
normalizeRequest()Normalizes the request data.CHttpRequest

属性详细

acceptTypes 属性 只读 public string getAcceptTypes()

Returns user browser accept types, null if not present.

baseUrl 属性 public string getBaseUrl(boolean $absolute=false)
public void setBaseUrl(string $value)

Returns the relative URL for the application. This is similar to scriptUrl except that it does not have the script file name, and the ending slashes are stripped off.

参见

  • setScriptUrl
browser 属性 只读 public array getBrowser(string $userAgent=NULL)

Returns information about the capabilities of user browser.

参见

  • http://www.php.net/manual/en/function.get-browser.php
cookies 属性 只读 public CCookieCollection getCookies()

Returns the cookie collection. The result can be used like an associative array. Adding CHttpCookie objects to the collection will send the cookies to the client; and removing the objects from the collection will delete those cookies on the client.

csrfCookie 属性 public array $csrfCookie;

the property values (in name-value pairs) used to initialize the CSRF cookie. Any property of CHttpCookie may be initialized. This property is effective only when enableCsrfValidation is true.

csrfToken 属性 只读 public string getCsrfToken()

Returns the random token used to perform CSRF validation. The token will be read from cookie first. If not found, a new token will be generated.

参见

  • enableCsrfValidation
csrfTokenName 属性 public string $csrfTokenName;

the name of the token used to prevent CSRF. Defaults to 'YII_CSRF_TOKEN'. This property is effectively only when enableCsrfValidation is true.

enableCookieValidation 属性 public boolean $enableCookieValidation;

whether cookies should be validated to ensure they are not tampered. Defaults to false.

enableCsrfValidation 属性 public boolean $enableCsrfValidation;

whether to enable CSRF (Cross-Site Request Forgery) validation. Defaults to false. By setting this property to true, forms submitted to an Yii Web application must be originated from the same application. If not, a 400 HTTP exception will be raised. Note, this feature requires that the user client accepts cookie. You also need to use CHtml::form or CHtml::statefulForm to generate the needed HTML forms in your pages.

参见

  • http://seclab.stanford.edu/websec/csrf/csrf.pdf
hostInfo 属性 public string getHostInfo(string $schema='')
public void setHostInfo(string $value)

Returns the schema and host part of the application URL. The returned URL does not have an ending slash. By default this is determined based on the user request information. You may explicitly specify it by setting the hostInfo property.

参见

  • setHostInfo
isAjaxRequest 属性 只读 public boolean getIsAjaxRequest()

Returns whether this is an AJAX (XMLHttpRequest) request.

isDeleteRequest 属性 只读 (可用自 v1.1.7) public boolean getIsDeleteRequest()

Returns whether this is a DELETE request.

isPostRequest 属性 只读 public boolean getIsPostRequest()

Returns whether this is a POST request.

isPutRequest 属性 只读 (可用自 v1.1.7) public boolean getIsPutRequest()

Returns whether this is a PUT request.

isSecureConnection 属性 只读 public boolean getIsSecureConnection()

Return if the request is sent via secure channel (https).

pathInfo 属性 只读 public string getPathInfo()

Returns the path info of the currently requested URL. This refers to the part that is after the entry script and before the question mark. The starting and ending slashes are stripped off.

port 属性 (可用自 v1.1.3) public integer getPort()
public void setPort(integer $value)

Returns the port to use for insecure requests. Defaults to 80, or the port specified by the server if the current request is insecure. You may explicitly specify it by setting the port property.

参见

  • setPort
preferredLanguage 属性 只读 public string getPreferredLanguage()

Returns the user preferred language. The returned language ID will be canonicalized using CLocale::getCanonicalID. This method returns false if the user does not have language preference.

queryString 属性 只读 public string getQueryString()

Returns part of the request URL that is after the question mark.

requestType 属性 只读 public string getRequestType()

Returns the request type, such as GET, POST, HEAD, PUT, DELETE.

requestUri 属性 只读 public string getRequestUri()

Returns the request URI portion for the currently requested URL. This refers to the portion that is after the host info part. It includes the query string part if any. The implementation of this method referenced Zend_Controller_Request_Http in Zend Framework.

restParams 属性 只读 (可用自 v1.1.7) protected array getRestParams()

Returns the PUT or DELETE request parameters.

scriptFile 属性 只读 public string getScriptFile()

Returns entry script file path.

scriptUrl 属性 public string getScriptUrl()
public void setScriptUrl(string $value)

Returns the relative URL of the entry script. The implementation of this method referenced Zend_Controller_Request_Http in Zend Framework.

securePort 属性 (可用自 v1.1.3) public integer getSecurePort()
public void setSecurePort(integer $value)

Returns the port to use for secure requests. Defaults to 443, or the port specified by the server if the current request is secure. You may explicitly specify it by setting the securePort property.

参见

  • setSecurePort
serverName 属性 只读 public string getServerName()

Returns the server name.

serverPort 属性 只读 public integer getServerPort()

Returns the server port number.

url 属性 只读 public string getUrl()

Returns the currently requested URL. This is the same as getRequestUri.

urlReferrer 属性 只读 public string getUrlReferrer()

Returns the URL referrer, null if not present

userAgent 属性 只读 public string getUserAgent()

Returns the user agent, null if not present.

userHost 属性 只读 public string getUserHost()

Returns the user host name, null if it cannot be determined.

userHostAddress 属性 只读 public string getUserHostAddress()

Returns the user IP address.

方法详细

createCsrfCookie() 方法
protected CHttpCookie createCsrfCookie()
{return}CHttpCookiethe generated cookie
源码: framework/web/CHttpRequest.php#895 (显示) protectedfunctioncreateCsrfCookie()
{
$cookie=newCHttpCookie($this->csrfTokenName,sha1(uniqid(mt_rand(),true)));
if(is_array($this->csrfCookie))
{
foreach($this->csrfCookieas$name=>$value)
$cookie->$name=$value;
}
return$cookie;
}

Creates a cookie with a randomly generated CSRF token. Initial values specified in csrfCookie will be applied to the generated cookie.

参见

  • enableCsrfValidation
decodePathInfo() 方法 (可用自 v1.1.10)
protected string decodePathInfo(string $pathInfo)
$pathInfostringencoded path info
{return}stringdecoded path info
源码: framework/web/CHttpRequest.php#412 (显示) protectedfunctiondecodePathInfo($pathInfo)
{
$pathInfo=urldecode($pathInfo);

//isitUTF-8?
//http://w3.org/International/questions/qa-forms-utf-8.html
if(preg_match('%^(?:
[x09x0Ax0Dx20-x7E]#ASCII
|[xC2-xDF][x80-xBF]#non-overlong2-byte
|xE0[xA0-xBF][x80-xBF]#excludingoverlongs
|[xE1-xECxEExEF][x80-xBF]{2}#straight3-byte
|xED[x80-x9F][x80-xBF]#excludingsurrogates
|xF0[x90-xBF][x80-xBF]{2}#planes1-3
|[xF1-xF3][x80-xBF]{3}#planes4-15
|xF4[x80-x8F][x80-xBF]{2}#plane16
)*$%xs',$pathInfo))
{
return$pathInfo;
}
else
{
returnutf8_encode($pathInfo);
}
}

Decodes the path info. This method is an improved variant of the native urldecode() function and used in getPathInfo() to decode the path part of the request URI. You may override this method to change the way the path info is being decoded.

getAcceptTypes() 方法
public string getAcceptTypes()
{return}stringuser browser accept types, null if not present
源码: framework/web/CHttpRequest.php#622 (显示) publicfunctiongetAcceptTypes()
{
returnisset($_SERVER['HTTP_ACCEPT'])?$_SERVER['HTTP_ACCEPT']:null;
}

Returns user browser accept types, null if not present.

getBaseUrl() 方法
public string getBaseUrl(boolean $absolute=false)
$absolutebooleanwhether to return an absolute URL. Defaults to false, meaning returning a relative one.
{return}stringthe relative URL for the application
源码: framework/web/CHttpRequest.php#312 (显示) publicfunctiongetBaseUrl($absolute=false)
{
if($this->_baseUrl===null)
$this->_baseUrl=rtrim(dirname($this->getScriptUrl()),'\/');
return$absolute?$this->getHostInfo().$this->_baseUrl:$this->_baseUrl;
}

Returns the relative URL for the application. This is similar to scriptUrl except that it does not have the script file name, and the ending slashes are stripped off.

参见

  • setScriptUrl
getBrowser() 方法
public array getBrowser(string $userAgent=NULL)
$userAgentstringthe user agent to be analyzed. Defaults to null, meaning using the current User-Agent HTTP header information.
{return}arrayuser browser capabilities.
源码: framework/web/CHttpRequest.php#613 (显示) publicfunctiongetBrowser($userAgent=null)
{
returnget_browser($userAgent,true);
}

Returns information about the capabilities of user browser.

参见

  • http://www.php.net/manual/en/function.get-browser.php
getCookies() 方法
public CCookieCollection getCookies()
{return}CCookieCollectionthe cookie collection.
源码: framework/web/CHttpRequest.php#696 (显示) publicfunctiongetCookies()
{
if($this->_cookies!==null)
return$this->_cookies;
else
return$this->_cookies=newCCookieCollection($this);
}

Returns the cookie collection. The result can be used like an associative array. Adding CHttpCookie objects to the collection will send the cookies to the client; and removing the objects from the collection will delete those cookies on the client.

getCsrfToken() 方法
public string getCsrfToken()
{return}stringthe random token for CSRF validation.
源码: framework/web/CHttpRequest.php#872 (显示) publicfunctiongetCsrfToken()
{
if($this->_csrfToken===null)
{
$cookie=$this->getCookies()->itemAt($this->csrfTokenName);
if(!$cookie||($this->_csrfToken=$cookie->value)==null)
{
$cookie=$this->createCsrfCookie();
$this->_csrfToken=$cookie->value;
$this->getCookies()->add($cookie->name,$cookie);
}
}

return$this->_csrfToken;
}

Returns the random token used to perform CSRF validation. The token will be read from cookie first. If not found, a new token will be generated.

参见

  • enableCsrfValidation
getDelete() 方法 (可用自 v1.1.7)
public mixed getDelete(string $name, mixed $defaultValue=NULL)
$namestringthe DELETE parameter name
$defaultValuemixedthe default parameter value if the DELETE parameter does not exist.
{return}mixedthe DELETE parameter value
源码: framework/web/CHttpRequest.php#199 (显示) publicfunctiongetDelete($name,$defaultValue=null)
{
if($this->_deleteParams===null)
$this->_deleteParams=$this->getIsDeleteRequest()?$this->getRestParams():array();
returnisset($this->_deleteParams[$name])?$this->_deleteParams[$name]:$defaultValue;
}

Returns the named DELETE parameter value. If the DELETE parameter does not exist or if the current request is not a DELETE request, the second parameter to this method will be returned.

getHostInfo() 方法
public string getHostInfo(string $schema='')
$schemastringschema to use (e.g. http, https). If empty, the schema used for the current request will be used.
{return}stringschema and hostname part (with port number if needed) of the request URL (e.g. http://www.yiiframework.com)
源码: framework/web/CHttpRequest.php#256 (显示) publicfunctiongetHostInfo($schema='')
{
if($this->_hostInfo===null)
{
if($secure=$this->getIsSecureConnection())
$http='https';
else
$http='http';
if(isset($_SERVER['HTTP_HOST']))
$this->_hostInfo=$http.'://'.$_SERVER['HTTP_HOST'];
else
{
$this->_hostInfo=$http.'://'.$_SERVER['SERVER_NAME'];
$port=$secure?$this->getSecurePort():$this->getPort();
if(($port!==80&&!$secure)||($port!==443&&$secure))
$this->_hostInfo.=':'.$port;
}
}
if($schema!=='')
{
$secure=$this->getIsSecureConnection();
if($secure&&$schema==='https'||!$secure&&$schema==='http')
return$this->_hostInfo;

$port=$schema==='https'?$this->getSecurePort():$this->getPort();
if($port!==80&&$schema==='http'||$port!==443&&$schema==='https')
$port=':'.$port;
else
$port='';

$pos=strpos($this->_hostInfo,':');
return$schema.substr($this->_hostInfo,$pos,strcspn($this->_hostInfo,':',$pos+1)+1).$port;
}
else
return$this->_hostInfo;
}

Returns the schema and host part of the application URL. The returned URL does not have an ending slash. By default this is determined based on the user request information. You may explicitly specify it by setting the hostInfo property.

参见

  • setHostInfo
getIsAjaxRequest() 方法
public boolean getIsAjaxRequest()
{return}booleanwhether this is an AJAX (XMLHttpRequest) request.
源码: framework/web/CHttpRequest.php#535 (显示) publicfunctiongetIsAjaxRequest()
{
returnisset($_SERVER['HTTP_X_REQUESTED_WITH'])&&$_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';
}

Returns whether this is an AJAX (XMLHttpRequest) request.

getIsDeleteRequest() 方法 (可用自 v1.1.7)
public boolean getIsDeleteRequest()
{return}booleanwhether this is a DELETE request.
源码: framework/web/CHttpRequest.php#516 (显示) publicfunctiongetIsDeleteRequest()
{
returnisset($_SERVER['REQUEST_METHOD'])&&!strcasecmp($_SERVER['REQUEST_METHOD'],'DELETE');
}

Returns whether this is a DELETE request.

getIsPostRequest() 方法
public boolean getIsPostRequest()
{return}booleanwhether this is a POST request.
源码: framework/web/CHttpRequest.php#506 (显示) publicfunctiongetIsPostRequest()
{
returnisset($_SERVER['REQUEST_METHOD'])&&!strcasecmp($_SERVER['REQUEST_METHOD'],'POST');
}

Returns whether this is a POST request.

getIsPutRequest() 方法 (可用自 v1.1.7)
public boolean getIsPutRequest()
{return}booleanwhether this is a PUT request.
源码: framework/web/CHttpRequest.php#526 (显示) publicfunctiongetIsPutRequest()
{
returnisset($_SERVER['REQUEST_METHOD'])&&!strcasecmp($_SERVER['REQUEST_METHOD'],'PUT');
}

Returns whether this is a PUT request.

getIsSecureConnection() 方法
public boolean getIsSecureConnection()
{return}booleanif the request is sent via secure channel (https)
源码: framework/web/CHttpRequest.php#488 (显示) publicfunctiongetIsSecureConnection()
{
returnisset($_SERVER['HTTPS'])&&!strcasecmp($_SERVER['HTTPS'],'on');
}

Return if the request is sent via secure channel (https).

getParam() 方法
public mixed getParam(string $name, mixed $defaultValue=NULL)
$namestringthe GET parameter name
$defaultValuemixedthe default parameter value if the GET parameter does not exist.
{return}mixedthe GET parameter value
源码: framework/web/CHttpRequest.php#157 (显示) publicfunctiongetParam($name,$defaultValue=null)
{
returnisset($_GET[$name])?$_GET[$name]:(isset($_POST[$name])?$_POST[$name]:$defaultValue);
}

Returns the named GET or POST parameter value. If the GET or POST parameter does not exist, the second parameter to this method will be returned. If both GET and POST contains such a named parameter, the GET parameter takes precedence.

参见

  • getQuery
  • getPost
getPathInfo() 方法
public string getPathInfo()
{return}stringpart of the request URL that is after the entry script and before the question mark. Note, the returned pathinfo is decoded starting from 1.1.4. Prior to 1.1.4, whether it is decoded or not depends on the server configuration (in most cases it is not decoded).
源码: framework/web/CHttpRequest.php#377 (显示) publicfunctiongetPathInfo()
{
if($this->_pathInfo===null)
{
$pathInfo=$this->getRequestUri();

if(($pos=strpos($pathInfo,'?'))!==false)
$pathInfo=substr($pathInfo,0,$pos);

$pathInfo=$this->decodePathInfo($pathInfo);

$scriptUrl=$this->getScriptUrl();
$baseUrl=$this->getBaseUrl();
if(strpos($pathInfo,$scriptUrl)===0)
$pathInfo=substr($pathInfo,strlen($scriptUrl));
elseif($baseUrl===''||strpos($pathInfo,$baseUrl)===0)
$pathInfo=substr($pathInfo,strlen($baseUrl));
elseif(strpos($_SERVER['PHP_SELF'],$scriptUrl)===0)
$pathInfo=substr($_SERVER['PHP_SELF'],strlen($scriptUrl));
else
thrownewCException(Yii::t('yii','CHttpRequestisunabletodeterminethepathinfooftherequest.'));

$this->_pathInfo=trim($pathInfo,'/');
}
return$this->_pathInfo;
}

Returns the path info of the currently requested URL. This refers to the part that is after the entry script and before the question mark. The starting and ending slashes are stripped off.

getPort() 方法 (可用自 v1.1.3)
public integer getPort()
{return}integerport number for insecure requests.
源码: framework/web/CHttpRequest.php#638 (显示) publicfunctiongetPort()
{
if($this->_port===null)
$this->_port=!$this->getIsSecureConnection()&&isset($_SERVER['SERVER_PORT'])?(int)$_SERVER['SERVER_PORT']:80;
return$this->_port;
}

Returns the port to use for insecure requests. Defaults to 80, or the port specified by the server if the current request is insecure. You may explicitly specify it by setting the port property.

参见

  • setPort
getPost() 方法
public mixed getPost(string $name, mixed $defaultValue=NULL)
$namestringthe POST parameter name
$defaultValuemixedthe default parameter value if the POST parameter does not exist.
{return}mixedthe POST parameter value
源码: framework/web/CHttpRequest.php#185 (显示) publicfunctiongetPost($name,$defaultValue=null)
{
returnisset($_POST[$name])?$_POST[$name]:$defaultValue;
}

Returns the named POST parameter value. If the POST parameter does not exist, the second parameter to this method will be returned.

参见

  • getParam
  • getQuery
getPreferredLanguage() 方法
public string getPreferredLanguage()
{return}stringthe user preferred language.
源码: framework/web/CHttpRequest.php#727 (显示) publicfunctiongetPreferredLanguage()
{
if($this->_preferredLanguage===null)
{
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])&&($n=preg_match_all('/([w-_]+)s*(;s*qs*=s*(d*.d*))?/',$_SERVER['HTTP_ACCEPT_LANGUAGE'],$matches))>0)
{
$languages=array();
for($i=0;$i<$n;++$i)
$languages[$matches[1][$i]]=empty($matches[3][$i])?1.0:floatval($matches[3][$i]);
arsort($languages);
foreach($languagesas$language=>$pref)
return$this->_preferredLanguage=CLocale::getCanonicalID($language);
}
return$this->_preferredLanguage=false;
}
return$this->_preferredLanguage;
}

Returns the user preferred language. The returned language ID will be canonicalized using CLocale::getCanonicalID. This method returns false if the user does not have language preference.

getPut() 方法 (可用自 v1.1.7)
public mixed getPut(string $name, mixed $defaultValue=NULL)
$namestringthe PUT parameter name
$defaultValuemixedthe default parameter value if the PUT parameter does not exist.
{return}mixedthe PUT parameter value
源码: framework/web/CHttpRequest.php#215 (显示) publicfunctiongetPut($name,$defaultValue=null)
{
if($this->_putParams===null)
$this->_putParams=$this->getIsPutRequest()?$this->getRestParams():array();
returnisset($this->_putParams[$name])?$this->_putParams[$name]:$defaultValue;
}

Returns the named PUT parameter value. If the PUT parameter does not exist or if the current request is not a PUT request, the second parameter to this method will be returned.

getQuery() 方法
public mixed getQuery(string $name, mixed $defaultValue=NULL)
$namestringthe GET parameter name
$defaultValuemixedthe default parameter value if the GET parameter does not exist.
{return}mixedthe GET parameter value
源码: framework/web/CHttpRequest.php#171 (显示) publicfunctiongetQuery($name,$defaultValue=null)
{
returnisset($_GET[$name])?$_GET[$name]:$defaultValue;
}

Returns the named GET parameter value. If the GET parameter does not exist, the second parameter to this method will be returned.

参见

  • getPost
  • getParam
getQueryString() 方法
public string getQueryString()
{return}stringpart of the request URL that is after the question mark
源码: framework/web/CHttpRequest.php#479 (显示) publicfunctiongetQueryString()
{
returnisset($_SERVER['QUERY_STRING'])?$_SERVER['QUERY_STRING']:'';
}

Returns part of the request URL that is after the question mark.

getRequestType() 方法
public string getRequestType()
{return}stringrequest type, such as GET, POST, HEAD, PUT, DELETE.
源码: framework/web/CHttpRequest.php#497 (显示) publicfunctiongetRequestType()
{
returnstrtoupper(isset($_SERVER['REQUEST_METHOD'])?$_SERVER['REQUEST_METHOD']:'GET');
}

Returns the request type, such as GET, POST, HEAD, PUT, DELETE.

getRequestUri() 方法
public string getRequestUri()
{return}stringthe request URI portion for the currently requested URL.
源码: framework/web/CHttpRequest.php#445 (显示) publicfunctiongetRequestUri()
{
if($this->_requestUri===null)
{
if(isset($_SERVER['HTTP_X_REWRITE_URL']))//IIS
$this->_requestUri=$_SERVER['HTTP_X_REWRITE_URL'];
elseif(isset($_SERVER['REQUEST_URI']))
{
$this->_requestUri=$_SERVER['REQUEST_URI'];
if(!empty($_SERVER['HTTP_HOST']))
{
if(strpos($this->_requestUri,$_SERVER['HTTP_HOST'])!==false)
$this->_requestUri=preg_replace('/^w+://[^/]+/','',$this->_requestUri);
}
else
$this->_requestUri=preg_replace('/^(http|https)://[^/]+/i','',$this->_requestUri);
}
elseif(isset($_SERVER['ORIG_PATH_INFO']))//IIS5.0CGI
{
$this->_requestUri=$_SERVER['ORIG_PATH_INFO'];
if(!empty($_SERVER['QUERY_STRING']))
$this->_requestUri.='?'.$_SERVER['QUERY_STRING'];
}
else
thrownewCException(Yii::t('yii','CHttpRequestisunabletodeterminetherequestURI.'));
}

return$this->_requestUri;
}

Returns the request URI portion for the currently requested URL. This refers to the portion that is after the host info part. It includes the query string part if any. The implementation of this method referenced Zend_Controller_Request_Http in Zend Framework.

getRestParams() 方法 (可用自 v1.1.7)
protected array getRestParams()
{return}arraythe request parameters
源码: framework/web/CHttpRequest.php#227 (显示) protectedfunctiongetRestParams()
{
$result=array();
if(function_exists('mb_parse_str'))
mb_parse_str(file_get_contents('php://input'),$result);
else
parse_str(file_get_contents('php://input'),$result);
return$result;
}

Returns the PUT or DELETE request parameters.

getScriptFile() 方法
public string getScriptFile()
{return}stringentry script file path (processed w/ realpath())
源码: framework/web/CHttpRequest.php#598 (显示) publicfunctiongetScriptFile()
{
if($this->_scriptFile!==null)
return$this->_scriptFile;
else
return$this->_scriptFile=realpath($_SERVER['SCRIPT_FILENAME']);
}

Returns entry script file path.

getScriptUrl() 方法
public string getScriptUrl()
{return}stringthe relative URL of the entry script.
源码: framework/web/CHttpRequest.php#335 (显示) publicfunctiongetScriptUrl()
{
if($this->_scriptUrl===null)
{
$scriptName=basename($_SERVER['SCRIPT_FILENAME']);
if(basename($_SERVER['SCRIPT_NAME'])===$scriptName)
$this->_scriptUrl=$_SERVER['SCRIPT_NAME'];
elseif(basename($_SERVER['PHP_SELF'])===$scriptName)
$this->_scriptUrl=$_SERVER['PHP_SELF'];
elseif(isset($_SERVER['ORIG_SCRIPT_NAME'])&&basename($_SERVER['ORIG_SCRIPT_NAME'])===$scriptName)
$this->_scriptUrl=$_SERVER['ORIG_SCRIPT_NAME'];
elseif(($pos=strpos($_SERVER['PHP_SELF'],'/'.$scriptName))!==false)
$this->_scriptUrl=substr($_SERVER['SCRIPT_NAME'],0,$pos).'/'.$scriptName;
elseif(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
thrownewCException(Yii::t('yii','CHttpRequestisunabletodeterminetheentryscriptURL.'));
}
return$this->_scriptUrl;
}

Returns the relative URL of the entry script. The implementation of this method referenced Zend_Controller_Request_Http in Zend Framework.

getSecurePort() 方法 (可用自 v1.1.3)
public integer getSecurePort()
{return}integerport number for secure requests.
源码: framework/web/CHttpRequest.php#669 (显示) publicfunctiongetSecurePort()
{
if($this->_securePort===null)
$this->_securePort=$this->getIsSecureConnection()&&isset($_SERVER['SERVER_PORT'])?(int)$_SERVER['SERVER_PORT']:443;
return$this->_securePort;
}

Returns the port to use for secure requests. Defaults to 443, or the port specified by the server if the current request is secure. You may explicitly specify it by setting the securePort property.

参见

  • setSecurePort
getServerName() 方法
public string getServerName()
{return}stringserver name
源码: framework/web/CHttpRequest.php#544 (显示) publicfunctiongetServerName()
{
return$_SERVER['SERVER_NAME'];
}

Returns the server name.

getServerPort() 方法
public integer getServerPort()
{return}integerserver port number
源码: framework/web/CHttpRequest.php#553 (显示) publicfunctiongetServerPort()
{
return$_SERVER['SERVER_PORT'];
}

Returns the server port number.

getUrl() 方法
public string getUrl()
{return}stringpart of the request URL after the host info.
源码: framework/web/CHttpRequest.php#242 (显示) publicfunctiongetUrl()
{
return$this->getRequestUri();
}

Returns the currently requested URL. This is the same as getRequestUri.

getUrlReferrer() 方法
public string getUrlReferrer()
{return}stringURL referrer, null if not present
源码: framework/web/CHttpRequest.php#562 (显示) publicfunctiongetUrlReferrer()
{
returnisset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:null;
}

Returns the URL referrer, null if not present

getUserAgent() 方法
public string getUserAgent()
{return}stringuser agent, null if not present
源码: framework/web/CHttpRequest.php#571 (显示) publicfunctiongetUserAgent()
{
returnisset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:null;
}

Returns the user agent, null if not present.

getUserHost() 方法
public string getUserHost()
{return}stringuser host name, null if cannot be determined
源码: framework/web/CHttpRequest.php#589 (显示) publicfunctiongetUserHost()
{
returnisset($_SERVER['REMOTE_HOST'])?$_SERVER['REMOTE_HOST']:null;
}

Returns the user host name, null if it cannot be determined.

getUserHostAddress() 方法
public string getUserHostAddress()
{return}stringuser IP address
源码: framework/web/CHttpRequest.php#580 (显示) publicfunctiongetUserHostAddress()
{
returnisset($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:'127.0.0.1';
}

Returns the user IP address.

init() 方法
public void init()
源码: framework/web/CHttpRequest.php#105 (显示) publicfunctioninit()
{
parent::init();
$this->normalizeRequest();
}

Initializes the application component. This method overrides the parent implementation by preprocessing the user request data.

normalizeRequest() 方法
protected void normalizeRequest()
源码: framework/web/CHttpRequest.php#116 (显示) protectedfunctionnormalizeRequest()
{
//normalizerequest
if(function_exists('get_magic_quotes_gpc')&&get_magic_quotes_gpc())
{
if(isset($_GET))
$_GET=$this->stripSlashes($_GET);
if(isset($_POST))
$_POST=$this->stripSlashes($_POST);
if(isset($_REQUEST))
$_REQUEST=$this->stripSlashes($_REQUEST);
if(isset($_COOKIE))
$_COOKIE=$this->stripSlashes($_COOKIE);
}

if($this->enableCsrfValidation)
Yii::app()->attachEventHandler('onBeginRequest',array($this,'validateCsrfToken'));
}

Normalizes the request data. This method strips off slashes in request data if get_magic_quotes_gpc() returns true. It also performs CSRF validation if enableCsrfValidation is true.

redirect() 方法
public void redirect(string $url, boolean $terminate=true, integer $statusCode=302)
$urlstringURL to be redirected to. If the URL is a relative one, the base URL of the application will be inserted at the beginning.
$terminatebooleanwhether to terminate the current application
$statusCodeintegerthe HTTP status code. Defaults to 302. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for details about HTTP status code.
源码: framework/web/CHttpRequest.php#712 (显示) publicfunctionredirect($url,$terminate=true,$statusCode=302)
{
if(strpos($url,'/')===0)
$url=$this->getHostInfo().$url;
header('Location:'.$url,true,$statusCode);
if($terminate)
Yii::app()->end();
}

Redirects the browser to the specified URL.

sendFile() 方法
public void sendFile(string $fileName, string $content, string $mimeType=NULL, boolean $terminate=true)
$fileNamestringfile name
$contentstringcontent to be set.
$mimeTypestringmime type of the content. If null, it will be guessed automatically based on the given file name.
$terminatebooleanwhether to terminate the current application after calling this method
源码: framework/web/CHttpRequest.php#752 (显示) publicfunctionsendFile($fileName,$content,$mimeType=null,$terminate=true)
{
if($mimeType===null)
{
if(($mimeType=CFileHelper::getMimeTypeByExtension($fileName))===null)
$mimeType='text/plain';
}
header('Pragma:public');
header('Expires:0');
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header("Content-type:$mimeType");
if(ob_get_length()===false)
header('Content-Length:'.(function_exists('mb_strlen')?mb_strlen($content,'8bit'):strlen($content)));
header("Content-Disposition:attachment;filename="$fileName"");
header('Content-Transfer-Encoding:binary');

if($terminate)
{
//cleanuptheapplicationfirstbecausethefiledownloadingcouldtakelongtime
//whichmaycausetimeoutofsomeresources(suchasDBconnection)
Yii::app()->end(0,false);
echo$content;
exit(0);
}
else
echo$content;
}

Sends a file to user.

setBaseUrl() 方法
public void setBaseUrl(string $value)
$valuestringthe relative URL for the application
源码: framework/web/CHttpRequest.php#325 (显示) publicfunctionsetBaseUrl($value)
{
$this->_baseUrl=$value;
}

Sets the relative URL for the application. By default the URL is determined based on the entry script URL. This setter is provided in case you want to change this behavior.

setHostInfo() 方法
public void setHostInfo(string $value)
$valuestringthe schema and host part of the application URL.
源码: framework/web/CHttpRequest.php#299 (显示) publicfunctionsetHostInfo($value)
{
$this->_hostInfo=rtrim($value,'/');
}

Sets the schema and host part of the application URL. This setter is provided in case the schema and hostname cannot be determined on certain Web servers.

setPort() 方法 (可用自 v1.1.3)
public void setPort(integer $value)
$valueintegerport number.
源码: framework/web/CHttpRequest.php#652 (显示) publicfunctionsetPort($value)
{
$this->_port=(int)$value;
$this->_hostInfo=null;
}

Sets the port to use for insecure requests. This setter is provided in case a custom port is necessary for certain server configurations.

setScriptUrl() 方法
public void setScriptUrl(string $value)
$valuestringthe relative URL for the application entry script.
源码: framework/web/CHttpRequest.php#362 (显示) publicfunctionsetScriptUrl($value)
{
$this->_scriptUrl='/'.trim($value,'/');
}

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.

setSecurePort() 方法 (可用自 v1.1.3)
public void setSecurePort(integer $value)
$valueintegerport number.
源码: framework/web/CHttpRequest.php#683 (显示) publicfunctionsetSecurePort($value)
{
$this->_securePort=(int)$value;
$this->_hostInfo=null;
}

Sets the port to use for secure requests. This setter is provided in case a custom port is necessary for certain server configurations.

stripSlashes() 方法
public mixed stripSlashes(mixed &$data)
$datamixedinput data to be processed
{return}mixedprocessed data
源码: framework/web/CHttpRequest.php#142 (显示) publicfunctionstripSlashes(&$data)
{
returnis_array($data)?array_map(array($this,'stripSlashes'),$data):stripslashes($data);
}

Strips slashes from input data. This method is applied when magic quotes is enabled.

validateCsrfToken() 方法
public void validateCsrfToken(CEvent $event)
$eventCEventevent parameter
源码: framework/web/CHttpRequest.php#914 (显示) publicfunctionvalidateCsrfToken($event)
{
if($this->getIsPostRequest())
{
//onlyvalidatePOSTrequests
$cookies=$this->getCookies();
if($cookies->contains($this->csrfTokenName)&&isset($_POST[$this->csrfTokenName]))
{
$tokenFromCookie=$cookies->itemAt($this->csrfTokenName)->value;
$tokenFromPost=$_POST[$this->csrfTokenName];
$valid=$tokenFromCookie===$tokenFromPost;
}
else
$valid=false;
if(!$valid)
thrownewCHttpException(400,Yii::t('yii','TheCSRFtokencouldnotbeverified.'));
}
}

Performs the CSRF validation. This is the event handler responding to CApplication::onBeginRequest. The default implementation will compare the CSRF token obtained from a cookie and from a POST field. If they are different, a CSRF attack is detected.

xSendFile() 方法
public void xSendFile(string $filePath, array $options=array ( ))
$filePathstringfile name with full path
$optionsarrayadditional options:
  • saveName: file name shown to the user, if not set real file name will be used
  • mimeType: mime type of the file, if not set it will be guessed automatically based on the file name, if set to null no content-type header will be sent.
  • xHeader: appropriate x-sendfile header, defaults to "X-Sendfile"
  • terminate: whether to terminate the current application after calling this method, defaults to true
  • forceDownload: specifies whether the file will be downloaded or shown inline, defaults to true. (Since version 1.1.9.)
  • addHeaders: an array of additional http headers in header-value pairs (available since version 1.1.10)
源码: framework/web/CHttpRequest.php#832 (显示) publicfunctionxSendFile($filePath,$options=array())
{
if(!isset($options['forceDownload'])||$options['forceDownload'])
$disposition='attachment';
else
$disposition='inline';

if(!isset($options['saveName']))
$options['saveName']=basename($filePath);

if(!isset($options['mimeType']))
{
if(($options['mimeType']=CFileHelper::getMimeTypeByExtension($filePath))===null)
$options['mimeType']='text/plain';
}

if(!isset($options['xHeader']))
$options['xHeader']='X-Sendfile';

if($options['mimeType']!==null)
header('Content-type:'.$options['mimeType']);
header('Content-Disposition:'.$disposition.';filename="'.$options['saveName'].'"');
if(isset($options['addHeaders']))
{
foreach($options['addHeaders']as$header=>$value)
header($header.':'.$value);
}
header(trim($options['xHeader']).':'.$filePath);

if(!isset($options['terminate'])||$options['terminate'])
Yii::app()->end();
}

Sends existing file to a browser as a download using x-sendfile.

X-Sendfile is a feature allowing a web application to redirect the request for a file to the webserver that in turn processes the request, this way eliminating the need to perform tasks like reading the file and sending it to the user. When dealing with a lot of files (or very big files) this can lead to a great increase in performance as the web application is allowed to terminate earlier while the webserver is handling the request.

The request is sent to the server through a special non-standard HTTP-header. When the web server encounters the presence of such header it will discard all output and send the file specified by that header using web server internals including all optimizations like caching-headers.

As this header directive is non-standard different directives exists for different web servers applications:

  • Apache: X-Sendfile
  • Lighttpd v1.4: X-LIGHTTPD-send-file
  • Lighttpd v1.5: X-Sendfile
  • Nginx: X-Accel-Redirect
  • Cherokee: X-Sendfile and X-Accel-Redirect
So for this method to work the X-SENDFILE option/module should be enabled by the web server and a proper xHeader should be sent.

Note: This option allows to download files that are not under web folders, and even files that are otherwise protected (deny from all) like .htaccess

Side effects: If this option is disabled by the web server, when this method is called a download configuration dialog will open but the downloaded file will have 0 bytes.

Example:
<?php Yii::app()->request->xSendFile('/home/user/Pictures/picture1.jpg',array(     'saveName'=>'image1.jpg',     'mimeType'=>'image/jpeg',     'terminate'=>false, ));
?>