有没有办法在包含的页面中获取用于请求当前页面的整个URL,包括锚点(#后面的文字 - 我可能使用了错误的单词)?
即。 page foo.php包含在bar.php中。如果我在foo.php中使用你的解决方案,我需要它说bar.php?blarg = a#blahblahblah
答案 0 :(得分:80)
不,我不敢,因为哈希(字符串包括#)永远不会传递给服务器,它只是浏览器的行为属性。但$_SERVER['REQUEST_URI']
变量将包含其余变量。
如果你真的需要知道哈希是什么,你将不得不使用document.location.hash
JavaScript属性,其中包含哈希的内容(然后你可以将它插入表单中,或者将其发送给带有ajax请求的服务器)。
答案 1 :(得分:11)
// 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;
答案 2 :(得分:5)
您可以使用Javascript onload函数传递完整的URL,包括锚点(#之后的部分),该函数将该URL发送到Ajax端点。
答案 3 :(得分:3)
你不能 - 你必须通过Javascript将哈希的值写入cookie,以便在后续请求中将其发送到服务器。
答案 4 :(得分:2)
此示例显示了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();
答案 5 :(得分:0)
确实无法将哈希数据传递给服务器。但有时你想要的是从服务器获取一些带有'#blablabla'的网址,就像你与'#'的人分享链接一样,但网站需要登录。下面是另一种思考方式,也许不是很详细。
首先,有时您想与'#'分享您的链接,例如:
www.so.com#lala
首先,您可以更改您的网址使用javascript并使用'?'传递一些数据和'#'在同一时间,如:
www.so.com?foo=lala&&flag=hash#lala
然后,当'#'神经传递给服务器时,你可以从$ _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);
最后,网址又回来了
答案 6 :(得分:-5)
您可以使用rawurlencode funcion传递锚点。
基本上你只需要做这样的事情:
bar.php?blarg=a<?php echo rawurlencode('#blahblahblah')?>