2013-07-13 4 views
0

Я использую Codeigniter. У меня есть метод ниже - create_client, когда пользователь отправляет форму со всеми заполненными деталями.Как предотвратить использование методов POST через GET в Codeigniter?

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Admin extends CI_Controller { 

public function create_client() 
{ 

// catch all the form data here 
//process form data 


} 

} 

Эта функция была разработана для принятия формы отправки. Но если кто-то пытается получить доступ к admin/create_client (GET), он может также выполнить функцию. Поскольку данные о форме через инструкцию GET отсутствуют, это приводит к ошибке.

Как предотвратить доступ к методу через GET. Одним из решений является поставить некоторые проверки в методе -

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 

// do things here 

} else { 

return false; 

} 

Но у меня есть много таких методов, и я не хочу, чтобы изменить все такие способы. Есть ли простой способ? Скажем, например, указывая в конфигурации маршрутов, что этот метод является функцией POST и не доступен через GET?

+1

Вы можете взглянуть на [CI реализации RESTful сервер Phil осетра] (https://github.com/philsturgeon/codeigniter-restserver), вот [полезно учебник] (http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/). –

ответ

0

Попробуйте remap:

public function _remap($method, $params = array()) 
{ 
    switch($method) { 
     case 'post_method': 
     case 'post_method2': 
      if (! $_SERVER['REQUEST_METHOD'] === 'POST') 
       // return error 
    } 
    if (method_exists($this, $method)) 
     return call_user_func_array(array($this, $method), $params); 
    show_404(); 
} 
Смежные вопросы