我正在使用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访问该方法。一种解决方案是在方法中加入一些检查 -
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// do things here
} else {
return false;
}
但我有很多这样的方法,我不想改变所有这些方法。有一个简单的方法吗?比如说在Routes配置中指定此方法是POST函数并且无法通过GET访问?
答案 0 :(得分: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();
}