如何在PHP中传递带哈希的参数

时间:2010-08-06 16:34:23

标签: php parameters hash

最近,当我看到google结果页面时,查询和其他参数传递了#(hash)而不是通常的“?”

另外,在facebook中我看到了同样的事情。这非常有趣,经过google的简单搜索后,我发现结果与perl和Ruby相关,但PHP没有结果。

是否可以在PHP中使用#而不是“?”传递参数或者这只能用perl / Ruby实现。这将非常有用,搜索引擎也不会解析URL中的参数。

任何想法都会对我有所帮助。

4 个答案:

答案 0 :(得分:8)

传统上,#告诉浏览器自动滚动到页面中的特定点,这是(并且仍然)经常用于实现页面一部分的链接(例如目录)到另一个(例如标题部分)。

但是,它还会导致包含#的网址记录在历史记录中,即使它与之前的网址相同,但#除外。 (换句话说,用户仍然在同一页面上。)这意味着后退按钮可用于返回您之前所处的状态,即使该状态更改与页面不对应 - 负荷。

因此,现代AJAX应用程序经常使用它来表示用户可能想要“返回”的某些事情。

答案 1 :(得分:1)

不,这是不可能的。
您看到的只是一个装饰,以反映地址栏中的AJAX调用。

无论您选择何种语言 - 所有语言都位于服务器端,并使用HTTP协议与浏览器进行通信。 HTTP请求中不允许使用锚点。这完全是客户端的事情

答案 2 :(得分:0)

您在搜索结果中遇到了混乱,因为术语哈希是overloaded,参数传递的概念也是如此。

您看到了在散列中传递值的概念的引用,因为associative array在某些语言中被称为散列(这是散列表的缩写)。

#字符也容易引起混淆。它被称为“哈希”,“磅”,“数字”和“octothorpe”。自从我在美国长大以来,我称之为“英镑符号”,这可能让更多英国英语的用户感到烦恼,同样充满了混淆的可能性(考虑“英镑”)。

在Perl中的散列中传递函数参数是获取例程的命名参数的好方法。 PHP只有位置参数,但使用数组可以很好地工作。

许多Web库对表单值使用散列/关联数组类型结构。键通常是字段ID,值是字段值。

在URI中,#表示片段说明符的开头。它标识URI指向的页面的一部分。它通常不用于将请求信息从客户端传递回服务器。

答案 3 :(得分:-1)

可能有一些服务器重写等等。 使用apache服务器的示例,您可以处理一些类似于

的uri
http://www.mysite.com#something

并将其重写为

http://www.mysite.com/perl/script.pl?data=something

然后将其作为对script.pl

的简单GET查询进行处理

这是所有服务器端处理,对客户端不可见