如何获得使用PHP
可能重复:
Get entire URL, including query string and anchor如何获得使用PHP
我有我的网址一样www.domain.com/#!/username(就像在twitter中一样)。
如何在'#!'之后检索包含子字符串的完整URL(上面的整个字符串)在使用PHP或Javascript的地址?
在JavaScript中,除非您还有其他事情发生,否则您应该可以从document.location
(例如var URLstring = document.location;
)获得完整的URL。
在PHP中,正如其他人已经注意到的,由于哈希的工作方式(它在页面内导航,并且不触发页面重新加载,所以服务器永远不知道它,除非JS调用在服务器上触发脚本的Ajax函数)。
我觉得我'你需要绕过使用document.location.href。谢谢 – ptamzz 2011-01-22 14:12:00
散列(#)后面的部分永远不会发送到服务器,因此您永远不会收到“完整”url。 #之后的部分仅用于客户端,只能从服务器发送到客户端。
雪橇的答案是最好的,但是,在英镑符号“#”之后没有办法获得文本。 “#”之后的任何内容都被视为锚点,不会发送到服务器。 “#”仅由浏览器解释。您可以在这里尝试一些Javascript技巧,但我建议避免在“#”之后传递数据。
URL的哈希部分(#及其后的所有内容)不会被浏览器发送到服务器,因此它不适用于PHP。
如果您绝对需要您的服务器端注意它,唯一的方法是加载一个包含读取哈希值的Javascript的中间页面,并在值包含在常规HTTP参数中时发出另一个请求。例如。中间页可能是这样的:
<html>
<!-- snip.. -->
<body>
<script type="text/javascript">
$(document).ready(function() {
$.get('realContent.php?hash=' + location.hash,
function(data) {
$('#content').html(data);
}
);
}
</script>
<div id="content"></div>
</body>
</html>
我用这个功能对于这个(PHP 5.2)::
function getInstance($uri = 'SERVER')
{
if ($uri == 'SERVER')
{
if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) {
$https = 's://';
} else {
$https = '://';
}
if (!empty ($_SERVER['PHP_SELF']) && !empty ($_SERVER['REQUEST_URI'])) {
$theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
if (strlen($_SERVER['QUERY_STRING']) && strpos($_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING']) === false) {
$theURI .= '?'.$_SERVER['QUERY_STRING'];
}
}
else
{
$theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
$theURI .= '?' . $_SERVER['QUERY_STRING'];
}
}
$theURI = urldecode($theURI);
$theURI = str_replace('"', '"',$theURI);
$theURI = str_replace('<', '<',$theURI);
$theURI = str_replace('>', '>',$theURI);
$theURI = preg_replace('/eval\((.*)\)/', '', $theURI);
$theURI = preg_replace('/[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']/', '""', $theURI);
}
echo (string)$theURI;
}
参见http://*.com/questions/967649/get-entire -url-including-query-string-and-anchor – 2011-01-22 13:59:30
and http://*.com/questions/940905/can-php-read-the-hash-portion-of-the-url/940918 – 2011-01-22 14:00:13