PHP проверяет, является ли реферальный URL главной страницей - PullRequest
2 голосов
/ 04 января 2012

Я пытаюсь выяснить, как проверить, является ли реферальный URL одной из моих внутренних страниц домашней страницей.Это было бы легко, если бы домашняя страница всегда была www.mysite.com/index.php, но что происходит, когда она просто www.mysite.com?

Я знаю, что могу просто сделать

$url = $_SERVER['HTTP_REFERER'];
$pos = strrpos($url, "/");
$page = substr($url, $pos+1, (strlen($url)-$pos+1));
if (substr_count($url, 'index')) echo 'from index ';

но в моей переменной $ url нет index.php.

Ответы [ 5 ]

5 голосов
/ 04 января 2012

parse_url() может помочь вам здесь.

// An array of paths that we consider to be the home page
$homePagePaths = array (
  '/index.php',
  '/'
);

$parts = parse_url($_SERVER['HTTP_REFERER']);
if (empty($parts['path']) || in_array($parts['path'], $homePagePaths)) echo 'from index';

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

1 голос
/ 02 ноября 2015

Используйте это

if($_SERVER["REQUEST_URI"] == "/" || $_SERVER["REQUEST_URI"] == "/index.php")
   echo "Home";
0 голосов
/ 25 марта 2017

Это будет работать:

if ($_SERVER['REQUEST_URI'] == '/')

0 голосов
/ 04 января 2012
$referer = $_SERVER['HTTP_REFERER'];
$homepage = "index.php";
$ref_array = explode("/", $referer);
if(trim($ref_array[1]) == trim($homepage) || trim($ref_array[1]) == "") echo "From URL";

Обратите внимание, что yoursite.com/index.php и yoursite.com/ совпадают!

0 голосов
/ 04 января 2012
$url = parse_url($_SERVER['HTTP_REFERER']);
$url = explode('/',$url['path']);
if ($url[1]=='index.html'||empty($url[1])) echo 'from index ';
...