标题中的问题是什么?
当
当
$_GET[foo]
,$_POST[foo]
和$_COOKIE[foo]
这三个变量都存在时,会发生什么?哪一个变量将被包含在$_REQUEST
中?$_GET[foo]
,$_POST[foo]
和$_COOKIE[foo]
这三个变量都存在时,会发生什么?哪一个变量将被包含在$_REQUEST
中?我会说从不。
如果我想通过各种方法设置某些东西,我会为每种方法编写代码以提醒自己采用了这种方式,否则你可能没有意识到已经被覆盖的内容。
难道它不应该像这样工作:
$_GET = 非破坏性操作(排序、记录操作、查询等)
$_POST = 破坏性操作(删除、更新等)
$_COOKIE = 不重要的设置(样式表首选项等)
$_SESSION = 重要的设置(用户名、是否已登录?访问级别等)
$_REQUEST
只是一个快捷方式,用于避免测试数据是否可以来自POST、GET和cookie。
有一些陷阱:
$_REQUEST
。尽管如此,如果你知道你在做什么,那么这只是另一个方便的PHP技巧。
如果我想快速更新可能来自多个来源的变量,我会使用它,例如:
在你的控制器中,决定服务哪个页面,而无需检查请求是来自表单操作还是超链接。
检查会话是否仍处于活动状态,而不考虑会话ID的传递方式。
当您不确定值是由哪个位置填充的,或者当您同时使用它们并且想要通过POST和GET方法循环遍历所有值时。
当我不希望人们轻易访问所传递的内容时,我使用POST方法;而当我不介意他们在URL中看到值时,我使用GET方法。通常我不会过多地使用cookies,因为我认为SESSION对于持久化值来说已经足够了(尽管拥有一个适当的注册表是利用它的最佳方式)。