阻止PHP解码我的url参数

时间:2013-01-30 16:41:17

标签: php javascript url-rewriting urlencode url-parameters

我通过URL(键,值)发送逗号分隔值。我用Javascript的escape()编码它们,然后用%2c替换每个值中的逗号。问题是在PHP结束时,编码的逗号变成“,”爆炸发生之前发生,然后我的包含逗号的字符串被分解,并且它没有正确保存。

如何阻止PHP将我的编码位转换回未编码的位?

每个输入的我的JS是:

fieldData += $(this).attr("id")+","+escape($(this).html()).replace(/,/g,"%2c")+",";

我的PHP是:

$fieldData = explode(",", $_POST['fieldData']);

尝试(以及其他事情):

$fieldData = explode(",", urlencode($_POST['fieldData']));

2 个答案:

答案 0 :(得分:1)

我建议使用base64encode / decode。

javascript看起来像这样:http://jsfiddle.net/Y6yuN/

<script src='http://javascriptbase64.googlecode.com/svn/trunk/base64.js'></script>
fieldData += $(this).attr("id")+","+escape(Base64.encode($(this).html()))+",";

转义是为了尾随=

因此,最终会使用逗号分隔的base64编码字符串。

在PHP方面:

$fieldData = explode(",", $_POST['fieldData']);
foreach ($fieldData as $k => $v){
  $fieldData[$k] = base64_decode(urldecode($v));
}

答案 1 :(得分:0)

您的帖子并没有得到很好的解释,但我认为您想解码JS传递的数据。所以,代码应该是:

$fieldData = explode(",", urldecode($_POST['fieldData']));

如果我错了,请尝试写得更好!