企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Request Environment # 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 correctresponse back to the requester. [*Phalcon\\Http\\Request*](#) encapsulates theinformation of the request, allowing you to access it in an object-oriented way. ``` <pre class="calibre14">``` <?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 arrayscontain the values present in forms submitted or the parameters sent via the URL. The variables in the arrays arenever 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*](#) 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*](#)). The following examples offer the same behavior: ``` <pre class="calibre14">``` <?php use Phalcon\Filter; // Manually applying the filter $filter = new Filter(); $email = $filter->sanitize($_POST["user_email"], "email"); // Manually applying the filter to the value $filter = new Filter(); $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*](#) object from a controller you will need to usethe $this->request public property of the controller: ``` <pre class="calibre14">``` <?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*](#) offersan object-oriented way to achieve this task: ``` <pre class="calibre14">``` <?php use Phalcon\Mvc\Controller; class PostsController extends Controller { public function uploadAction() { // Check if the user has uploaded files if ($this->request->hasFiles()) { // Print the real file names and sizes foreach ($this->request->getUploadedFiles() 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*](#) class. Using the $\_FILES superglobalarray offers the same behavior. [*Phalcon\\Http\\Request\\File*](#) encapsulatesonly 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 tothe user. The following examples show usages of that information: ``` <pre class="calibre14">``` <?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->isSecureRequest()) { 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(); ``` ``` | - [索引](# "总目录") - [下一页](# "返回响应(Returning Responses)") | - [上一页](# "事件管理器(Events Manager)") |