使用PHP GET变量限制人员

时间:2012-11-12 07:47:44

标签: php get

在一个面试问题中,我得到了以下问题

  

“如何在自定义构建框架中限制开发人员   使用$_GET变量。“

我们有自己的自定义构建框架,但在我们的框架中,我们不能限制人们使用$_GET$_POST代替$this->request->get$this->request->post

我们有访问此变量的方法,但人们大多数时间使用$_GET$_POST代替我们的方法。

你可以给我答案吗?

由于

1 个答案:

答案 0 :(得分:6)

在php.ini中,从G选项中删除Pvariables_order个字符。

或者,如果你想让他们永远恨你,你可以复制超全局的内容,然后将它设置为一个类的实例,当你尝试与它交互时抛出异常:

class supaglobal implements arrayaccess
{
    public function _construct(){}

    function offsetExists($offset) {
        throw new Exception("Don't use GET, bro");
    }
    function offsetSet($property, $value){
        throw new Exception("Don't use GET, bro");
    }
    function offsetUnset($property) {
        throw new Exception("Don't use GET, bro");
    }
    function offsetGet($property){
        throw new Exception("Don't use GET, bro");
    }
}

$approvedget = $_GET;
$_GET = new supaglobal();
$abcd = $_GET["abcd"]; // throws exception
$abcd = $approvedget["abcd"]; // A - OK