Что я могу использовать вместо $ _SERVER ['HTTP_REFERER'] в PHP для получения согласованных данных о ссылочной ссылке?

Я просмотрел руководство на php.net для $ _SERVER ['HTTP_REFERER'], и там явно говорится, что это ненадежно в зависимости от браузера, используемого на стороне клиента. Есть ли последовательная замена, которую я могу использовать для перенаправления веб-сайтов на ссылающуюся ссылку?

РЕДАКТИРОВАТЬ: я не осознавал ошибку в моем вопросе, пока кто-то не указал на нее в комментариях - это для внутреннего URL-адреса, поскольку я пытаюсь автоматически перенаправить кнопку выхода, чтобы пользователь не видел отдельное сообщение типа «вы успешно вышли из системы»


person Simon Suh    schedule 03.11.2011    source источник
comment
нет, http - это протокол без сохранения состояния. session \ js - это вариант, но он никогда не будет 100% решением   -  person    schedule 03.11.2011
comment
Неа. Все, что вам доступно, может быть подделано клиентом (или полностью удалено)   -  person simshaun    schedule 03.11.2011
comment
Тогда я могу использовать сеансы, но почему сеансы не могут быть 100% решением?   -  person Simon Suh    schedule 03.11.2011
comment
потому что пользователь может просто удалить идентификатор сеанса.   -  person    schedule 03.11.2011
comment
сеансы будут использоваться, если пользователь пришел с другого сайта.   -  person Vitaly Dyatlov    schedule 03.11.2011


Ответы (3)


вы можете передать местоположение, к которому нужно вернуться, в ссылке \ кнопке для выхода. если это ссылка, вы можете добавить ее к URL-адресу, если кнопка - это скрытое поле формы.

<a href="/sign-out.php?back=CURRENT_URL">

форма

<input type="hidden" name="back" value="CURRENT_URL">

CURRENT_URL = $_SERVER['PHP_SELF'] или что-либо другое, подходящее для вашей системы.

person Community    schedule 03.11.2011

Короче нет, и не полагайтесь на HTTP_REFERER как на ненадежный и небезопасный.

Из руководства PHP:

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

person robjmills    schedule 03.11.2011

Другое решение - использовать для этого javascript, примерно так:

<?php
echo "<script>history.go(-1);</script>";
?>
person Vitaly Dyatlov    schedule 03.11.2011