2014-10-08 2 views
0

У меня есть целевая страница на моем сайте, на каждой странице у меня есть код PHP, который будет проверять файлы cookie, и если у пользователя есть определенный файл cookie, он останется на этой странице и если он не будет перенаправлен на целевую страницу. На целевой странице у меня есть кнопка, которая, когда пользователь нажимает на нее, будет создан файл cookie.Как получить запрошенный URl с предыдущей страницы

Когда пользователь нажимает кнопку, страницы должны возвращаться к предыдущей странице, которая была раньше. Мой код

if(isset($_COOKIE['username'])){ 
    $_COOKIE['username']; 
    header('location: http://example.com/main'); 
} 
else{ 
// 
} 

Есть в любом случае, чтобы найти ссылку на предыдущую страницу или оригинальную запрашиваемую URL?

+0

http://stackoverflow.com/q/24253653/ –

ответ

1

Да, вы можете использовать значение HTTP_REFERER найденное в $_SERVER superglobal:

if(isset($_COOKIE['username'])) { 
    $_COOKIE['username']; // <-- what is this for? What are you doing with it? 
    header('location: http://example.com/main'); 
    die(); 
} 
else{ 
    header(
     'Location: ' . 
     !empty($_SERVER['HTTP_REFERER']) ? 
      $_SERVER['HTTP_REFERER'] : 
      'http://example.com/access_denied' // In case HTTP_REFERER is blank, fallback to this 
    ); 
    die(); 
} 

Заметьте, что вы не должны зависеть от этого значения для строгих соображений безопасности, однако, как «подпрыгивать пользователя на предыдущую страницу «функция, это должно быть адекватно! Не забудьте использовать операторы exit или die после отправки заголовков переадресации или остальная часть вашего скрипта будет выполняться!

Примечание из документации о HTTP_REFERER:

Адрес страницы (если таковые имеются), которые называют агента пользователя на текущей странице. Это устанавливается пользовательским агентом. Не все пользовательские агенты установят это, а некоторые предоставляют возможность изменять HTTP_REFERER как функцию. Короче говоря, на это нельзя доверять.

+0

Дополнительный nibblet должен был бы выгрузить некоторый javascript с 'history.go (-1)'. не всегда работает, но также не зависит от сервера, получившего действительный референт. –

+0

[** насколько надежным является HTTP_REFERER **] (http://stackoverflow.com/a/6023980/) –

+0

Спасибо @ Fred-ii-, поэтому я сказал, что не должно быть зависимости, но если клиент отправил управляемый 'HTTP_REFERER' в этом сценарии, они просто будут возвращены к этому управляемому пути ... – sjagr

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