使用我构建的表单遇到问题。用户在地址字段中键入哈希(#)作为其地址。在提交表单后将其地址放入查询字符串时,所有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"]; ?>
答案 0 :(得分:0)
get参数应该是url编码http://www.php.net/manual/en/function.urlencode.php另一个选项是使用http_build_query(http://php.net/manual/en/function.http-build-query.php)构建您的查询字符串
答案 1 :(得分:0)
#
是URL中的有效锚符号,仅对客户端浏览器有意义。
很可能你应该为这个表单而不是GET使用POST,此时此问题就会消失。
通常一个好的经验法则是使用URL参数(GET)来处理您希望任何用户都可以导航URL的情况,以及这种导航不会更改服务器上的任何数据(或触发电子邮件,等等。)。一个很好的例子可能是在电子商务目录应用程序的URL中使用产品ID来确定要在页面上显示的产品。
对于要更改服务器上的数据或触发某些不应触发页面基本导航的操作,通常应使用POST。在早期的电子商务应用示例的基础上,您通常可以使用POST将项目添加到用户购物车。
答案 2 :(得分:-1)
url中的哈希是一个文档片段,由浏览器读取。因此,在URL中的哈希签名之后的任何内容都不会作为查询传输到服务器。你需要对哈希进行URL编码(通过我猜想的javascript)。请参阅:http://www.w3schools.com/tags/ref_urlencode.asp