2013-09-01 3 views
1

Есть встроенная функция в Codeigniter, чтобы узнать метод HTTP aka request (get/post/put ...) в контроллере? Я думаю, что-то вроде:Запретить доступ к некоторому URI

if (! $this->input->is_post()) show_error('Access forbidden', 403); 

Я хочу, чтобы запретить доступ к G Метод функций, требующих пост входов. Я не могу найти что-то в доке об этой простой вещи.

ответ

2

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

if($_SERVER['REQUEST_METHOD'] == 'GET'){ 
    exit(); 
} 
//continue with your code. it's a POST. 
1

В нормальных условиях вы можете использовать как следующий

if($_SERVER['REQUEST_METHOD'] == 'GET') 
//abort 

или вы можете создать вспомогательный CI для этого.

Если вы хотите предотвратить пост, используйте строку «POST» в условии if. Именно этот прямой вперед.

При подозрительных обстоятельствах, если вы хотите, чтобы предотвратить пост (если вы чувствуете, что метод запроса можно манипулировать)

Примечание: я не использовал следующее, и это только моя мгновенная мысль. проверьте наличие входных данных HTTP.

$rawdata = file_get_contents('php://input'); 

может быть, вы можете проверить STRLEN больше нуля ... или добавить свою логику здесь.

Предполагая, что вы не ищите, чтобы решить эту проблему, используйте только codeigniter.

+0

немного с видом заставил меня сделать опечатки причину не оператора в вашем, если условие, которое заставило меня подумать, что вы предотвращения после. в любом случае я обновил свой ответ. –

1

Вы можете попробовать как этот:

if($this->input->server('REQUEST_METHOD') == 'POST'){ 
    show_error('Access forbidden', 403); 
} 
Смежные вопросы