#在查询字符串中,php获取

#在查询字符串中,php获取,php,get,query-string,Php,Get,Query String,我创建的表单遇到了问题。用户在地址字段中键入其地址的哈希(#)。当他们的地址在表单提交后放入查询字符串时,所有my GET变量都会在带有#的字段后中断。有人知道为什么会这样吗?我需要将#转换为其他字符还是使用其他类型的编码?这是我在页面上获取查询字符串值的代码 <?php echo $_GET["address"]; ?><br/> // if this field has a # in the value, the GET variables below do not

我创建的表单遇到了问题。用户在地址字段中键入其地址的哈希(#)。当他们的地址在表单提交后放入查询字符串时,所有my GET变量都会在带有#的字段后中断。有人知道为什么会这样吗?我需要将#转换为其他字符还是使用其他类型的编码?这是我在页面上获取查询字符串值的代码

<?php echo $_GET["address"]; ?><br/> // if this field has a # in the value, the GET variables below do not work..
<?php echo $_GET["city"]; ?><br/>
<?php echo $_GET["state"]; ?>


get参数应该是url end编码的另一个选项是使用http\u build\u query()构建查询字符串。

url中的哈希是一个文档片段,由浏览器读取。因此,url中哈希签名之后的任何内容都不会作为查询传输到服务器。您需要对散列进行URL编码(我想是通过javascript)。请参阅:

A
#
是URL中的有效锚定符号,仅对客户端浏览器有意义

很可能您应该使用此表单的POST而不是GET,此时此问题就消失了

通常,一个好的经验法则是使用URL参数(GET)来处理以下情况:您希望URL可由任何用户导航,并且此类导航不会更改服务器上的任何数据(或执行触发电子邮件等操作)。一个很好的例子可能是在电子商务目录应用程序的URL中使用产品ID来确定要在页面上显示的产品

通常,当您要更改服务器上的数据或触发某些页面基本导航不应触发的操作时,应该使用POST。在前面的电子商务应用程序示例的基础上,您通常可以使用POST将项目添加到用户的购物车中