PHP关于URL参数传递的问题

  • 2014年12月24日
  • 1,687
  • A+
所属分类:PHP开发
摘要

我们都知道如果数据通过base64编码后可能会含有+号,如果此值要在url中进行传递,则url会自动将+转换成%xx的形式,接收数据方为了能正确的接收数据,有如下两种方法:

我们都知道如果数据通过base64编码后可能会含有+号,如果此值要在url中进行传递,则url会自动将+转换成%xx的形式,接收数据方为了能正确的接收数据,有如下两种方法:

1.发送数据前先用base64_encode加密,再用urlencode加密,用urlencode是为了将+等这种字符转换成16进制如%2B,否则php接收参数时自动将+号转换为空格,而此时+号正是我们需要的数据,如果不转换,将会造成数据错误,所以有必要转换一下。

接收数据时就不需要先urldecode了,因为PHP已经自动将%2B转换为+号了,如果再转换,则+就会变成半角空格,此时再base64_decode,数据将是空值,所以这点要注意。

5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9DQrkupTnrJTlrZflnovorqHnrpfmnLrmsYnlrZfovpPlhaXmioDmnK8NCuS6lOeslOWtl+Wei+iuoeeul+acuuaxieWtl+i+k+WFpeaKgOacrw0K5Lit5Zu95YWx5Lqn5YWaDQrkuIDot6/liJvnp5E=

http://www.test2.com/file_process.php?songid=3&attach_filename=&lrc=5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9DQrkupTnrJTlrZflnovorqHnrpfmnLrmsYnlrZfovpPlhaXmioDmnK8NCuS6lOeslOWtl%2BWei%2Biuoeeul%2BacuuaxieWtl%2Bi%2Bk%2BWFpeaKgOacrw0K5Lit5Zu95YWx5Lqn5YWaDQrkuIDot6%2FliJvnp5E%3D

2.发送数据前先用base64_encode,再将基中的+,/,=作相应的转换,接收数据时再作相反的转换就可以了,分别用以下两个函数就可以实现。

function encrypt($str)
{

$str = str_replace(array('+','/','='),array('-','_','.'),base64_encode($str));

return $str;
}

function decrypt($str)
{
$str = base64_decode(str_replace(array('-','_','.'),array('+','/','='),$str));

return $str;
}

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
那些青春期的脆弱自尊,轻易不得触碰,那极有有可能成为对他或她一生的打扰。我们都曾经历那样纯粹、易碎的青春,只是时光的磨砺已让我们懂得逃避与忍气吞声然后慢慢遗忘自己曾经的青春。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 琉璃瓦 1

      有必要转换一下。