0

遇到我建立的表格的问题。用户在地址字段中为他们的地址键入了一个哈希 (#)。在提交表单后将他们的地址放入查询字符串时,我的所有 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"]; ?>
4

3 回答 3

0

获取参数应该是 url endcoded http://www.php.net/manual/en/function.urlencode.php另一种选择是使用 http_build_query 构建您的查询字符串(http://php.net/manual/en/function .http-build-query.php

于 2013-05-09T17:36:11.783 回答
0

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

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

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

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

于 2013-05-09T17:36:50.113 回答
-1

url 中的哈希是一个文档片段,由浏览器读取。因此,url 中哈希符号之后的任何内容都不会作为查询传输到服务器。您需要对哈希进行 URL 编码(我假设是 javascript)。请参阅:http ://www.w3schools.com/tags/ref_urlencode.asp

于 2013-05-09T17:36:19.113 回答