Как сравнить переменную с первой частью HTTP_REFERER?

Пожалуйста, скажите мне, если я получил переменную $var который возвращает: http://foo.com — тогда как я могу проверить, идентичен ли этот URI тому, что $referrer возвращает (если есть) или в первую часть, если $referrer = http://foo.com/oof/ или дольше ..?

С (лучше?):

$referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

По сути, я хотел бы иметь случай if / else, когда URI совпадает, а когда нет.
Мне также интересно, как это сделать взломать безопасным, если хотите, чтобы его нельзя было обмануть, когда $referrer подделка такая: http://badsite.com/file.php?param1=http://foo.comи так, что здесь http://foo.com часть не будет считаться законным совпадением.

Огромное спасибо!

0

Решение

Чтобы проверить только домен:

$yoursite = ""; //Your site url without http:// or www.
$yoursite2 = ""; //Type your domain with www. this time

$referer = $_SERVER['HTTP_REFERER'];
$domain = parse_url($referer);

if($domain['host'] == $yoursite || $domain['host'] == $yoursite2) {
//Run your code here normally
}
1

Другие решения

Буквально:

if( substr($referrer, 0, strlen($var)) == $var)

«Если подстрока из начала реферера такой же длины, что и поисковый термин, равна поисковому запросу …»

В некоторых случаях источники могут не отправляться в нижнем регистре, который вы ожидаете. Чтобы учесть этот случай, попробуйте:

if( strcasecmp( substr($referrer, 0, strlen($var)), $var) == 0)

При этом выполняется сравнение без учета регистра в начале реферала с поисковым термином.

1

По вопросам рекламы [email protected]