从 PHP 代码中的 URL 获取 #var 错误


get #var from url in php code error

我想从 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