Spec-Zone.ru › Yii 1.1

CHttpRequest

Пакет system.web
Наследование class CHttpRequest » CApplicationComponent » CComponent
Реализует IApplicationComponent
С версии 1.0
Исходный код framework/web/CHttpRequest.php
CHttpRequest инкапсулирует переменную $_SERVER и устраняет несоответствия в её значениях между различными веб-серверами.

CHttpRequest также управляет куки, отправленными от и к пользователю. Установив enableCookieValidation в значение true, куки, отправленные пользователем, будут проверены на предмет изменения. Свойство cookies возвращает коллекцию куки. Подробнее см. CCookieCollection.

CHttpRequest является компонентом приложения по умолчанию, загружаемым CWebApplication. К нему можно получить доступ через CWebApplication::getRequest().

Общественные свойства

Свойство Тип Описание Определено
acceptTypes строка Возвращает типы принятия браузера пользователя, null, если не задано. CHttpRequest
baseUrl строка Возвращает относительный URL приложения. CHttpRequest
behaviors массив поведения, которые должны быть присоединены к этому компоненту. CApplicationComponent
browser массив Возвращает информацию о возможностях браузера пользователя. CHttpRequest
contentType строка Возвращает тип контента запроса CHttpRequest
cookies CCookieCollection Возвращает коллекцию куки. CHttpRequest
csrfCookie массив значения свойств (в парах имя-значение), используемые для инициализации куки CSRF. CHttpRequest
csrfToken строка Возвращает случайный токен, используемый для проверки CSRF. CHttpRequest
csrfTokenName строка имя токена, используемого для предотвращения CSRF. CHttpRequest
enableCookieValidation булево указывает, должны ли куки проверяться, чтобы убедиться, что они не изменены. CHttpRequest
enableCsrfValidation булево включает проверку CSRF (Cross-Site Request Forgery). CHttpRequest
hostInfo строка Возвращает схему и доменную часть URL приложения. CHttpRequest
httpVersion строка Возвращает версию HTTP-протокола, используемого клиентом. CHttpRequest
isAjaxRequest булево Возвращает значение, показывающее, является ли это AJAX (XMLHttpRequest)-запросом. CHttpRequest
isDeleteRequest булево Возвращает значение, показывающее, является ли это запросом DELETE. CHttpRequest
isFlashRequest булево Возвращает значение, показывающее, является ли это запросом Adobe Flash или Adobe Flex. CHttpRequest
isInitialized булево Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent
isPatchRequest булево Возвращает значение, показывающее, является ли это запросом PATCH. CHttpRequest
isPostRequest булево Возвращает значение, показывающее, является ли это запросом POST. CHttpRequest
isPutRequest булево Возвращает значение, показывающее, является ли это запросом PUT. CHttpRequest
isSecureConnection булево Возвращает, если запрос отправлен по защищённому каналу (https). CHttpRequest
jsonAsArray булево указывает, должны ли результаты парсинга JSON запросов REST возвращать ассоциативные массивы для данных объектов. CHttpRequest
pathInfo строка Возвращает часть пути текущего URL-запроса. CHttpRequest
port целое Возвращает порт для использования для небезопасных запросов. CHttpRequest
preferredAcceptType массив Возвращает предпочтительный MIME-тип пользователя. CHttpRequest
preferredAcceptTypes массив Возвращает массив принятых MIME-типов пользователя в порядке предпочтения. CHttpRequest
preferredLanguage строка Возвращает предпочтительный язык пользователя, который должен использоваться этим приложением. CHttpRequest
preferredLanguages массив Возвращает массив принятых языков пользователя в порядке предпочтения. CHttpRequest
queryString строка Возвращает часть URL-запроса, расположенную после знака вопроса. CHttpRequest
rawBody строка Возвращает исходное тело HTTP-запроса. CHttpRequest
requestType строка Возвращает тип запроса, например GET, POST, HEAD, PUT, PATCH, DELETE. CHttpRequest
requestUri строка Возвращает часть URI запроса для текущего запрашиваемого URL. CHttpRequest
restParams массив Возвращает параметры запроса. Обычно PUT, PATCH или DELETE. CHttpRequest
scriptFile строка Возвращает путь к файлу скрипта входа. CHttpRequest
scriptUrl строка Возвращает относительный URL файла скрипта входа. CHttpRequest
securePort целое Возвращает порт для использования для защищённых запросов. CHttpRequest
serverName строка Возвращает имя сервера. CHttpRequest
serverPort целое Возвращает номер порта сервера. CHttpRequest
url строка Возвращает текущий запрашиваемый URL. CHttpRequest
urlReferrer строка Возвращает URL referrer, null, если не задано. CHttpRequest
userAgent строка Возвращает user agent, null, если не задано. CHttpRequest
userHost строка Возвращает имя хоста пользователя, null, если его нельзя определить. CHttpRequest
userHostAddress строка Возвращает IP-адрес пользователя. CHttpRequest

Защищённые свойства

Свойство Тип Описание Определено
isDeleteViaPostRequest булево Возвращает значение, показывающее, является ли это запросом DELETE, который был передан через POST. CHttpRequest
isPatchViaPostRequest булево Возвращает значение, показывающее, является ли это запросом PATCH, который был передан через POST. CHttpRequest
isPutViaPostRequest булево Возвращает значение, показывающее, является ли это запросом PUT, который был передан через POST. 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
compareAcceptTypes() Функция сравнения для определения предпочтения карт массивов принятых типов MIME CHttpRequest
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает прикрепленное поведение. CComponent
disableBehaviors() Отключает все прикрепленные к этому компоненту поведения. CComponent
enableBehavior() Включает прикрепленное поведение. CComponent
enableBehaviors() Включает все прикрепленные к этому компоненту поведения. CComponent
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
getAcceptTypes() Возвращает типы accept браузера пользователя, null, если не присутствует. CHttpRequest
getBaseUrl() Возвращает относительный URL для приложения. CHttpRequest
getBrowser() Возвращает информацию о возможностях браузера пользователя. CHttpRequest
getContentType() Возвращает тип контента запроса CHttpRequest
getCookies() Возвращает коллекцию cookie. CHttpRequest
getCsrfToken() Возвращает случайный токен, используемый для проверки CSRF. CHttpRequest
getDelete() Возвращает значение параметра DELETE с указанным именем. CHttpRequest
getEventHandlers() Возвращает список прикрепленных обработчиков событий для события. CComponent
getHostInfo() Возвращает схему и часть хоста URL приложения. CHttpRequest
getHttpVersion() Возвращает версию HTTP-протокола, используемого клиентом. CHttpRequest
getIsAjaxRequest() Возвращает, является ли это запросом AJAX (XMLHttpRequest). CHttpRequest
getIsDeleteRequest() Возвращает, является ли это запросом DELETE. CHttpRequest
getIsFlashRequest() Возвращает, является ли это запросом Adobe Flash или Adobe Flex. CHttpRequest
getIsInitialized() Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent
getIsPatchRequest() Возвращает, является ли это запросом PATCH. CHttpRequest
getIsPostRequest() Возвращает, является ли это запросом POST. CHttpRequest
getIsPutRequest() Возвращает, является ли это запросом PUT. CHttpRequest
getIsSecureConnection() Возвращает, отправлен ли запрос по защищенному каналу (https). CHttpRequest
getParam() Возвращает значение параметра GET или POST с указанным именем. CHttpRequest
getPatch() Возвращает значение параметра PATCH с указанным именем. CHttpRequest
getPathInfo() Возвращает часть path info текущего запрошенного URL. CHttpRequest
getPort() Возвращает порт для использования для незащищенных запросов. CHttpRequest
getPost() Возвращает значение параметра POST с указанным именем. CHttpRequest
getPreferredAcceptType() Возвращает предпочтительный тип MIME accept пользователя. CHttpRequest
getPreferredAcceptTypes() Возвращает массив принятых типов MIME пользователя в порядке предпочтения. CHttpRequest
getPreferredLanguage() Возвращает предпочтительный язык пользователя, который должен использоваться этим приложением. CHttpRequest
getPreferredLanguages() Возвращает массив принятых языков пользователя в порядке предпочтения. CHttpRequest
getPut() Возвращает значение параметра PUT с указанным именем. CHttpRequest
getQuery() Возвращает значение параметра GET с указанным именем. CHttpRequest
getQueryString() Возвращает часть URL запроса, расположенную после знака вопроса. CHttpRequest
getRawBody() Возвращает исходное тело HTTP-запроса. CHttpRequest
getRequestType() Возвращает тип запроса, например GET, POST, HEAD, PUT, PATCH, DELETE. CHttpRequest
getRequestUri() Возвращает часть URI запроса для текущего запрошенного URL. CHttpRequest
getRestParams() Возвращает параметры запроса. Обычно PUT, PATCH или DELETE. CHttpRequest
getScriptFile() Возвращает путь к файлу скрипта входа. CHttpRequest
getScriptUrl() Возвращает относительный URL скрипта входа. CHttpRequest
getSecurePort() Возвращает порт для использования для защищенных запросов. CHttpRequest
getServerName() Возвращает имя сервера. CHttpRequest
getServerPort() Возвращает номер порта сервера. CHttpRequest
getUrl() Возвращает текущий запрашиваемый URL. CHttpRequest
getUrlReferrer() Возвращает URL referrer, null если отсутствует. CHttpRequest
getUserAgent() Возвращает user agent, null если отсутствует. CHttpRequest
getUserHost() Возвращает имя хоста пользователя, null если не может быть определено. CHttpRequest
getUserHostAddress() Возвращает IP-адрес пользователя. CHttpRequest
hasEvent() Определяет, определён ли event. CComponent
hasEventHandler() Проверяет, есть ли обработчики для указанного события. CComponent
hasProperty() Определяет, определён ли свойство. CComponent
init() Инициализирует компонент приложения. CHttpRequest
parseAcceptHeader() Парсит заголовок HTTP Accept, возвращая массив со всеми частями каждой записи. CHttpRequest
raiseEvent() Возбуждает событие. CComponent
redirect() Перенаправляет браузер на указанный URL. CHttpRequest
sendFile() Отправляет файл пользователю. CHttpRequest
setBaseUrl() Устанавливает относительный URL для приложения. CHttpRequest
setHostInfo() Устанавливает схему и часть хоста URL приложения. CHttpRequest
setPort() Устанавливает порт для небезопасных запросов. CHttpRequest
setScriptUrl() Устанавливает относительный URL для скрипта входа приложения. CHttpRequest
setSecurePort() Устанавливает порт для защищённых запросов. CHttpRequest
stripSlashes() Удаляет слеши из входных данных. CHttpRequest
validateCsrfToken() Выполняет проверку CSRF. CHttpRequest
xSendFile() Отправляет существующий файл браузеру для скачивания с использованием x-sendfile. CHttpRequest

Защищённые методы

Метод Описание Определён в
createCsrfCookie() Создаёт cookie с случайным CSRF-токен. CHttpRequest
decodePathInfo() Декодирует path info. CHttpRequest
getIsDeleteViaPostRequest() Возвращает, является ли это запросом DELETE, который был перенаправлен через POST. CHttpRequest
getIsPatchViaPostRequest() Возвращает, является ли это запросом PATCH, который был перенаправлен через POST. CHttpRequest
getIsPutViaPostRequest() Возвращает, является ли это запросом PUT, который был перенаправлен через POST. CHttpRequest
normalizeRequest() Нормализует данные запроса. CHttpRequest

Подробное описание свойств

acceptTypes свойство только для чтения

public string getAcceptTypes()

Возвращает типы accept браузера пользователя, null если отсутствуют.

baseUrl свойство

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

Возвращает относительный URL для приложения. Аналогично scriptUrl, но без имени файла скрипта и без конечных слешей.

См. также

  • setScriptUrl

browser свойство только для чтения

public array getBrowser(string $userAgent=NULL)

Возвращает информацию о возможностях браузера пользователя.

См. также

  • http://www.php.net/manual/en/function.get-browser.php

contentType свойство только для чтения (доступно с версии 1.1.17)

public string getContentType()

Возвращает тип контента запроса. Заголовок Content-Type указывает тип MIME данных, содержащихся в getRawBody(), или тип данных, который был бы отправлен в случае метода HEAD.

cookies свойство только для чтения

public CCookieCollection getCookies()

Возвращает коллекцию cookie. Результат можно использовать как ассоциативный массив. Добавление объектов CHttpCookie в коллекцию отправит cookie клиенту; удаление объектов из коллекции удалит эти cookie на стороне клиента.

csrfCookie свойство

public array $csrfCookie;

Значения свойств (в парах имя-значение), используемые для инициализации cookie CSRF. Любое свойство CHttpCookie может быть инициализировано. Это свойство эффективно только при enableCsrfValidation = true.

csrfToken свойство только для чтения

public string getCsrfToken()

Возвращает случайный токен, используемый для проверки CSRF. Токен сначала читается из cookie. Если не найден, генерируется новый.

См. также

  • enableCsrfValidation

csrfTokenName свойство

public string $csrfTokenName;

Имя токена, используемого для предотвращения CSRF. По умолчанию 'YII_CSRF_TOKEN'. Это свойство эффективно только при enableCsrfValidation = true.

enableCookieValidation свойство

public boolean $enableCookieValidation;

Указывает, нужно ли проверять cookie, чтобы убедиться, что они не были изменены. По умолчанию false.

enableCsrfValidation свойство

public boolean $enableCsrfValidation;

Включает проверку CSRF (Cross-Site Request Forgery). По умолчанию false. Установив это свойство в true, формы, отправленные в Yii веб-приложение, должны исходить из того же приложения. Если нет, будет выброшено исключение 400 HTTP. Обратите внимание, что эта функция требует, чтобы клиентский браузер принимал cookie. Вам также нужно использовать CHtml::form или CHtml::statefulForm для генерации необходимых HTML-форм на ваших страницах.

См. также

  • http://seclab.stanford.edu/websec/csrf/csrf.pdf

hostInfo свойство

public string getHostInfo(string $schema='')
public void setHostInfo(string $value)

Возвращает схему и часть хоста URL приложения. Возвращённый URL не имеет конечного слэша. По умолчанию определяется на основе информации о запросе пользователя. Вы можете явно указать его, установив свойство hostInfo.

См. также

  • setHostInfo

httpVersion свойство только для чтения (доступно с версии 1.1.16)

public string getHttpVersion()

Возвращает версию HTTP-протокола, используемого клиентом.

isAjaxRequest свойство только для чтения

public boolean getIsAjaxRequest()

Возвращает, является ли это AJAX-запросом (XMLHttpRequest).

isDeleteRequest свойство только для чтения (доступно с версии 1.1.7)

public boolean getIsDeleteRequest()

Возвращает, является ли это запросом DELETE.

isDeleteViaPostRequest свойство только для чтения (доступно с версии 1.1.11)

protected boolean getIsDeleteViaPostRequest()

Возвращает, является ли это запросом DELETE, перенаправленным через POST.

isFlashRequest свойство только для чтения (доступно с версии 1.1.11)

public boolean getIsFlashRequest()

Возвращает, является ли это запросом от Adobe Flash или Adobe Flex.

isPatchRequest свойство только для чтения (доступно с версии 1.1.16)

public boolean getIsPatchRequest()

Возвращает, является ли это запросом PATCH.

isPatchViaPostRequest свойство только для чтения (доступно с версии 1.1.16)

protected boolean getIsPatchViaPostRequest()

Возвращает, является ли это запросом PATCH, перенаправленным через POST.

isPostRequest свойство только для чтения

public boolean getIsPostRequest()

Возвращает значение, указывающее, является ли это POST-запросом.

isPutRequest свойство только для чтения (доступно начиная с v1.1.7)

public boolean getIsPutRequest()

Возвращает значение, указывающее, является ли это PUT-запросом.

isPutViaPostRequest свойство только для чтения (доступно начиная с v1.1.11)

protected boolean getIsPutViaPostRequest()

Возвращает значение, указывающее, является ли это PUT-запросом, переданным через POST.

isSecureConnection свойство только для чтения

public boolean getIsSecureConnection()

Возвращает значение, указывающее, отправлен ли запрос по защищенному каналу (https).

jsonAsArray свойство (доступно начиная с v1.1.17)

public boolean $jsonAsArray;

Указывает, должны ли результаты парсинга JSON-запросов REST возвращаться в виде ассоциативных массивов для данных объектов.

См. также

  • getRestParams

pathInfo свойство только для чтения

public string getPathInfo()

Возвращает информацию о пути текущего запрошенного URL. Это часть, которая находится после скрипта входа и перед знаком вопроса. Начальные и конечные слэши удаляются.

port свойство (доступно начиная с v1.1.3)

public integer getPort()
public void setPort(integer $value)

Возвращает порт для использования в незащищенных запросах. По умолчанию 80 или порт, указанный сервером, если текущий запрос не защищен. Вы можете явно указать его, задав свойство port.

См. также

  • setPort

preferredAcceptType свойство только для чтения

public array getPreferredAcceptType()

Возвращает предпочтительный MIME-тип accept пользователя. MIME-тип возвращается в виде массива (см. parseAcceptHeader()).

preferredAcceptTypes свойство только для чтения

public array getPreferredAcceptTypes()

Возвращает массив принятых MIME-типов пользователя в порядке предпочтения. Каждый элемент массива представляет собой карту с типом, подтипом, базовым типом и параметрами — массивом пар «ключ-значение». См. parseAcceptHeader() для описания массива.

preferredLanguage свойство только для чтения

public string getPreferredLanguage(array $languages=array ( ))

Возвращает предпочтительный язык пользователя, который должен использоваться этим приложением. Определение языка основано на предпочтительных языках пользователя и языках, поддерживаемых приложением. Метод попытается найти наилучшее соответствие.

preferredLanguages свойство только для чтения

public array getPreferredLanguages()

Возвращает массив принятых языков пользователя в порядке предпочтения. Возвращаемые идентификаторы языков НЕ будут канонизированы с помощью CLocale::getCanonicalID.

queryString свойство только для чтения

public string getQueryString()

Возвращает часть URL запроса, которая находится после знака вопроса.

rawBody свойство только для чтения (доступно начиная с v1.1.13)

public string getRawBody()

Возвращает исходное тело HTTP-запроса.

requestType свойство только для чтения

public string getRequestType()

Возвращает тип запроса, например, GET, POST, HEAD, PUT, PATCH, DELETE. Тип запроса можно вручную задать в POST-запросах с параметром _method. Полезно для RESTful-запросов от старых браузеров, которые не поддерживают PUT, PATCH или DELETE напрямую (доступно начиная с версии 1.1.11).

requestUri свойство только для чтения

public string getRequestUri()

Возвращает часть URI запроса для текущего запрошенного URL. Это часть, которая следует за частью host info. Она включает часть строки запроса, если она есть. Реализация этого метода ссылается на Zend_Controller_Request_Http в Zend Framework.

restParams свойство только для чтения (доступно начиная с v1.1.13 метод стал общедоступным)

public array getRestParams()

Возвращает параметры запроса. Обычно PUT, PATCH или DELETE.

scriptFile свойство только для чтения

public string getScriptFile()

Возвращает путь к файлу скрипта входа.

scriptUrl свойство

public string getScriptUrl()
public void setScriptUrl(string $value)

Возвращает относительный URL скрипта входа. Реализация этого метода ссылается на Zend_Controller_Request_Http в Zend Framework.

securePort свойство (доступно начиная с v1.1.3)

public integer getSecurePort()
public void setSecurePort(integer $value)

Возвращает порт для использования в защищенных запросах. По умолчанию 443 или порт, указанный сервером, если текущий запрос защищен. Вы можете явно указать его, задав свойство securePort.

См. также

  • setSecurePort

serverName свойство только для чтения

public string getServerName()

Возвращает имя сервера.

serverPort свойство только для чтения

public integer getServerPort()

Возвращает номер порта сервера.

url свойство только для чтения

public string getUrl()

Возвращает текущий запрашиваемый URL. Это то же самое, что и getRequestUri.

urlReferrer свойство только для чтения

public string getUrlReferrer()

Возвращает URL-ссылку, null если отсутствует.

userAgent свойство только для чтения

public string getUserAgent()

Возвращает пользовательского агента, null если отсутствует.

userHost свойство только для чтения

public string getUserHost()

Возвращает имя хоста пользователя, null если невозможно определить.

userHostAddress свойство только для чтения

public string getUserHostAddress()

Возвращает IP-адрес пользователя.

Подробное описание методов

compareAcceptTypes() метод

public static integer compareAcceptTypes(array $a, array $b)
$a массив принятый MIME-тип пользователя как массив
$b массив принятый MIME-тип пользователя как массив
{return} целое число -1, 0 или 1, если у $a соответственно большая, равная или меньшая степень предпочтения, чем у $b (более высокая степень предпочтения стоит первой).
Исходный код: framework/web/CHttpRequest.php#981 (показать)
public static function compareAcceptTypes($a,$b)
{
    
// check for equal quality first
    
if($a['params']['q']===$b['params']['q'])
        if(!(
$a['type']==='*' xor $b['type']==='*'))
            if (!(
$a['subType']==='*' xor $b['subType']==='*'))
                
// finally, higher number of parameters counts as greater precedence
                
if(count($a['params'])===count($b['params']))
                    return 
0;
                else
                    return 
count($a['params'])<count($b['params']) ? 1 : -1;
            
// more specific takes precedence - whichever one doesn't have a * subType
            
else
                return 
$a['subType']==='*' ? 1 : -1;
        
// more specific takes precedence - whichever one doesn't have a * type
        
else
            return 
$a['type']==='*' ? 1 : -1;
    else
        return (
$a['params']['q']<$b['params']['q']) ? 1 : -1;
}

Функция сравнения для определения предпочтения принятых MIME-типов в виде массивов. См. parseAcceptHeader() для формата $a и $b

createCsrfCookie() метод

protected CHttpCookie createCsrfCookie()
{return} CHttpCookie сгенерированный cookie
Исходный код: framework/web/CHttpRequest.php#1304 (показать)
protected function createCsrfCookie()
{
    
$securityManager=Yii::app()->getSecurityManager();
    
$token=$securityManager->generateRandomBytes(32);
    
$maskedToken=$securityManager->maskToken($token);
    
$cookie=new CHttpCookie($this->csrfTokenName,$maskedToken);
    if(
is_array($this->csrfCookie))
    {
        foreach(
$this->csrfCookie as $name=>$value)
            
$cookie->$name=$value;
    }
    return 
$cookie;
}

Создаёт cookie с случайным CSRF-токенем. Начальные значения, указанные в csrfCookie, будут применены к сгенерированному cookie.

См. также

  • enableCsrfValidation

decodePathInfo() метод (доступно начиная с v1.1.10)

protected string decodePathInfo(string $pathInfo)
$pathInfo строка закодированная информация о пути
{return} строка расшифрованная информация о пути
Исходный код: framework/web/CHttpRequest.php#505 (показать)
protected function decodePathInfo($pathInfo)
{
    
$pathInfo = urldecode($pathInfo);

    
// is it UTF-8?
    // http://w3.org/International/questions/qa-forms-utf-8.html
    
if(preg_match('%^(?:
       [\x09\x0A\x0D\x20-\x7E]            # ASCII
     | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
     | \xE0[\xA0-\xBF][\x80-\xBF]         # excluding overlongs
     | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
     | \xED[\x80-\x9F][\x80-\xBF]         # excluding surrogates
     | \xF0[\x90-\xBF][\x80-\xBF]{2}      # planes 1-3
     | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
     | \xF4[\x80-\x8F][\x80-\xBF]{2}      # plane 16
    )*$%xs'
, $pathInfo))
    {
        return 
$pathInfo;
    }
    else
    {
        return 
utf8_encode($pathInfo);
    }
}

Декодирует информацию о пути. Этот метод является улучшенной версией встроенной функции urldecode() и используется в getPathInfo() для декодирования части пути запрошенного URI. Вы можете переопределить этот метод, чтобы изменить способ декодирования информации о пути.

getAcceptTypes() метод

public string getAcceptTypes()
{return} строка принятые браузером типы, null если отсутствуют
Исходный код: framework/web/CHttpRequest.php#774 (показать)
public function getAcceptTypes()
{
    return isset(
$_SERVER['HTTP_ACCEPT'])?$_SERVER['HTTP_ACCEPT']:null;
}

Возвращает типы accept браузера пользователя, null если отсутствуют.

END_OF_DOCUMENT_MARKER

getBaseUrl() метод

public string getBaseUrl(boolean $absolute=false)
$absolute boolean указывает, нужно ли возвращать абсолютный URL. По умолчанию false, что означает возврат относительного URL.
{return} string относительный URL приложения
Исходный код: framework/web/CHttpRequest.php#396 (показать)
public function getBaseUrl($absolute=false)
{
    if(
$this->_baseUrl===null)
        
$this->_baseUrl=rtrim(dirname($this->getScriptUrl()),'\\/');
    return 
$absolute ? $this->getHostInfo() . $this->_baseUrl : $this->_baseUrl;
}

Возвращает относительный URL приложения. Это аналогично scriptUrl, за исключением того, что он не содержит имя файла скрипта, а конечные косые черты удалены.

См. также

  • setScriptUrl

getBrowser() метод

public array getBrowser(string $userAgent=NULL)
$userAgent string анализ пользовательского агента. По умолчанию null, что означает использование текущей информации из HTTP-заголовка User-Agent.
{return} array возможности браузера пользователя.
Исходный код: framework/web/CHttpRequest.php#765 (показать)
public function getBrowser($userAgent=null)
{
    return 
get_browser($userAgent,true);
}

Возвращает информацию о возможностях браузера пользователя.

См. также

  • http://www.php.net/manual/en/function.get-browser.php

getContentType() метод (доступен начиная с v1.1.17)

public string getContentType()
{return} string тип содержимого запроса. Возвращает null, если информация недоступна.
Исходный код: framework/web/CHttpRequest.php#789 (показать)
public function getContentType()
{
    if (isset(
$_SERVER["CONTENT_TYPE"])) {
        return 
$_SERVER["CONTENT_TYPE"];
    } elseif (isset(
$_SERVER["HTTP_CONTENT_TYPE"])) {
        
//fix bug https://bugs.php.net/bug.php?id=66606
        
return $_SERVER["HTTP_CONTENT_TYPE"];
    }
    return 
null;
}

Возвращает тип содержимого запроса. Заголовок Content-Type указывает MIME-тип данных, содержащихся в getRawBody(), или, в случае метода HEAD, тип носителя, который был бы отправлен, если бы запрос был GET.

getCookies() метод

public CCookieCollection getCookies()
{return} CCookieCollection коллекция куки.
Исходный код: framework/web/CHttpRequest.php#869 (показать)
public function getCookies()
{
    if(
$this->_cookies!==null)
        return 
$this->_cookies;
    else
        return 
$this->_cookies=new CCookieCollection($this);
}

Возвращает коллекцию куки. Результат можно использовать как ассоциативный массив. Добавление объектов CHttpCookie в коллекцию отправит куки клиенту; удаление объектов из коллекции удалит эти куки на клиенте.

getCsrfToken() метод

public string getCsrfToken()
{return} string случайный токен для валидации CSRF.
Исходный код: framework/web/CHttpRequest.php#1281 (показать)
public function getCsrfToken()
{
    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;
}

Возвращает случайный токен, используемый для валидации CSRF. Сначала токен будет считан из куки. Если он не найден, токен будет сгенерирован заново.

См. также

  • enableCsrfValidation

getDelete() метод (доступен начиная с v1.1.7)

public mixed getDelete(string $name, mixed $defaultValue=NULL)
$name string имя параметра DELETE
$defaultValue mixed значение параметра по умолчанию, если параметр DELETE не существует.
{return} mixed значение параметра DELETE
Исходный код: framework/web/CHttpRequest.php#221 (показать)
public function getDelete($name,$defaultValue=null)
{
    if(
$this->getIsDeleteViaPostRequest())
        return 
$this->getPost($name, $defaultValue);

    if(
$this->getIsDeleteRequest())
    {
        
$restParams=$this->getRestParams();
        return isset(
$restParams[$name]) ? $restParams[$name] : $defaultValue;
    }
    else
        return 
$defaultValue;
}

Возвращает значение параметра DELETE по имени. Если параметр DELETE не существует или текущий запрос не является запросом DELETE, возвращается второе значение параметра. Если запрос DELETE был отформатирован через POST с помощью параметра _method, возвращается значение POST-параметра (доступно начиная с версии 1.1.11).

getHostInfo() метод

public string getHostInfo(string $schema='')
$schema string схема для использования (например, http, https). Если пусто, используется схема текущего запроса.
{return} string схема и доменная часть (с номером порта при необходимости) URL запроса (например, http://www.yiiframework.com)
Исходный код: framework/web/CHttpRequest.php#340 (показать)
public function getHostInfo($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;
}

Возвращает схему и доменную часть URL приложения. Возвращаемый URL не имеет конечной косой черты. По умолчанию определяется на основе информации о запросе пользователя. Вы можете явно указать его, установив свойство hostInfo.

См. также

  • setHostInfo

getHttpVersion() метод (доступен начиная с v1.1.16)

public string getHttpVersion()
{return} string версия HTTP-протокола.
Исходный код: framework/web/CHttpRequest.php#1373 (показать)
public function getHttpVersion()
{
    if(
$this->_httpVersion===null)
    {
        if(isset(
$_SERVER['SERVER_PROTOCOL']) && $_SERVER['SERVER_PROTOCOL']==='HTTP/1.0')
            
$this->_httpVersion='1.0';
        else
            
$this->_httpVersion='1.1';
    }
    return 
$this->_httpVersion;
}

Возвращает версию HTTP-протокола, используемого клиентом.

getIsAjaxRequest() метод

public boolean getIsAjaxRequest()
{return} boolean является ли это AJAX (XMLHttpRequest) запросом.
Исходный код: framework/web/CHttpRequest.php#677 (показать)
public function getIsAjaxRequest()
{
    return isset(
$_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';
}

Возвращает, является ли это AJAX (XMLHttpRequest) запросом.

getIsDeleteRequest() метод (доступен начиная с v1.1.7)

public boolean getIsDeleteRequest()
{return} boolean является ли это запросом DELETE.
Исходный код: framework/web/CHttpRequest.php#618 (показать)
public function getIsDeleteRequest()
{
    return (isset(
$_SERVER['REQUEST_METHOD']) && !strcasecmp($_SERVER['REQUEST_METHOD'],'DELETE')) || $this->getIsDeleteViaPostRequest();
}

Возвращает, является ли это запросом DELETE.

getIsDeleteViaPostRequest() метод (доступен начиная с v1.1.11)

protected boolean getIsDeleteViaPostRequest()
{return} boolean является ли это запросом DELETE, отформатированным через POST.
Исходный код: framework/web/CHttpRequest.php#628 (показать)
protected function getIsDeleteViaPostRequest()
{
    return isset(
$_POST['_method']) && !strcasecmp($_POST['_method'],'DELETE');
}

Возвращает, является ли это запросом DELETE, отформатированным через POST.

getIsFlashRequest() метод (доступен начиная с v1.1.11)

public boolean getIsFlashRequest()
{return} boolean является ли это запросом Adobe Flash или Adobe Flex.
Исходный код: framework/web/CHttpRequest.php#687 (показать)
public function getIsFlashRequest()
{
    return isset(
$_SERVER['HTTP_USER_AGENT']) && (stripos($_SERVER['HTTP_USER_AGENT'],'Shockwave')!==false || stripos($_SERVER['HTTP_USER_AGENT'],'Flash')!==false);
}

Возвращает, является ли это запросом Adobe Flash или Adobe Flex.

getIsPatchRequest() метод (доступен начиная с v1.1.16)

public boolean getIsPatchRequest()
{return} boolean является ли это запросом PATCH.
Исходный код: framework/web/CHttpRequest.php#658 (показать)
public function getIsPatchRequest()
{
    return (isset(
$_SERVER['REQUEST_METHOD']) && !strcasecmp($_SERVER['REQUEST_METHOD'],'PATCH')) || $this->getIsPatchViaPostRequest();
}

Возвращает значение, указывающее, является ли текущий запрос PATCH-запросом.

getIsPatchViaPostRequest() метод (доступен начиная с версии v1.1.16)

protected boolean getIsPatchViaPostRequest()
{return} boolean указывает, является ли данный PATCH-запрос, переданный через POST.
Исходный код: framework/web/CHttpRequest.php#668 (показать)
protected function getIsPatchViaPostRequest()
{
    return isset(
$_POST['_method']) && !strcasecmp($_POST['_method'],'PATCH');
}

Возвращает значение, указывающее, является ли текущий запрос PATCH-запросом, переданным через POST.

getIsPostRequest() метод

public boolean getIsPostRequest()
{return} boolean указывает, является ли данный запрос POST-запросом.
Исходный код: framework/web/CHttpRequest.php#608 (показать)
public function getIsPostRequest()
{
    return isset(
$_SERVER['REQUEST_METHOD']) && !strcasecmp($_SERVER['REQUEST_METHOD'],'POST');
}

Возвращает значение, указывающее, является ли текущий запрос POST-запросом.

getIsPutRequest() метод (доступен начиная с версии v1.1.7)

public boolean getIsPutRequest()
{return} boolean указывает, является ли данный запрос PUT-запросом.
Исходный код: framework/web/CHttpRequest.php#638 (показать)
public function getIsPutRequest()
{
    return (isset(
$_SERVER['REQUEST_METHOD']) && !strcasecmp($_SERVER['REQUEST_METHOD'],'PUT')) || $this->getIsPutViaPostRequest();
}

Возвращает значение, указывающее, является ли текущий запрос PUT-запросом.

getIsPutViaPostRequest() метод (доступен начиная с версии v1.1.11)

protected boolean getIsPutViaPostRequest()
{return} boolean указывает, является ли данный PUT-запрос, переданный через POST.
Исходный код: framework/web/CHttpRequest.php#648 (показать)
protected function getIsPutViaPostRequest()
{
    return isset(
$_POST['_method']) && !strcasecmp($_POST['_method'],'PUT');
}

Возвращает значение, указывающее, является ли текущий PUT-запрос, переданный через POST.

getIsSecureConnection() метод

public boolean getIsSecureConnection()
{return} boolean указывает, отправлен ли запрос по защищённому каналу (https)
Исходный код: framework/web/CHttpRequest.php#581 (показать)
public function getIsSecureConnection()
{
    return isset(
$_SERVER['HTTPS']) && (strcasecmp($_SERVER['HTTPS'],'on')===0 || $_SERVER['HTTPS']==1)
        || isset(
$_SERVER['HTTP_X_FORWARDED_PROTO']) && strcasecmp($_SERVER['HTTP_X_FORWARDED_PROTO'],'https')===0;
}

Возвращает значение, указывающее, отправлен ли запрос по защищённому каналу (https).

getParam() метод

public mixed getParam(string $name, mixed $defaultValue=NULL)
$name string имя параметра GET
$defaultValue mixed значение параметра по умолчанию, если параметр GET не существует.
{return} mixed значение параметра GET
Исходный код: framework/web/CHttpRequest.php#177 (показать)
public function getParam($name,$defaultValue=null)
{
    return isset(
$_GET[$name]) ? $_GET[$name] : (isset($_POST[$name]) ? $_POST[$name] : $defaultValue);
}

Возвращает значение параметра GET или POST по имени. Если параметр GET или POST не существует, возвращается второе значение аргумента. Если GET и POST содержат параметр с указанным именем, приоритет отдаётся параметру GET.

См. также

  • getQuery
  • getPost

getPatch() метод (доступен начиная с версии v1.1.16)

public mixed getPatch(string $name, mixed $defaultValue=NULL)
$name string имя параметра PATCH
$defaultValue mixed значение параметра по умолчанию, если параметр PATCH не существует.
{return} mixed значение параметра PATCH
Исходный код: framework/web/CHttpRequest.php#271 (показать)
public function getPatch($name,$defaultValue=null)
{
    if(
$this->getIsPatchViaPostRequest())
        return 
$this->getPost($name, $defaultValue);

    if(
$this->getIsPatchRequest())
    {
        
$restParams=$this->getRestParams();
        return isset(
$restParams[$name]) ? $restParams[$name] : $defaultValue;
    }
    else
        return 
$defaultValue;
}

Возвращает значение параметра PATCH по имени. Если параметр PATCH не существует или текущий запрос не является PATCH-запросом, возвращается второе значение аргумента. Если PATCH-запрос был передан через POST с помощью параметра _method, возвращается значение параметра POST.

getPathInfo() метод

public string getPathInfo()
{return} string часть URL запроса после скрипта входа и перед знаком вопроса. Обратите внимание, что возвращаемый pathinfo декодируется начиная с версии 1.1.4. До версии 1.1.4 декодирование зависит от конфигурации сервера (в большинстве случаев не декодируется).
Исходный код: framework/web/CHttpRequest.php#462 (показать)
public function getPathInfo()
{
    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
            throw new 
CException(Yii::t('yii','CHttpRequest is unable to determine the path info of the request.'));

        if(
$pathInfo==='/' || $pathInfo===false)
            
$pathInfo='';
        elseif(
$pathInfo!=='' && $pathInfo[0]==='/')
            
$pathInfo=substr($pathInfo,1);

        if((
$posEnd=strlen($pathInfo)-1)>0 && $pathInfo[$posEnd]==='/')
            
$pathInfo=substr($pathInfo,0,$posEnd);

        
$this->_pathInfo=$pathInfo;
    }
    return 
$this->_pathInfo;
}

Возвращает информацию о пути текущего запрошенного URL. Это относится к части, которая следует после скрипта входа и перед знаком вопроса. Начальные и конечные слэши удаляются.

getPort() метод (доступен начиная с версии v1.1.3)

public integer getPort()
{return} integer номер порта для незащищённых запросов.
Исходный код: framework/web/CHttpRequest.php#811 (показать)
public function getPort()
{
    if(
$this->_port===null)
        
$this->_port=!$this->getIsSecureConnection() && isset($_SERVER['SERVER_PORT']) ? (int)$_SERVER['SERVER_PORT'] : 80;
    return 
$this->_port;
}

Возвращает порт для использования в случае незащищённых запросов. По умолчанию 80, или порт, указанный сервером, если текущий запрос не защищён. Вы можете явно указать его, установив свойство port.

См. также

  • setPort

getPost() метод

public mixed getPost(string $name, mixed $defaultValue=NULL)
$name string имя параметра POST
$defaultValue mixed значение параметра по умолчанию, если параметр POST не существует.
{return} mixed значение параметра POST
Исходный код: framework/web/CHttpRequest.php#205 (показать)
public function getPost($name,$defaultValue=null)
{
    return isset(
$_POST[$name]) ? $_POST[$name] : $defaultValue;
}

Возвращает значение параметра POST по имени. Если параметр POST не существует, возвращается второе значение аргумента.

См. также

  • getParam
  • getQuery

getPreferredAcceptType() метод

public array getPreferredAcceptType()
{return} array предпочитаемый тип MIME пользователя или false, если пользователь не имеет предпочтительных типов.
Исходный код: framework/web/CHttpRequest.php#1024 (показать)
public function getPreferredAcceptType()
{
    
$preferredAcceptTypes=$this->getPreferredAcceptTypes();
    return empty(
$preferredAcceptTypes) ? false : $preferredAcceptTypes[0];
}

Возвращает предпочтительный тип MIME пользователя. Тип MIME возвращается в виде массива (см. parseAcceptHeader()).

getPreferredAcceptTypes() метод

public array getPreferredAcceptTypes()
{return} array принятые пользователем типы MIME в порядке приоритета.
Исходный код: framework/web/CHttpRequest.php#1008 (показать)
public function getPreferredAcceptTypes()
{
    if(
$this->_preferredAcceptTypes===null)
    {
        
$accepts=self::parseAcceptHeader($this->getAcceptTypes());
        
usort($accepts,array(get_class($this),'compareAcceptTypes'));
        
$this->_preferredAcceptTypes=$accepts;
    }
    return 
$this->_preferredAcceptTypes;
}

Возвращает массив принятых пользователем типов MIME в порядке приоритета. Каждый элемент массива содержит карту с типом, подтипом, базовым типом и параметрами (массив пар ключ-значение). См. parseAcceptHeader() для описания карты массива.

getPreferredLanguage() метод

public string getPreferredLanguage(array $languages=array ( ))
$languages array список языков, поддерживаемых приложением. Если пусто, этот метод вернёт первый язык, возвращённый [[getPreferredLanguages()]].
{return} string язык, который приложение должно использовать. Возвращает false, если оба [[getPreferredLanguages()]] и `$languages` пустые.
Исходный код: framework/web/CHttpRequest.php#1072 (показать)
public function getPreferredLanguage($languages=array())
{
    
$preferredLanguages=$this->getPreferredLanguages();
    if(empty(
$languages)) {
        return !empty(
$preferredLanguages) ? CLocale::getCanonicalID($preferredLanguages[0]) : false;
    }
    foreach (
$preferredLanguages as $preferredLanguage) {
        
$preferredLanguage=CLocale::getCanonicalID($preferredLanguage);
        foreach (
$languages as $language) {
            
$language=CLocale::getCanonicalID($language);
            
// en_us==en_us, en==en_us, en_us==en
            
if($language===$preferredLanguage || strpos($preferredLanguage,$language.'_')===0 || strpos($language,$preferredLanguage.'_')===0) {
                return 
$language;
            }
        }
    }
    return 
reset($languages);
}

Возвращает предпочтительный язык пользователя, который должно использовать приложение. Решение языка основано на предпочтительных языках пользователя и языках, поддерживаемых приложением. Метод попытается найти наилучшее соответствие.

getPreferredLanguages() метод

public array getPreferredLanguages()
{return} array принятые пользователем языки в порядке приоритета. См. http://tools.ietf.org/html/rfc2616#section-14.4
Исходный код: framework/web/CHttpRequest.php#1036 (показать)
public function getPreferredLanguages()
{
    if(
$this->_preferredLanguages===null)
    {
        
$sortedLanguages=array();
        if(isset(
$_SERVER['HTTP_ACCEPT_LANGUAGE']) && $n=preg_match_all('/([\w\-_]+)(?:\s*;\s*q\s*=\s*(\d*\.?\d*))?/',$_SERVER['HTTP_ACCEPT_LANGUAGE'],$matches))
        {
            
$languages=array();

            for(
$i=0;$i<$n;++$i)
            {
                
$q=$matches[2][$i];
                if(
$q==='')
                    
$q=1;
                if(
$q)
                    
$languages[]=array((float)$q,$matches[1][$i]);
            }

            
usort($languages,create_function('$a,$b','if($a[0]==$b[0]) {return 0;} return ($a[0]<$b[0]) ? 1 : -1;'));
            foreach(
$languages as $language)
                
$sortedLanguages[]=$language[1];
        }
        
$this->_preferredLanguages=$sortedLanguages;
    }
    return 
$this->_preferredLanguages;
}

Возвращает массив принятых пользователем языков в порядке приоритета. Идентификаторы языков, возвращённые методом, НЕ будут канонизированы с помощью CLocale::getCanonicalID.

getPut() метод (доступен с версии v1.1.7)

public mixed getPut(string $name, mixed $defaultValue=NULL)
$name string имя параметра PUT
$defaultValue mixed значение параметра по умолчанию, если параметр PUT не существует.
{return} mixed значение параметра PUT
Исходный код: framework/web/CHttpRequest.php#246 (показать)
public function getPut($name,$defaultValue=null)
{
    if(
$this->getIsPutViaPostRequest())
        return 
$this->getPost($name, $defaultValue);

    if(
$this->getIsPutRequest())
    {
        
$restParams=$this->getRestParams();
        return isset(
$restParams[$name]) ? $restParams[$name] : $defaultValue;
    }
    else
        return 
$defaultValue;
}

Возвращает значение параметра PUT по имени. Если параметр PUT не существует или текущий запрос не является запросом PUT, возвращается второе значение в методе. Если запрос PUT был протуннелирован через POST с помощью параметра _method, будет возвращено значение параметра POST (доступно с версии 1.1.11).

getQuery() метод

public mixed getQuery(string $name, mixed $defaultValue=NULL)
$name string имя параметра GET
$defaultValue mixed значение параметра по умолчанию, если параметр GET не существует.
{return} mixed значение параметра GET
Исходный код: framework/web/CHttpRequest.php#191 (показать)
public function getQuery($name,$defaultValue=null)
{
    return isset(
$_GET[$name]) ? $_GET[$name] : $defaultValue;
}

Возвращает значение параметра GET по имени. Если параметр GET не существует, возвращается второе значение в методе.

См. также

  • getPost
  • getParam

getQueryString() метод

public string getQueryString()
{return} string часть URL запроса после вопросительного знака
Исходный код: framework/web/CHttpRequest.php#572 (показать)
public function getQueryString()
{
    return isset(
$_SERVER['QUERY_STRING'])?$_SERVER['QUERY_STRING']:'';
}

Возвращает часть URL запроса после вопросительного знака.

getRawBody() метод (доступен с версии v1.1.13)

public string getRawBody()
{return} string тело запроса
Исходный код: framework/web/CHttpRequest.php#313 (показать)
public function getRawBody()
{
    static 
$rawBody;
    if(
$rawBody===null)
        
$rawBody=file_get_contents('php://input');
    return 
$rawBody;
}

Возвращает тело HTTP-запроса в сыром виде.

getRequestType() метод

public string getRequestType()
{return} string тип запроса, например GET, POST, HEAD, PUT, PATCH, DELETE.
Исходный код: framework/web/CHttpRequest.php#594 (показать)
public function getRequestType()
{
    if(isset(
$_POST['_method']))
        return 
strtoupper($_POST['_method']);
    elseif(isset(
$_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']))
        return 
strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);

    return 
strtoupper(isset($_SERVER['REQUEST_METHOD'])?$_SERVER['REQUEST_METHOD']:'GET');
}

Возвращает тип запроса, например GET, POST, HEAD, PUT, PATCH, DELETE. Тип запроса можно вручную установить в запросах POST с параметром _method. Полезно для RESTful запросов из старых браузеров, которые не поддерживают PUT, PATCH или DELETE напрямую (доступно с версии 1.1.11).

getRequestUri() метод

public string getRequestUri()
{return} string часть URI запроса для текущего запрашиваемого URL.
Исходный код: framework/web/CHttpRequest.php#538 (показать)
public function getRequestUri()
{
    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']))  // IIS 5.0 CGI
        
{
            
$this->_requestUri=$_SERVER['ORIG_PATH_INFO'];
            if(!empty(
$_SERVER['QUERY_STRING']))
                
$this->_requestUri.='?'.$_SERVER['QUERY_STRING'];
        }
        else
            throw new 
CException(Yii::t('yii','CHttpRequest is unable to determine the request URI.'));
    }

    return 
$this->_requestUri;
}

Возвращает часть URI запроса для текущего запрашиваемого URL. Это часть, которая следует за частью host info. Она включает часть query string, если она есть. Реализация этого метода ссылается на Zend_Controller_Request_Http в Zend Framework.

getRestParams() метод (доступен с версии v1.1.13, метод стал публичным)

public array getRestParams()
{return} array параметры запроса
Исходный код: framework/web/CHttpRequest.php#291 (показать)
public function getRestParams()
{
    if(
$this->_restParams===null)
    {
        
$result=array();
        if (
strncmp($this->getContentType(), 'application/json', 16) === 0)
            
$result = CJSON::decode($this->getRawBody(), $this->jsonAsArray);
        elseif(
function_exists('mb_parse_str'))
            
mb_parse_str($this->getRawBody(), $result);
        else
            
parse_str($this->getRawBody(), $result);
        
$this->_restParams=$result;
    }

    return 
$this->_restParams;
}

Возвращает параметры запроса. Обычно PUT, PATCH или DELETE.

getScriptFile() метод

public string getScriptFile()
{return} string путь к файлу скрипта входа (обрабатывается с помощью realpath())
Исходный код: framework/web/CHttpRequest.php#750 (показать)
public function getScriptFile()
{
    if(
$this->_scriptFile!==null)
        return 
$this->_scriptFile;
    else
        return 
$this->_scriptFile=realpath($_SERVER['SCRIPT_FILENAME']);
}

Возвращает путь к файлу скрипта входа.

getScriptUrl() метод

public string getScriptUrl()
{return} string относительный URL скрипта входа.
Исходный код: framework/web/CHttpRequest.php#420 (показать)
public function getScriptUrl()
{
    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
            throw new 
CException(Yii::t('yii','CHttpRequest is unable to determine the entry script URL.'));
    }
    return 
$this->_scriptUrl;
}

Возвращает относительный URL скрипта входа. Реализация этого метода ссылается на Zend_Controller_Request_Http в Zend Framework.

getSecurePort() метод (доступен с версии v1.1.3)

public integer getSecurePort()
{return} integer номер порта для защищённых запросов.
Исходный код: framework/web/CHttpRequest.php#842 (показать)
public function getSecurePort()
{
    if(
$this->_securePort===null)
        
$this->_securePort=$this->getIsSecureConnection() && isset($_SERVER['SERVER_PORT']) ? (int)$_SERVER['SERVER_PORT'] : 443;
    return 
$this->_securePort;
}

Возвращает порт, используемый для защищённых запросов. По умолчанию 443 или порт, указанный сервером, если текущий запрос защищённый. Можно явно указать его, задав свойство securePort.

См. также

  • setSecurePort

getServerName() метод

public string getServerName()
{return} string имя сервера
Исходный код: framework/web/CHttpRequest.php#696 (показать)
public function getServerName()
{
    return 
$_SERVER['SERVER_NAME'];
}

Возвращает имя сервера.

getServerPort() метод

public integer getServerPort()
{return} integer номер порта сервера
Исходный код: framework/web/CHttpRequest.php#705 (показать)
public function getServerPort()
{
    return 
$_SERVER['SERVER_PORT'];
}

Возвращает номер порта сервера.

getUrl() метод

public string getUrl()
{return} строка часть URL запроса после информации о хосте.
Исходный код: framework/web/CHttpRequest.php#326 (показать)
public function getUrl()
{
    return 
$this->getRequestUri();
}

Возвращает запрашиваемый URL. Это то же самое, что getRequestUri.

getUrlReferrer() метод

public string getUrlReferrer()
{return} строка ссылка на URL, null, если отсутствует
Исходный код: framework/web/CHttpRequest.php#714 (показать)
public function getUrlReferrer()
{
    return isset(
$_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:null;
}

Возвращает ссылку на URL, null, если отсутствует

getUserAgent() метод

public string getUserAgent()
{return} строка user agent, null, если отсутствует
Исходный код: framework/web/CHttpRequest.php#723 (показать)
public function getUserAgent()
{
    return isset(
$_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:null;
}

Возвращает user agent, null, если отсутствует.

getUserHost() метод

public string getUserHost()
{return} строка имя хоста пользователя, null, если не может быть определено
Исходный код: framework/web/CHttpRequest.php#741 (показать)
public function getUserHost()
{
    return isset(
$_SERVER['REMOTE_HOST'])?$_SERVER['REMOTE_HOST']:null;
}

Возвращает имя хоста пользователя, null, если оно не может быть определено.

getUserHostAddress() метод

public string getUserHostAddress()
{return} строка IP-адрес пользователя
Исходный код: framework/web/CHttpRequest.php#732 (показать)
public function getUserHostAddress()
{
    return isset(
$_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:'127.0.0.1';
}

Возвращает IP-адрес пользователя.

init() метод

public void init()
Исходный код: framework/web/CHttpRequest.php#116 (показать)
public function init()
{
    
parent::init();
    
$this->normalizeRequest();
}

Инициализирует компонент приложения. Этот метод переопределяет родительскую реализацию, предварительно обрабатывая данные запроса пользователя.

normalizeRequest() метод

protected void normalizeRequest()
Исходный код: framework/web/CHttpRequest.php#127 (показать)
protected function normalizeRequest()
{
    
// normalize request
    
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'));
}

Нормализует данные запроса. Этот метод удаляет слеши из данных запроса, если get_magic_quotes_gpc() возвращает true. Также выполняется проверка CSRF, если enableCsrfValidation имеет значение true.

parseAcceptHeader() метод

public static array parseAcceptHeader(string $header)
$header строка значение заголовка accept для анализа
{return} массив принятые пользователем типы MIME.
Исходный код: framework/web/CHttpRequest.php#919 (показать)
public static function parseAcceptHeader($header)
{
    
$matches=array();
    
$accepts=array();
    
// get individual entries with their type, subtype, basetype and params
    
preg_match_all('/(?:\G\s?,\s?|^)(\w+|\*)\/(\w+|\*)(?:\+(\w+))?|(?<!^)\G(?:\s?;\s?(\w+)=([\w\.]+))/',$header,$matches);
    
// the regexp should (in theory) always return an array of 6 arrays
    
if(count($matches)===6)
    {
        
$i=0;
        
$itemLen=count($matches[1]);
        while(
$i<$itemLen)
        {
            
// fill out a content type
            
$accept=array(
                
'type'=>$matches[1][$i],
                
'subType'=>$matches[2][$i],
                
'baseType'=>null,
                
'params'=>array(),
            );
            
// fill in the base type if it exists
            
if($matches[3][$i]!==null && $matches[3][$i]!=='')
                
$accept['baseType']=$matches[3][$i];
            
// continue looping while there is no new content type, to fill in all accompanying params
            
for($i++;$i<$itemLen;$i++)
            {
                
// if the next content type is null, then the item is a param for the current content type
                
if($matches[1][$i]===null || $matches[1][$i]==='')
                {
                    
// if this is the quality param, convert it to a double
                    
if($matches[4][$i]==='q')
                    {
                        
// sanity check on q value
                        
$q=(double)$matches[5][$i];
                        if(
$q>1)
                            
$q=(double)1;
                        elseif(
$q<0)
                            
$q=(double)0;
                        
$accept['params'][$matches[4][$i]]=$q;
                    }
                    else
                        
$accept['params'][$matches[4][$i]]=$matches[5][$i];
                }
                else
                    break;
            }
            
// q defaults to 1 if not explicitly given
            
if(!isset($accept['params']['q']))
                
$accept['params']['q']=(double)1;
            
$accepts[] = $accept;
        }
    }
    return 
$accepts;
}

Парсит HTTP заголовок Accept, возвращая карту массива со всеми частями каждой записи. Каждая запись массива состоит из карты с типом, подтипом, базовым типом и параметрами, картой массива параметров ключ-значение, обязательно включающей значение `q` (т.е. приоритет ранжирования) в виде числа с плавающей точкой. Например, значение заголовка Accept 'application/xhtml+xml;q=0.9;level=1' даст запись массива

array(
       'type' => 'application',
       'subType' => 'xhtml',
       'baseType' => 'xml',
       'params' => array(
           'q' => 0.9,
           'level' => '1',
       ),
)


Обратите внимание: Чтобы избежать большой сложности, не предпринимаются шаги для обеспечения правильного обращения со строками в кавычках. Если текст заголовка включает строки в кавычках, содержащие пробелы или символы , или ;, результаты могут быть некорректными!

См. также http://tools.ietf.org/html/rfc2616#section-14.1 для получения подробной информации о заголовке Accept.

redirect() метод

public void redirect(string $url, boolean $terminate=true, integer $statusCode=302)
$url строка URL для перенаправления. Обратите внимание, что если URL не абсолютный (не начинается с "/"), он будет относительным к текущему URL запроса.
$terminate логическое прекратить ли текущее приложение
$statusCode целое код HTTP-статуса. По умолчанию 302. См. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html для получения подробной информации о коде HTTP-статуса.
Исходный код: framework/web/CHttpRequest.php#885 (показать)
public function redirect($url,$terminate=true,$statusCode=302)
{
    if(
strpos($url,'/')===0 && strpos($url,'//')!==0)
        
$url=$this->getHostInfo().$url;
    
header('Location: '.$url, true, $statusCode);
    if(
$terminate)
        
Yii::app()->end();
}

Перенаправляет браузер на указанный URL.

sendFile() метод

public void sendFile(string $fileName, string $content, string $mimeType=NULL, boolean $terminate=true)
$fileName строка имя файла
$content строка содержание, которое нужно установить.
$mimeType строка тип MIME содержимого. Если null, он будет автоматически определен на основе имени файла.
$terminate логическое прекратить ли текущее приложение после вызова этого метода
Исходный код: framework/web/CHttpRequest.php#1099 (показать)
public function sendFile($fileName,$content,$mimeType=null,$terminate=true)
{
    if(
$mimeType===null)
    {
        if((
$mimeType=CFileHelper::getMimeTypeByExtension($fileName))===null)
            
$mimeType='text/plain';
    }

    
$fileSize=(function_exists('mb_strlen') ? mb_strlen($content,'8bit') : strlen($content));
    
$contentStart=0;
    
$contentEnd=$fileSize-1;

    
$httpVersion=$this->getHttpVersion();
    if(isset(
$_SERVER['HTTP_RANGE']))
    {
        
header('Accept-Ranges: bytes');

        
//client sent us a multibyte range, can not hold this one for now
        
if(strpos($_SERVER['HTTP_RANGE'],',')!==false)
        {
            
header("Content-Range: bytes $contentStart-$contentEnd/$fileSize");
            throw new 
CHttpException(416,'Requested Range Not Satisfiable');
        }

        
$range=str_replace('bytes=','',$_SERVER['HTTP_RANGE']);

        
//range requests starts from "-", so it means that data must be dumped the end point.
        
if($range[0]==='-')
            
$contentStart=$fileSize-substr($range,1);
        else
        {
            
$range=explode('-',$range);
            
$contentStart=$range[0];

            
// check if the last-byte-pos presents in header
            
if((isset($range[1]) && is_numeric($range[1])))
                
$contentEnd=$range[1];
        }

        
/* Check the range and make sure it's treated according to the specs.
         * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
         */
        // End bytes can not be larger than $end.
        
$contentEnd=($contentEnd > $fileSize) ? $fileSize-1 : $contentEnd;

        
// Validate the requested range and return an error if it's not correct.
        
$wrongContentStart=($contentStart>$contentEnd || $contentStart>$fileSize-1 || $contentStart<0);

        if(
$wrongContentStart)
        {
            
header("Content-Range: bytes $contentStart-$contentEnd/$fileSize");
            throw new 
CHttpException(416,'Requested Range Not Satisfiable');
        }

        
header("HTTP/$httpVersion 206 Partial Content");
        
header("Content-Range: bytes $contentStart-$contentEnd/$fileSize");
    }
    else
        
header("HTTP/$httpVersion 200 OK");

    
$length=$contentEnd-$contentStart+1; // Calculate new content length

    
header('Pragma: public');
    
header('Expires: 0');
    
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    
header("Content-Type: $mimeType");
    
header('Content-Length: '.$length);
    
header("Content-Disposition: attachment; filename=\"$fileName\"");
    
header('Content-Transfer-Encoding: binary');
    
$content=function_exists('mb_substr') ? mb_substr($content,$contentStart,$length,'8bit') : substr($content,$contentStart,$length);

    if(
$terminate)
    {
        
// clean up the application first because the file downloading could take long time
        // which may cause timeout of some resources (such as DB connection)
        
ob_start();
        
Yii::app()->end(0,false);
        
ob_end_clean();
        echo 
$content;
        exit(
0);
    }
    else
        echo 
$content;
}

Отправляет файл пользователю.

setBaseUrl() метод

public void setBaseUrl(string $value)
$value строка относительный URL для приложения
Исходный код: framework/web/CHttpRequest.php#409 (показать)
public function setBaseUrl($value)
{
    
$this->_baseUrl=$value;
}

Устанавливает относительный URL для приложения. По умолчанию URL определяется на основе URL скрипта входа. Этот сеттер предоставляется в случае, если вы хотите изменить это поведение.

setHostInfo() метод

public void setHostInfo(string $value)
$value строка схема и часть имени хоста URL приложения.
Исходный код: framework/web/CHttpRequest.php#383 (показать)
public function setHostInfo($value)
{
    
$this->_hostInfo=rtrim($value,'/');
}

Устанавливает схему и часть имени хоста URL приложения. Этот сеттер предоставляется в случае, если схему и имя хоста нельзя определить на определенных веб-серверах.

setPort() метод (доступен с версии v1.1.3)

public void setPort(integer $value)
$value целое номер порта.
Исходный код: framework/web/CHttpRequest.php#825 (показать)
public function setPort($value)
{
    
$this->_port=(int)$value;
    
$this->_hostInfo=null;
}

Устанавливает порт для использования для небезопасных запросов. Этот сеттер предоставляется в случае необходимости настроить определенный порт для определенных конфигураций сервера.

setScriptUrl() метод

public void setScriptUrl(string $value)
$value string относительный URL-адрес скрипта входа в приложение.
Исходный код: framework/web/CHttpRequest.php#447 (показать)
public function setScriptUrl($value)
{
    
$this->_scriptUrl='/'.trim($value,'/');
}

Устанавливает относительный URL-адрес скрипта входа в приложение. Этот метод-сеттер предоставляется на случай, если URL-адрес скрипта входа нельзя определить на некоторых веб-серверах.

setSecurePort() метод (доступен с версии 1.1.3)

public void setSecurePort(integer $value)
$value integer номер порта.
Исходный код: framework/web/CHttpRequest.php#856 (показать)
public function setSecurePort($value)
{
    
$this->_securePort=(int)$value;
    
$this->_hostInfo=null;
}

Устанавливает порт для использования в защищенных запросах. Этот метод-сеттер предоставляется на случай, если для определённых конфигураций сервера необходим пользовательский порт.

stripSlashes() метод

public mixed stripSlashes(mixed &$data)
$data mixed входные данные для обработки
{return} mixed обработанные данные
Исходный код: framework/web/CHttpRequest.php#153 (показать)
public function stripSlashes(&$data)
{
    if(
is_array($data))
    {
        if(
count($data) == 0)
            return 
$data;
        
$keys=array_map('stripslashes',array_keys($data));
        
$data=array_combine($keys,array_values($data));
        return 
array_map(array($this,'stripSlashes'),$data);
    }
    else
        return 
stripslashes($data);
}

Удаляет косые черты из входных данных. Этот метод применяется при включенном magic quotes.

validateCsrfToken() метод

public void validateCsrfToken(CEvent $event)
$event CEvent параметр события
Исходный код: framework/web/CHttpRequest.php#1326 (показать)
public function validateCsrfToken($event)
{
    if (
$this->getIsPostRequest() ||
        
$this->getIsPutRequest() ||
        
$this->getIsPatchRequest() ||
        
$this->getIsDeleteRequest())
    {
        
$cookies=$this->getCookies();

        
$method=$this->getRequestType();
        switch(
$method)
        {
            case 
'POST':
                
$maskedUserToken=$this->getPost($this->csrfTokenName);
            break;
            case 
'PUT':
                
$maskedUserToken=$this->getPut($this->csrfTokenName);
            break;
            case 
'PATCH':
                
$maskedUserToken=$this->getPatch($this->csrfTokenName);
            break;
            case 
'DELETE':
                
$maskedUserToken=$this->getDelete($this->csrfTokenName);
        }

        if (!empty(
$maskedUserToken) && $cookies->contains($this->csrfTokenName))
        {
            
$securityManager=Yii::app()->getSecurityManager();
            
$maskedCookieToken=$cookies->itemAt($this->csrfTokenName)->value;
            
$cookieToken=$securityManager->unmaskToken($maskedCookieToken);
            
$userToken=$securityManager->unmaskToken($maskedUserToken);
            
$valid=$cookieToken===$userToken;
        }
        else
            
$valid = false;
        if (!
$valid)
            throw new 
CHttpException(400,Yii::t('yii','The CSRF token could not be verified.'));
    }
}

Выполняет проверку CSRF. Это обработчик событий, реагирующий на CApplication::onBeginRequest. Стандартная реализация сравнивает токен CSRF, полученный из куки и из поля POST. Если они отличаются, то обнаруживается атака CSRF.

xSendFile() метод

public void xSendFile(string $filePath, array $options=array ( ))
$filePath string имя файла с полным путем
$options array дополнительные параметры:
  • saveName: имя файла, отображаемое пользователю; если не задано, используется реальное имя файла
  • mimeType: тип MIME файла; если не задан, он определяется автоматически на основе имени файла; если установлен в значение null, заголовок content-type не будет отправлен.
  • xHeader: соответствующий заголовок x-sendfile; по умолчанию "X-Sendfile"
  • terminate: завершить ли текущее приложение после вызова этого метода; по умолчанию true
  • forceDownload: определяет, будет ли файл загружаться или отображаться встроеным образом; по умолчанию true. (С версии 1.1.9.)
  • addHeaders: массив дополнительных HTTP-заголовков в парах "заголовок-значение" (доступно с версии 1.1.10)
Исходный код: framework/web/CHttpRequest.php#1241 (показать)
public function xSendFile($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();
}

Отправляет существующий файл в браузер для загрузки с помощью x-sendfile.

X-Sendfile — это функция, позволяющая веб-приложению перенаправлять запрос на файл веб-серверу, который, в свою очередь, обрабатывает запрос, тем самым исключая необходимость выполнения задач, таких как чтение файла и отправка его пользователю. При работе с большим количеством файлов (или очень большими файлами) это может привести к значительному увеличению производительности, поскольку веб-приложению разрешено завершить работу раньше, пока веб-сервер обрабатывает запрос.

Запрос отправляется на сервер через специальный нестандартный HTTP-заголовок. Когда веб-сервер обнаруживает наличие такого заголовка, он отбрасывает весь вывод и отправляет указанный файл с помощью внутренних механизмов веб-сервера, включая все оптимизации, такие как кэширующие заголовки.

Так как этот заголовок нестандартный, для различных веб-серверов существуют различные директивы:

  • Apache: X-Sendfile
  • Lighttpd v1.4: X-LIGHTTPD-send-file
  • Lighttpd v1.5: X-Sendfile
  • Nginx: X-Accel-Redirect
  • Cherokee: X-Sendfile и X-Accel-Redirect
Для работы этого метода модуль X-SENDFILE должен быть включён на веб-сервере, а также должен быть отправлен соответствующий заголовок xHeader.

Примечание: Этот параметр позволяет загружать файлы, которые не находятся в веб-папках, а также файлы, которые в противном случае защищены (запрещено всем), такие как .htaccess

Побочные эффекты: Если этот параметр отключён на веб-сервере, при вызове этого метода откроется диалоговое окно настройки загрузки, но загруженный файл будет иметь 0 байт.

Известные проблемы: Существует ошибка с Internet Explorer 6, 7 и 8, когда X-SENDFILE используется по защищённому соединению (SSL), он будет отображать сообщение об ошибке: «Internet Explorer не смог открыть этот интернет-сайт. Запрашиваемый сайт недоступен или не найден». Вы можете обойти эту проблему, удалив заголовок Pragma.

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

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CHttpRequest

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API