2012-01-04 2 views
2

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

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

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

но у меня нет index.php в моей переменной $ URL.

+0

Вы проверили, работает ли это так? Я бы предположил, что это даст вам www.mysite.com/index.php каждый раз. – mowwwalker

+0

@Walkerneo Это может быть просто просто www.mysite.com/, если веб-сервер настроен на обслуживание index.php в качестве страницы по умолчанию. – DaveRandom

+0

Точно, это моя проблема, index.php нет в моем url главной страницы. – bikey77

ответ

5

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'; 

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

+1

Опубликовано 10 секунд, прежде чем я закончу свой ответ так же, как вы! – Hossein

+0

Riiiiiiight ..... – mowwwalker

+0

@Hossein ... и я, хотя * I * был хламом при наборе текста ... :-P – DaveRandom

0
$url = parse_url($_SERVER['HTTP_REFERER']); 
$url = explode('/',$url['path']); 
if ($url[1]=='index.html'||empty($url[1])) echo 'from index '; 
0
$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/ то же самое!

1

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

if($_SERVER["REQUEST_URI"] == "/" || $_SERVER["REQUEST_URI"] == "/index.php") 
    echo "Home"; 
0

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

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

Смежные вопросы