Мне нужно получить фактический URL-адрес, который пользователь видит в своем браузере. У меня есть запрос Ajax, запущенный при загрузке страницы. Следовательно, обычный $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]
Выражение $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]
возвращает URL-адрес запроса Ajax вместо фактического URL-адреса в браузере.
Любая идея, как это получить?
Вы можете передать его из javascript в свой запрос ajax, используя window.location.href
.
Кроме того, вероятно, что $_SERVER['HTTP_REFERER']
будет содержать текущее местоположение браузера.
Вы также можете попробовать использовать $_SERVER['HTTP_REFERER'];
, Это может работать, но не на 100%.
Вы не можете сделать это с помощью кода на стороне сервера, так как нет серверной переменной, которая ссылается на то, что видит клиент. Единственное, что вы можете видеть (а потом опять же, это зависит от того, какой браузер использует пользователь, некоторые не передают эту информацию) является переменной HTTP_REFERRER. Это, однако, устанавливается только тогда, когда страница вызывает другую, а не когда пользователи впервые получают доступ к вашему сайту.
См. Это для более подробной информации.
Однако возможным решением может быть использование функции javascript для отправки верхнего URL-адреса браузера на сервер с использованием запроса AJAX и запускать его на стороне клиента всякий раз, когда пользователь загружает страницы), для которого вы хотите получить эту информацию.
Редактировать: Черт, слишком медленно, уже ответил!
Передайте скрытый ввод, который имеет значение браузера, установленное с вашим запросом ajax. Если кто-то не злонамерен, этого должно быть достаточно.
Если вы выполняете Ajax-запрос, вы можете передать адрес, доступный через переменную window.location.href
в качестве POST-переменной с запросом.
С jQuery это будет что-то вроде:
$.ajax({ url: 'your-url.php', type: "POST", data: { url: window.location.href }, success: function (data) { // Do something on success } });
С таким запросом вы можете получить доступ к URL-адресу на стороне сервера с помощью простого:
<?php $url = $_POST["url"]; ?>
Серверные языки не могут видеть, что происходит после их рендеринга и вывода страницы.
Фактическая ссылка на сайт в php
<?php echo $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>