![](/img/trans.png)
[英]PHP: Is it a bad practice to use file_get_contents() in a class __constructor?
[英]Is it a bad practice to use a GET parameter (in URL) with no value?
我和我的老板谈论使用GET参数而没有值的URL。 例如
http://www.example.com/?logout
我经常在网上看到这种链接,但当然,这并不意味着它是一件好事。 他担心这不是标准的,可能导致意外错误,所以他更喜欢我使用类似的东西:
http://www.example.com/?logout=yes
根据我的经验,我从来没有遇到任何使用空参数的问题,它们有时对我更有意义(就像在这种情况下, ?logout=no
没有任何意义,因此“logout”的值是无关紧要的我只会测试参数服务器端的存在,而不是它的值。 (它看起来也更干净。)
但是我找不到确认这种用法实际上是有效的,因此实际上不会引起任何问题。
你有这方面的链接吗?
RFC 2396,“统一资源标识符(URI):通用语法”,§3.4,“查询组件”是查询字符串的权威信息来源,并指出:
查询组件是要由资源解释的信息字符串。
[...]
在查询组件中,保留字符“;”,“/”,“?”,“:”,“@”,“&”,“=”,“+”,“,”和“$”。
RFC 2616,“超文本传输协议 - HTTP / 1.1”,§3.2.2,“http URL”,不重新定义。
简而言之,您提供的查询字符串(“注销”)完全有效。
密钥不需要值就可以产生任何影响。 它也不会使URL的有效性降低,URL RFC1738不会将其列为URL的必需部分。
如果你真的不需要价值,那只是一个偏好问题。
http://example.com/?logout
就像有效的URL一样
http://example.com/?logout=yes
它的所有不同之处在于,如果你想确保“是”位是绝对设置的,你可以检查它的值。 喜欢:
if(isset($_GET['logout']) && $_GET['logout'] == "yes") {
// Only proceed if the value is explicitly set to yes
如果您只想知道logout
密钥是否设置在URL中的某个位置,那么仅列出没有赋值的密钥就足够了。 然后你可以这样检查:
if(isset($_GET['logout'])) {
// Continue regardless of what the value is set to (or if it's left empty)
它非常好,不会导致任何错误。 虽然,现在大多数框架都是基于MVC的,所以在URL中你需要提到一个控制器和一个动作 ,所以它看起来更像是/users/logout
(BTW,也是StackOverflow使用该URL来记录用户;)。
它可能导致错误的声明听起来像你的应用程序手动访问原始$_GET
,我绝对认为构建没有框架的应用程序(通常提供MVC堆栈和路由器/调度程序)是真正危险的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.