在一个面试问题中,我得到以下问题
“如何在自定义构建框架中限制开发人员使用
$_GET
变量。”
我们有自己的自定义构建框架,但在我们的框架中,我们不能限制人们使用$_GET
or$_POST
代替$this->request->get
or $this->request->post
。
我们有访问这个变量的方法,但人们大多数时候使用$_GET
or$_POST
代替我们的方法。
你能给我答案吗?
谢谢
在 php.ini 中,从选项中删除G
和P
字符。variables_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