php base64加号,php函数base64_encode后的参数包含加号解析出错的解决方案

在进入主题之前我们先来看这样如下代码,test.php<?php

$url = "test2.php?name=".base64_encode('用来做测试的字符串')."&age=23";

header("Location:$url");

test2.php

var_dump(base64_decode($_GET['name']));

die();

访问http://localhost/test.php地址时,重定向到http://localhost/test2.php?name=55So5p2l5YGa5rWL6K+V55qE5a2X56ym5Liy&age=23地址,浏览器输出结果为:

string ‘用来做测??y??9ke??)?.,‘ (length=26)

怎么回事,base64_decode无法解码?

仔细观察重定向后的地址中加密后的name参数,其中包含“+”符号,而浏览器的地址栏中碰到“+”符号时会将加号转换为空格,于是要保证base64_decode进行正确的解码操作,我们可以先将参数中的空格替换成加号,如下代码所示:

$replaces = array(' ' => '+' );

var_dump(base64_decode(strtr( $_GET['name'], $replaces)));

die();得到正确的输出结果:

string ‘用来做测试的字符串‘ (length=27)

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文:http://blog.csdn.net/u011250882/article/details/47069521

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值