3

Codeigniter 中是否有内置功能可以知道控制器中的 HTTP 方法又名请求方法(get / post / put ...)?我认为是这样的:

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

我想禁止在需要发布输入的函数中访问 GET 方法。我在文档中找不到关于这个简单事情的内容。

4

3 回答 3

5

尝试这个:

if($_SERVER['REQUEST_METHOD'] == 'GET'){
    exit();
}
//continue with your code. it's a POST.
于 2013-09-01T17:33:04.293 回答
1

你可以试试这样:

if($this->input->server('REQUEST_METHOD') == 'POST'){
    show_error('Access forbidden', 403 );
}
于 2013-09-01T18:14:32.007 回答
1

一般情况下可以像下面这样使用

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

或者您可以为此创建一个 CI 助手。

如果您想阻止发布,请在 if 条件中使用字符串“POST”。这是直截了当的。

在可疑情况下如果你想阻止post(如果你觉得请求方法可以被操纵)

注意:我没有使用以下内容,这只是我的即时想法。检查 http 原始输入数据。

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

可能您可以检查 strlen 是否大于零...或在此处添加您的逻辑。

假设您不想仅使用 codeigniter 来解决此问题

于 2013-09-01T16:47:56.933 回答