PHP关于URL参数传递的问题

老虎说测试 脚本开发字数 1044阅读3分28秒阅读模式
摘要我们都知道如果数据通过base64编码后可能会含有+号,如果此值要在url中进行传递,则url会自动将+转换成%xx的形式,接收数据方为了能正确的接收数据,有如下两种方法:

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

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

接收数据时就不需要先urldecode了,因为PHP已经自动将%2B转换为+号了,如果再转换,则+就会变成半角空格,此时再base64_decode,数据将是空值,所以这点要注意。文章源自陈学虎-https://chenxuehu.com/article/2014/12/3923.html

5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9DQrkupTnrJTlrZflnovorqHnrpfmnLrmsYnlrZfovpPlhaXmioDmnK8NCuS6lOeslOWtl+Wei+iuoeeul+acuuaxieWtl+i+k+WFpeaKgOacrw0K5Lit5Zu95YWx5Lqn5YWaDQrkuIDot6/liJvnp5E=文章源自陈学虎-https://chenxuehu.com/article/2014/12/3923.html

http://www.test2.com/file_process.php?songid=3&attach_filename=&lrc=5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9DQrkupTnrJTlrZflnovorqHnrpfmnLrmsYnlrZfovpPlhaXmioDmnK8NCuS6lOeslOWtl%2BWei%2Biuoeeul%2BacuuaxieWtl%2Bi%2Bk%2BWFpeaKgOacrw0K5Lit5Zu95YWx5Lqn5YWaDQrkuIDot6%2FliJvnp5E%3D文章源自陈学虎-https://chenxuehu.com/article/2014/12/3923.html

2.发送数据前先用base64_encode,再将基中的+,/,=作相应的转换,接收数据时再作相反的转换就可以了,分别用以下两个函数就可以实现。文章源自陈学虎-https://chenxuehu.com/article/2014/12/3923.html

function encrypt($str)
{文章源自陈学虎-https://chenxuehu.com/article/2014/12/3923.html

$str = str_replace(array('+','/','='),array('-','_','.'),base64_encode($str));文章源自陈学虎-https://chenxuehu.com/article/2014/12/3923.html

return $str;
}文章源自陈学虎-https://chenxuehu.com/article/2014/12/3923.html

function decrypt($str)
{
$str = base64_decode(str_replace(array('-','_','.'),array('+','/','='),$str));文章源自陈学虎-https://chenxuehu.com/article/2014/12/3923.html

return $str;
}文章源自陈学虎-https://chenxuehu.com/article/2014/12/3923.html

 
  • 版权声明:本文为原创文章,转载请附上原文出处链接及本声明。
  • 转载请注明:PHP关于URL参数传递的问题 | https://chenxuehu.com/article/2014/12/3923.html