【发布时间】: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