煮酒听雨
首页
PHP
MYSQL
WEB
Linux
关于本站
登陆
注册
PHP安全的URL字符串base64编码和解码(URLSafe)
编辑时间:2017-09-11
编辑:忘尘
阅读:726
简述:在实际开发工作中,我们进行http数据请求传输时,有时候会用到Base64的编码格式,对参数进行重新编发.而Base64是将二进制转码成可见字符,从而方便我们在进行http请求时进行传输,但是Base64转码时会生成“+”,“/”,“=”符号,这些是被URL进行转码的特殊字符,这样就会导致两方面数据不一致,导致我们发送数据请求时,无法跟后台接口正确对接。因此我需要在发送前将“+”,“/”,“=”替换成URL不会转码的字符,接收到数据后,再将这些字符替换回去,再进行解码。 #####URL base64编码 ```php /** * [urlsafe_b64encode URL base64编码] * @author [忘尘] * @param $string * @return mixed|string * '+' -> '-' * '/' -> '_' * '=' -> '' */ function urlsafe_b64encode($string) { $data = base64_encode($string); $data = str_replace(array('+','/','='),array('-','_',''),$data); return $data; } ``` #####URL base64解码 ```php /** * [urlsafe_b64decode URL base64解码] * @author [忘尘] * @param $string * @return bool|string * '-' -> '+' * '_' -> '/' * 字符串长度%4的余数,补'=' */ function urlsafe_b64decode($string) { $data = str_replace(array('-','_'),array('+','/'),$string); $mod4 = strlen($data) % 4; if ($mod4) { $data .= substr('====', $mod4); } return base64_decode($data); } ``` 注:采用URLSafe的Base64编码可以解决$_GET、$_POST接收字符串存在 + 下被过滤成空格的问题
来说两句吧
提交评论
最新评论
我的标签
函数
面试
REDIS
LNMP
验证
时间
JS
LINUX
CPA
常量
MYSQL
备份
微信
文件
压缩
优化
SVN
PHP
集合
数组
HTML
NGINX
日志
性能
加密
下载
FORM
WEB
样式
SQL
表单
配置
编码
ARRAY
替换
截取
密码
版本
进程
定时
测试
事务
数据
权限
安全
防火墙
索引
设计模式
缓存
热文排行
LNMP状态管理命令
navicat for mysql 导入xlsx,
(置顶)开发中常用功能知识点笔记
(置顶)收藏优秀分享文章集合
PHP加密解密算法(Discuz!经典代码)
PHP 获取数组第一个元素或最后一个值
Nginx配置 nginx.conf 文件中常用配
MySQL错误日志 [Warning] IP ad
Redis持久化:快照(RDB)和AOF简解
浅析SQLmap
随机文章
友情链接
官方手册
thinkphp
php扩展
Linux命令
lnmp
PHP中文网
鸟哥Linux私房
Nginx中文文档
json格式化
Redis手册
composer中文文档
CentOS下载
流程图
VPN代理
菜鸟网
奇淼教程
首页
PHP
MYSQL
WEB
Linux
关于本站
登陆
注册