$ _SERVER [" HTTP_REFERER"]问题

时间:2014-07-22 22:35:05

标签: php html http-referer

我只是想设置“如果'我的网站的规则,我面临的问题很少 我想允许:

if ($_SERVER["HTTP_REFERER"] = "http://t.co/XXXXXX")
{ allowed }

XXXXXX - 每个链接的唯一结尾,因此我需要设置每个以t.co开头的访问都将被接受。我怎样才能做到这一点?提前谢谢。

3 个答案:

答案 0 :(得分:4)

使用以下代码段:

if (preg_match('/^https?:\/\/t\.co\//', $_SERVER['HTTP_REFERER'])) {
    # allowed
}

顺便说一下,这也会匹配https请求。

或者,您可以使用parse_url,如下所示:

$parsed = parse_url($_SERVER['HTTP_REFERER']);
if ($parsed['host'] === 't.co') {
    # allowed
}

请注意,虽然$ _SERVER [' HTTP_REFERER']可能未设置或为空,因此需要额外

if (isset($_SERVER['HTTP_REFERER']))

在两种情况下都很有用。

答案 1 :(得分:0)

只需比较前12个字符:

if (substr($_SERVER["HTTP_REFERER"],0,12) == "http://t.co/" || substr($_SERVER["HTTP_REFERER"],0,13) == "https://t.co/")
{ allowed }

答案 2 :(得分:0)

我的尝试:

if (stripos($_SERVER["HTTP_REFERER"], '://t.co/') === 4
 || stripos($_SERVER["HTTP_REFERER"], '://t.co/') === 5) {
    // Allowed