【问题标题】:getting parameters from url in php adds special characters在php中从url获取参数会添加特殊字符
【发布时间】:2013-02-05 18:33:23
【问题描述】:

我有一个 JavaScript 代码,它调用 PHP api 的函数在我的数据库中插入一行。

var url = 'http://myapi/OfertasVentaOnline/api.php?method=update&function=categoria&id='+id+'&idCategoria='+id_categoria+'&descripcion='+descripcion+'&format=json';


    $.getJSON(url, function (data){     

    });   

此网址的示例:

"http://myapi/OfertasVentaOnline/api.php?method=create&function=categoria&id=9999&idCategoria=3&descripcion=test%new%category&format=json"

在网址中,我将描述参数中的 % 替换为空格,如此处所示,网址已正确创建。

然后我得到了我的 api,它接听电话并对其进行解码。在我用来解码和获取参数的函数中:

$descripcion_cool = str_replace("%"," ",$_GET['descripcion']);

echo utf8_decode($descripcion_cool);

$query = 'INSERT INTO `Categorias`(`idCamping`, `idCategoria`, `descripcion`) VALUES (
                    "'.mysql_real_escape_string($_GET['id']).'",
                    "'.mysql_real_escape_string($_GET['idCategoria']).'",
                    "'.mysql_real_escape_string($descripcion_cool).'")';

这会输出这个:

test new?tegoryINSERT INTO `Categorias`(`idCamping`, `idCategoria`, `descripcion`) VALUES (
                    "9999",
                    "3",
                    "test new�tegory")null

如您所见,php 在 url 参数中添加了一些特殊字符。我在做什么错?谢谢

PD:在我的 php 文件中我尝试添加:

header('Content-type: text/plain; charset=utf-8');

但它一直在做同样的事情。

提前致谢

【问题讨论】:

  • 总是encodeURIComponent 查询字符串参数。或者让 jQuery 为你做这件事。
  • 如果我错了,请纠正我,但$_GET['var'] 变量不是已经返回转义字符串了吗?
  • 您必须对其进行转义,以便$_GET 可以正确地取消转义。
  • 他正确地转义了它,但是在 $_GET 返回后又解码了两次..
  • OP 都做错了:)

标签: php url parameters character add


【解决方案1】:

假设您发送的参数值包含空格,您通过将空格替换为 % 对其进行编码。实际上,您不必这样做。如果要对传递的参数/查询字符串进行编码,可以使用 encodeURIComponent() 方法。如果你想编码 url,那么使用encodeURI()

 description = encodeURIComponent(description);

var url = 'http://myapi/OfertasVentaOnline/api.php?method=update&function=categoria&id='+id+'&idCategoria='+id_categoria+'&descripcion='+descripcion+'&format=json';



    $.getJSON(url, function (data){     

    });   

这将安全地对 url 进行编码。

【讨论】:

  • 不。 encodeURIComponent 应该应用于 URI 组件(例如查询字符串名称/值),而不是 URI 本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
相关资源
最近更新 更多