我希望从网址获取#var
值,例如我的网址为mydomain.com/index.php#1
,所以我想从网址获得(#)值1
经过一些研究后我得到了这篇文章http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
我使用此代码获取get(#)值,这在JavaScript
中工作正常,但这在php
我的代码中无效:
<script language="javascript">
var query = location.href.split('#');
document.cookies = 'anchor=' + query[1];
alert(query[1]);
</script>
<?php
echo $_COOKIE['anchor'];
?>
此代码在alert
但不是JavaScript
值中给出echo
值。任何解决方案?
答案 0 :(得分:1)
在下一个页面请求之前,PHP将无法看到您正在设置的Cookie。您链接到的文章明确说明:
当然,是的。这不能正常工作。事实上它正在发挥作用 从第二次加载正确,但在页面的初始加载 $ _COOKIE数组里面没有任何锚键。那是因为 这部分代码在浏览器设置cookie之前执行 在客户端。
该文章中提到了“解决方法”,但坦率地说:这种事情是垃圾,如果您希望PHP读取它,您应该只将这些信息(仅)放在查询片段中。
答案 1 :(得分:1)
根据您发送的文章,您必须执行重定向,例如:
<?php if (!$_COOKIE['anchor']){ ?>
<script language="javascript">
var query = location.href.split('#');
document.cookie = 'anchor=' + query[1];
window.location.reload();
</script>
<?php } ?>
<?php
echo $_COOKIE['anchor'];
?>
答案 2 :(得分:1)
此外,您似乎在JS中设置了错误的属性(它是.cookie
,而不是.cookies
):
document.cookie = 'anchor' + query[1];
答案 3 :(得分:0)
您正在设置一个cookie,在下次重新加载之前不会传递给php。我错了吗?
客户动态是链条的终点。
答案 4 :(得分:0)
使用此方法可以防止错误:
<script>
query=location.hash;
document.cookie= 'anchor'+query;
</script>
当然在PHP中,爆炸那只小狗并获得其中一个值
$split = explode('/', $_COOKIE['anchor']);
print_r($split[1]); //to test it, use print_r. this line will print the value after the anchortag