Request Phalcon

Setiap permintaan HTTP (biasanya berasal dr browser) berisi informasi tambahan mengenai permintaan seperti data header, file, variabel, dll. Sebuah aplikasi berbasis web perlu mengurai informasi tsb sehingga memberikan respon balik yang benar ke pengirim request tsb. Phalcon \ Http \ Request merangkum informasi dari request , yang memungkinkan Anda untuk mengakses Request Phalcon dalam cara berorientasi objek.

<?php

// Getting a request instance
$request = new \Phalcon\Http\Request();

// Check whether the request was made with method POST
if ($request->isPost() == true) {

    // Check whether the request was made with Ajax
    if ($request->isAjax() == true) {
        echo "Request was made using POST and AJAX";
    }
}

Parameter GET 

PHP secara otomatis mengisi array superglobal $_GET dan $_POST tergantung pada jenis permintaan. Array ini mengandung nilai-nilai saat ini dalam form yang diajukan atau parameter yang dikirim melalui URL. Variabel dalam array tidak pernah dibersihkan dan bisa saja berisi karakter ilegal atau bahkan kode berbahaya, yang dapat menyebabkan serangan SQL injection atau Cross Site Scripting (XSS) .

Phalcon \ Http \ Request memungkinkan Anda untuk mengakses nilai yang tersimpan dalam array $_REQUEST, $_GET dan $_POST serta membersihkan atau menyaringnya dengan layanan ‘filter’ , (default menggunakan Phalcon \ Filter ). Contoh berikut menawarkan perilaku yang sama:

<?php

// Manually applying the filter
$filter = new Phalcon\Filter();

$email  = $filter->sanitize($_POST["user_email"], "email");

// Manually applying the filter to the value
$filter = new Phalcon\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");

Mengakses Request Phalcon dari Controller 

Tempat yang paling umum untuk mengakses lingkungan request yaitu dalam action controller. Untuk mengakses Phalcon\Http\Request objek dari controller Anda akan perlu menggunakan properti publik controller $this->request :

<?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() == true) {

            // Access POST data
            $customerName = $this->request->getPost("name");
            $customerBorn = $this->request->getPost("born");

        }

    }

}

File Upload 

Tugas lain yang sering adalah meng-upload file Phalcon \ Http \ Request menawarkan cara berorientasi objek untuk menyelesaikan tugas ini:

<?php

use Phalcon\Mvc\Controller;

class PostsController extends Controller
{

    public function uploadAction()
    {
        // Check if the user has uploaded files
        if ($this->request->hasFiles() == true) {

            // 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());
            }
        }
    }

}

Setiap objek yg dikembalikan oleh Phalcon\Http\Request::getUploadedFiles() adalah instance dari class Phalcon \ Http \ Request \ file. Menggunakan array superglobal $_FILES menawarkan perilaku yang sama. Phalcon \ Http \ Request \ file merangkum hanya informasi yang terkait dengan setiap file upload dengan request.

Bekerja dengan Header

Sebagaimana disebutkan di atas, header request berisi informasi berguna yang memungkinkan kita untuk mengirim tanggapan yang tepat kembali ke pengguna. Contoh berikut menunjukkan penggunaan informasi tsb:

<?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() == true) {
    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();

Terjemahan dr Request Environment Phalcon http://docs.phalconphp.com/en/latest/reference/request.html