# Request Environment
Every HTTP request (usually originated by a browser) contains additional information regarding the request such as header data, files, variables, etc. A web based application needs to parse that information so as to provide the correct response back to the requester.[Phalcon\\Http\\Request](http://docs.iphalcon.cn/api/Phalcon_Http_Request.html)encapsulates the information of the request, allowing you to access it in an object-oriented way.
~~~
<?php
use Phalcon\Http\Request;
// Getting a request instance
$request = new Request();
// Check whether the request was made with method POST
if ($request->isPost()) {
// Check whether the request was made with Ajax
if ($request->isAjax()) {
echo "Request was made using POST and AJAX";
}
}
~~~
## 獲取值(Getting Values)
PHP automatically fills the superglobal arrays`$_GET`and`$_POST`depending on the type of the request. These arrays contain the values present in forms submitted or the parameters sent via the URL. The variables in the arrays are never sanitized and can contain illegal characters or even malicious code, which can lead to[SQL injection](http://en.wikipedia.org/wiki/SQL_injection)or[Cross Site Scripting (XSS)](http://en.wikipedia.org/wiki/Cross-site_scripting)attacks.
[Phalcon\\Http\\Request](http://docs.iphalcon.cn/api/Phalcon_Http_Request.html)allows you to access the values stored in the`$_REQUEST`,`$_GET`and`$_POST`arrays and sanitize or filter them with the ‘filter’ service, (by default[Phalcon\\Filter](http://docs.iphalcon.cn/reference/filter.html)). The following examples offer the same behavior:
~~~
<?php
use Phalcon\Filter;
$filter = new Filter();
// Manually applying the filter
$email = $filter->sanitize($_POST["user_email"], "email");
// Manually applying the filter to the value
$email = $filter->sanitize($request->getPost("user_email"), "email");
// Automatically applying the filter
$email = $request->getPost("user_email", "email");
// Setting a default value if the param is null
$email = $request->getPost("user_email", "email", "some@example.com");
// Setting a default value if the param is null without filtering
$email = $request->getPost("user_email", null, "some@example.com");
~~~
## 控制器中訪問請求(Accessing the Request from Controllers)
The most common place to access the request environment is in an action of a controller. To access the[Phalcon\\Http\\Request](http://docs.iphalcon.cn/api/Phalcon_Http_Request.html)object from a controller you will need to use the`$this->request`public property of the controller:
~~~
<?php
use Phalcon\Mvc\Controller;
class PostsController extends Controller
{
public function indexAction()
{
}
public function saveAction()
{
// Check if request has made with POST
if ($this->request->isPost()) {
// Access POST data
$customerName = $this->request->getPost("name");
$customerBorn = $this->request->getPost("born");
}
}
}
~~~
## 文件上傳(Uploading Files)
Another common task is file uploading.[Phalcon\\Http\\Request](http://docs.iphalcon.cn/api/Phalcon_Http_Request.html)offers an object-oriented way to achieve this task:
~~~
<?php
use Phalcon\Mvc\Controller;
class PostsController extends Controller
{
public function uploadAction()
{
// Check if the user has uploaded files
if ($this->request->hasFiles()) {
$files = $this->request->getUploadedFiles();
// Print the real file names and sizes
foreach ($files as $file) {
// Print file details
echo $file->getName(), " ", $file->getSize(), "\n";
// Move the file into the application
$file->moveTo(
"files/" . $file->getName()
);
}
}
}
}
~~~
Each object returned by`Phalcon\Http\Request::getUploadedFiles()`is an instance of the[Phalcon\\Http\\Request\\File](http://docs.iphalcon.cn/api/Phalcon_Http_Request_File.html)class. Using the`$_FILES`superglobal array offers the same behavior.[Phalcon\\Http\\Request\\File](http://docs.iphalcon.cn/api/Phalcon_Http_Request_File.html)encapsulates only the information related to each file uploaded with the request.
## 使用頭信息(Working with Headers)
As mentioned above, request headers contain useful information that allow us to send the proper response back to the user. The following examples show usages of that information:
~~~
<?php
// Get the Http-X-Requested-With header
$requestedWith = $request->getHeader("HTTP_X_REQUESTED_WITH");
if ($requestedWith === "XMLHttpRequest") {
echo "The request was made with Ajax";
}
// Same as above
if ($request->isAjax()) {
echo "The request was made with Ajax";
}
// Check the request layer
if ($request->isSecure()) {
echo "The request was made using a secure layer";
}
// Get the servers's IP address. ie. 192.168.0.100
$ipAddress = $request->getServerAddress();
// Get the client's IP address ie. 201.245.53.51
$ipAddress = $request->getClientAddress();
// Get the User Agent (HTTP_USER_AGENT)
$userAgent = $request->getUserAgent();
// Get the best acceptable content by the browser. ie text/xml
$contentType = $request->getAcceptableContent();
// Get the best charset accepted by the browser. ie. utf-8
$charset = $request->getBestCharset();
// Get the best language accepted configured in the browser. ie. en-us
$language = $request->getBestLanguage();
~~~
- 簡介
- 安裝
- 安裝(installlation)
- XAMPP下的安裝
- WAMP下安裝
- Nginx安裝說明
- Apache安裝說明
- Cherokee 安裝說明
- 使用 PHP 內置 web 服務器
- Phalcon 開發工具
- Linux 系統下使用 Phalcon 開發工具
- Mac OS X 系統下使用 Phalcon 開發工具
- Windows 系統下使用 Phalcon 開發工具
- 教程
- 教程 1:讓我們通過例子來學習
- 教程 2:INVO簡介
- 教程 3: 保護INVO
- 教程4: 使用CRUD
- 教程5: 定制INVO
- 教程 6: V?kuró
- 教程 7:創建簡單的 REST API
- 組件
- 依賴注入與服務定位器
- MVC架構
- 使用控制器
- 使用模型
- 模型關系
- 事件與事件管理器
- Behaviors
- 模型元數據
- 事務管理
- 驗證數據完整性
- Workingwith Models
- Phalcon查詢語言
- 緩存對象關系映射
- 對象文檔映射 ODM
- 使用視圖
- 視圖助手
- 資源文件管理
- Volt 模版引擎
- MVC 應用
- 路由
- 調度控制器
- Micro Applications
- 使用命名空間
- 事件管理器
- Request Environmen
- 返回響應
- Cookie 管理
- 生成 URL 和 路徑
- 閃存消息
- 使用 Session 存儲數據
- 過濾與清理
- 上下文編碼
- 驗證Validation
- 表單_Forms
- 讀取配置
- 分頁 Pagination
- 使用緩存提高性能
- 安全
- 加密與解密 Encryption/Decryption
- 訪問控制列表
- 多語言支持
- 類加載器 Class Autoloader
- 日志記錄_Logging
- 注釋解析器 Annotations Parser
- 命令行應用 Command Line Applications
- Images
- 隊列 Queueing
- 數據庫抽象層
- 國際化
- 數據庫遷移
- 調試應用程序
- 單元測試
- 進階技巧與延伸閱讀
- 提高性能:下一步該做什么?
- Dependency Injection Explained
- Understanding How Phalcon Applications Work
- Api
- Abstract class Phalcon\Acl