1

Codeigniter を使用しています。私は以下のメソッドを持っています - ユーザーがすべての詳細が記入されたフォームを送信したときの create_client 。

<?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 経由でアクセスされないようにするにはどうすればよいですか。1つの解決策は、メソッドにいくつかのチェックを入れることです-

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

// do things here 

} else  {

return false;

}

しかし、私はそのようなメソッドをたくさん持っており、そのようなメソッドをすべて変更したくありません。簡単な方法はありますか?たとえば、このメソッドが POST 関数であり、GET 経由でアクセスできないことを Routes 構成で指定するとします。

4

1 に答える 1

0

リマップを試してください:

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();
}
于 2013-07-13T05:00:31.643 に答える