Получить весь URL, включая строку запроса и привязку

Есть ли способ получить весь URL-адрес, используемый для запроса текущей страницы, включая привязку (текст после # – я могу использовать неправильное слово), в включенных страницах?

т.е. страница foo.php включена в bar.php. Если я использую ваше решение в foo.php, мне нужно, чтобы он сказал bar.php? Blarg = a # blahblahblah

Нет, я боюсь, что нет, поскольку хэш (строка, включая #) никогда не передается серверу, это исключительно поведенческое свойство браузера. Однако переменная $_SERVER['REQUEST_URI'] будет содержать остальные.

Если вам действительно нужно знать, что такое хэш, вам нужно будет использовать свойство document.location.hash JavaScript, которое содержит содержимое хеша (вы можете вставить его в форму или отправить на сервер с помощью ajax-запрос).

 // find out the domain: $domain = $_SERVER['HTTP_HOST']; // find out the path to the current file: $path = $_SERVER['SCRIPT_NAME']; // find out the QueryString: $queryString = $_SERVER['QUERY_STRING']; // put it all together: $url = "http://" . $domain . $path . "?" . $queryString; echo $url; // An alternative way is to use REQUEST_URI instead of both // SCRIPT_NAME and QUERY_STRING, if you don't need them seperate: $url = "http://" . $domain . $_SERVER['REQUEST_URI']; echo $url; 

Вы можете передать полный URL-адрес, включая якорь (часть после #), используя функцию загрузки Javascript, которая отправляет этот URL-адрес конечной точке Ajax.

Вы не можете – вам нужно будет записать значение хэша в cookie через Javascript, чтобы отправить его на сервер с последующим запросом.

Этот пример показывает полный URL-запрос show с port или https

 function curPageURL() { $pageURL = 'http'; if(isset($_SERVER["HTTPS"])) if ($_SERVER["HTTPS"] == "on") { $pageURL .= "s"; } $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; } return $pageURL; } 

использование: echo curPageURL();

Верно, что вы не можете передавать хэш-данные на сервер. но иногда то, что вам нужно, это получить URL-адрес с «#blablabla» с сервера, например, когда вы передаете ссылку кому-то с «#», но на этом сайте нужно войти в систему. ниже – это еще один способ подумать, возможно, не меняться подробным образом.

Во-первых, иногда вы хотите поделиться своей ссылкой с «#», например:

 www.so.com#lala 

Во-первых, вы можете изменить свой javascript для использования url и передать некоторые данные с помощью?? и '#' в то же время, например:

 www.so.com?foo=lala&&flag=hash#lala 

затем, когда '#' nerver переходит на сервер, но вы можете получить данные из $ _GET [''], например:

 if($_GET['flag'] === 'hash'){ // base url $_SESSION['url'] = strtok('http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"],"?"); // hash data $_SESSION['hash'] = $_GET['foo']; } 

то вы можете сделать все с помощью данных «#», если вы хотите передать его клиенту, вы можете:

 $url = $_SESSION['url']."#".$_SESSION['hash']; header("Location:".$url); 

Наконец, URL-адрес вернулся

Вы можете передать якорь, используя функцию rawurlencode.

В основном вам просто нужно сделать что-то вроде этого:

 bar.php?blarg=a<?php echo rawurlencode('#blahblahblah')?>