2013-12-07 4 views
-2

Я фильтрую страницу с $_SERVER['HTTP_REFERER'].

Включите фильтр "pageb.php", если пользователь пришел из "pagea.php" (хотя он не является надежным) на $_SERVER['HTTP_REFERER'].

Он хорошо работает, пока «pagea.php» не имеет строку запроса, например «pagea.php? Q = 10». Затем, если пользователь переходит из «? Pagea.php д = 10» до «pageb.php» не обнаружено «pageb.php»:

if($_SERVER['HTTP_REFERER']='http://pagea.php'){ 
echo 'This user has come from page a'; 
}else{ 
echo 'This user has come from another page'; 
} 

Как я могу определить, пользователь пришел из «страницаА. php "даже с предыдущим запросом string q=10?

+0

Если оба файла находятся на вашем сервере, почему бы вам не сохранить переменную '$ _SESSION' с« последней посещенной страницей »? – h2ooooooo

+1

Вот обсуждение по этому вопросу. tl; dr: вы не можете полагаться на HTTP_REFERER: http://stackoverflow.com/questions/5934747/is-serverhttp-referer-safe - вы хотите проверить, откуда ваши пользователи поступают из вашего собственного домена или из других доменов? если строго первый, вы могли бы использовать сеансы для отслеживания страниц, например. –

+0

В вашем псевдо-URL-коде что-то вроде 'if (strpos ($ _ SERVER ['HTTP_REFERER'], 'http: //pagea.php') === 0)' возможно? –

ответ

0

Используйте strpos(), чтобы проверить, если строка содержит другую строку:

<?php 
if (strpos($_SERVER['HTTP_REFERER'], 'pagea.php') !== false) { 
    echo 'from page a'; 
} 
0

использовать Comparision оператор не присваивание если ($ _ SERVER [ 'HTTP_REFERER'] = 'http://pagea.php') {

= будет ==

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