代码之家  ›  专栏  ›  技术社区  ›  aborted

$服务器问题?

  •  0
  • aborted  · 技术社区  · 14 年前

    $_SERVER['REQUEST_URI']
    

    我如何使它成为必需的:为了访问此页,您必须来自此页(两者都是内部的)?

    谢谢

    5 回复  |  直到 14 年前
        1
  •  2
  •   Gumbo    14 年前

    请求URI 是请求的URI路径和查询。除此之外 $_SERVER['HTTP_REFERER'] 包含 HTTP request header field Referer 如果有的话。因此,要检查两者是否包含相同的URI路径,可以执行以下操作:

    if (isset($_SERVER['HTTP_REFERER'])) && parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) === parse_url($_SERVER['HTTP_REFERER'], PHP_URL_PATH)) {
        // Referer existing and its path is equal to the current requested URI path
    }
    

    但是为什么 isset 在本例中使用的是 不总是发送。一般来说,只有当请求是由跟踪链接或发送表单引起时,客户端才会发送该头字段。因此,很可能未设置此头字段。除此之外,它的价值也可以伪造,因此不像来自客户的任何其他信息那样值得信任。

    authentication tokens 相反。

        2
  •  1
  •   Emil Vikström    14 年前

    你的变量不对。我想你想要 $_SERVER['HTTP_REFERER'] 这给了你用户来自的页面。

    注意,有些防火墙会从所有HTTP请求中删除referer头,因此HTTP_referer有时可能是空的。还要注意,HTTP_REFERER可以由web浏览器(在客户端)设置,因此您不应该依赖它来实现安全性。有些用户可以自己设置referer头。

        3
  •  0
  •   Community CDub    7 年前

    $_SERVER['HTTP_REFERER'] -这将包含用户单击以生成当前请求的页面的URL。

    注意,这不是一个特别值得信赖的机制,因为它 easy to spoof . 但是,如果它纯粹是内部使用,它可能适合你。

    另见

        4
  •  0
  •   Vincent Savard Midhun    14 年前

    修改$u服务器功能非常容易,包括$u服务器['HTTP_REFERER']。因此,验证某人以前访问过另一个页面是不安全的。我建议您改用session变量(即,当有人访问X.php时创建一个新的session变量,如果该变量存在,请检查Y.php页面。如果用户必须在Y.php之前访问过X.php页,则可以更改Z.php页中的变量)

    如果您真的想使用$u服务器变量,如我前面所说,请使用$u服务器['HTTP_REFERER'],它包含用户在进入您的页面之前访问的最后一个URL。

        5
  •  0
  •   Harish Lalwani    11 年前

    $服务器[“HTTP_REFERER”]是了解调用页的好方法。但由于它在工作中带来了问题,您可以从页面设置标志。如果$_SERVER['HTTP_REFERER']工作正常,那么这是最好的方法。