我想从 url 获取#var
值,就像我的 url 是mydomain.com/index.php#1
一样,所以我想从 url 中获取 has(#) 值,这是经过一些研究后1
我得到了这篇文章 http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
我使用此代码获取 has(#) 值,这在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
值。 有什么解决方案吗?
此外,您似乎在 JS 中设置了错误的属性(它是 .cookie
,而不是 .cookies
):
document.cookie = 'anchor' + query[1];
您正在设置的 cookie 在下一页请求之前对 PHP 不可见。您链接到的文章明确指出了这一点:
当然,是的。这无法正常工作。事实上它正在工作 从第二次加载开始正确,但在页面的初始加载时正确 $_COOKIE 数组内部没有任何锚键。那是因为 这部分代码在浏览器设置 cookie 之前执行 在客户端上。
那篇文章中提出了一个"解决方法",但坦率地说:这种事情是垃圾,如果你想让 PHP 阅读它,你不应该把这些信息(只)放在查询片段中。
通过您发送的文章,您必须执行以下操作的重定向:
<?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'];
?>
您正在设置一个 cookie,直到下次重新加载才会传递给 php。我错了吗?
客户端动态是链条的末端。
使用此方法防止错误:
<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