【问题标题】:Passing data in URL vs submitting via form using GET在 URL 中传递数据与使用 GET 通过表单提交
【发布时间】:2013-11-24 17:49:07
【问题描述】:

我写了一个小 php (test.php) 读取并显示传递给它的数据。

<?php $name = $_GET['name']; echo $name;?>

当我执行以下 URL http://localhost/test.php?name=Géo

显示的文字是:G�o

但是,当我从另一个网页提交“Géo”时:

<form method="get" action="test.php"> <input type="test" name="name"> <input type="Submit"> </form>

网址更改为http://localhost/test.php?name=G%C3%A9o

现在显示正确的文本:Géo

在第一种情况下,只有当我添加 utf8_encode($_GET['name']) 时,才会显示正确的文本 (Géo)。

我的问题: 是否可以知道数据是如何传递的,通过表单提交或直接从 URL 提交。如果不是,那么我应该对网页进行哪些更改,以便正确处理这两种情况,即在两种情况下都显示 Géo。

感谢您的帮助。

【问题讨论】:

  • 场景中,添加utf8_encode( $_GET['name'] )会改变输入?
  • 在第二个场景中添加 utf8_encode 会将输入更改为:Géo
  • 您的“Content-Type”标头是什么?它包含类似charset=UTF-8?
  • ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> w3.org/1999/xhtml" xml:lang="en" lang="en">

标签: php html forms url-encoding


【解决方案1】:

您可以添加一个注册。表达式 将检查参数是否包含%。因为编码的参数可能包含%

但是,如果你执行的 url 出于某种原因包含 %,问题就会卷土重来......

【讨论】:

  • 可能不关心没有html表单的执行。
  • 查看 Google,在搜索框中输入 Géo 或 %,然后将 URL 更改为 google.com?q=%google.com?q=Géo 在这两种情况下都会吐出正确的数据。
猜你喜欢
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 2018-05-19
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
相关资源
最近更新 更多