2012-06-25 13 views
32

Jak wykryć metodę HTTP w klasie kontrolera CodeIgniter?Jak wykryć metodę HTTP w CodeIgniter

Zmieniano: Czy istnieje inny sposób niż za pomocą $_SERVER['REQUEST_METHOD'] w CodeIgniter?

+1

możliwe duplikat [php wykrywania typu żądania (GET, POST PUT lub usunięcie)] (http://stackoverflow.com/questions/359047/php-detecting-request -type-get-post-put-or-delete) – Esailija

+0

Wiem o tym, ale czy to prawda używać zmiennej '$ _SERVER' w CodeIgniter? –

+0

podobnie jak ty używasz dowolnej innej zmiennej – Esailija

Odpowiedz

52

Dzięki Branden, znalazłem odpowiedź. $this->input->server($index) jest identyczna z $_SERVER[$index].

Aby uzyskać metodę, można użyć: $this->input->server('REQUEST_METHOD').

UPDATE: (dzięki Ecir Hana)

Od CodeIgniter 3, stosując od method możliwe jest również:

echo $this->input->method(TRUE); // Outputs: POST 
echo $this->input->method(FALSE); // Outputs: post 
echo $this->input->method(); // Outputs: post 
4

Możesz wykryć GET i POST za pomocą biblioteki Input.

$this->input->post() lub $this->input->get()

Więcej informacji można znaleźć: http://ellislab.com/codeigniter%20/user-guide/libraries/input.html

+6

Z dokumentów '$ this-> input-> post(); // zwraca wszystkie elementy POST bez filtra XSS', więc to nie odpowiada na pytanie. W miarę uzyskiwania danych zamiast wykrywania metody HTTP. –

+1

Nie działa, jeśli żądanie (post na przykład) nie zawiera żadnych danych. – Korri

14

W CodeIgniter 3, można użyć metody method uhm ... klasy wejściowej.

Z dokumentów:

echo $this->input->method(TRUE); // Outputs: POST 
echo $this->input->method(FALSE); // Outputs: post 
echo $this->input->method(); // Outputs: post