PHP常用函数(1)
1. create_linkstring
说明: 把数组拼接成字符串
if (!function_exists('create_linkstring')) {
/**
* 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
* @param $para 需要拼接的数组
* return 拼接完成以后的字符串
*/
function create_linkstring($para)
{
if (!is_array($para)) {
return $para;
}
$arg = "";
while (list($key, $val) = each($para)) {
$arg.=$key."=".$val."&";
}
$arg = substr($arg, 0, -1);
//如果存在转义字符,那么去掉转义
if ( get_magic_quotes_gpc() ) {
$arg = stripslashes($arg);
}
return $arg;
}
}
2. resolve_linkstring
说明: 将URL参数字符串转换成数组
if (!function_exists('resolve_linkstring')) {
/**
* 将URL参数字符串转换成数组
* 例如:mobile=18683338411&password=123456形式字符串拆分为数组
* array['mobile'=>'18683338412', 'password'=>'123456']
* @param string $para 解析的字符串
* @return array|null
*/
function resolve_linkstring($para)
{
if (!Str::contains($para, '=')) {
return $para;
}
$para = explode('&', $para);
$arg = array();
foreach ($para as $val) {
list($key, $value) = explode('=', $val);
$arg[$key] = $value;
}
return $arg;
}
}
3. check_signature
说明:URL签名校验
if (!function_exists('check_signature')) {
/**
*
* @desc 检查签名是否正确
* @param $signature url中的签名
* @param $timestamp url中的时间戳
* @param $nonce url中的随机字符串
* @return int [200 校验成功 1 参数不全 2 时间过期 3签名错误]
*/
function check_signature($signature, $timestamp, $nonce)
{
if (empty($signature)|| empty($timestamp) || empty($nonce)) {
return 1;
}
// 获得参数校验 【不同场景,配置不同】
$secret = config('appinit.secret');
$expire = config('appinit.expire');
// 请求时间超过有效期
if ( time() >= $expire + $timestamp ) {
return 2;
}
$tmpArr = array($secret, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = sha1(implode($tmpArr));
return $tmpStr == $signature ? 200 : 3;
}
}
4. urlsafe_base64_*
说明:安全base64的加解密
<?php
// 安全base64的加解密
if (!function_exists('urlsafe_base64_encode')) {
/**
* 安全的base64编码
* @param string $string 加密字符串
* return string 加密数据
*/
function urlsafe_base64_encode($string)
{
return str_replace(['+','/','='], ['-','_',''],
base64_encode($string));
}
} if (!function_exists('urlsafe_base64_decode')) {
/**
* 安全的base64解码
* @param string $string 加密数据
* return string 解密数据原文
*/
function urlsafe_base64_decode($string)
{
$data = str_replace(['-','_'], ['+','/'], $string);
$mod4 = strlen($data) % 4;
if ( $mod4 ) {
$data .= substr('====', $mod4);
} return base64_decode($data);
}
}
?>
PHP常用函数(1)的更多相关文章
- oracle常用函数及示例
学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...
- 总结js常用函数和常用技巧(持续更新)
学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...
- [转]SQL 常用函数及示例
原文地址:http://www.cnblogs.com/canyangfeixue/archive/2013/07/21/3203588.html --SQL 基础-->常用函数 --===== ...
- PHP常用函数、数组方法
常用函数:rand(); 生成随机数rand(0,50); 范围随机数时间:time(); 取当前时间戳date("Y-m-d H:i:s"); Y:年 m:月份 d:天 H:当前 ...
- Oracle常用函数
前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...
- Thinkcmf:页面常用函数
Thinkcmf:页面常用函数 全站seo: 文章列表: {$site_seo_title} <!--SEO标题--> {$site_seo_keywords} < ...
- matlab进阶:常用功能的实现,常用函数的说明
常用功能的实现 获取当前脚本所在目录 current_script_dir = fileparts(mfilename('fullpath')); % 结尾不带'/' 常用函数的说明 bsxfun m ...
- iOS导航控制器常用函数与navigationBar常用属性
导航控制器常用函数触发时机 当视图控制器的View将要出现时触发 - (void)viewWillAppear:(BOOL)animated 当视图控制器的View已经出现时触发 - (void)vi ...
- 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册
<zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...
- phpcms V9 常用函数 及 代码整理
常用函数 及 常用代码 总结如下 <?php //转换字符串或者数组的编码 str_charset($in_charset, $out_charset, $str_or_arr) //获取菜单 ...
随机推荐
- 配置自己的OpenGL库,glew、freeglut库编译,库冲突解决(附OpenGL Demo程序)
平台:Windows7,Visual C++ 2010 1. 引言 实验室的一个项目,用到OpenGL进行实时绘制,还用到一些其他的库,一个困扰我很久的问题就是编译时遇到的各种符号未定义,符号重定义之 ...
- VIM-Sed常用的一些记录。。。逐渐学习。。
:[range]co[py] {address} :t :[range]m[ove] {address] 例如 :1,3t10 1-3行复制到10行后.用m就是移动了. :sort / / // ...
- Base64简介
Base64是一种用64个字符来表示任意二进制数据的方法.首先,准备一个包含64个字符的数组:['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... ...
- C#中web页面之间传递数组参数
一直以来用到的都是在url地址中传递string类型,那么如果是数组类型的该怎么传递呢? ]; arryStr[] = "a"; arryStr[] = "b" ...
- 内省(introspector)------>JavaBean
内省(introspector)------>JavaBean 1.问什么要学内省? 开发框架时,经常需要Java对象的属性来来封装程序的数据,每次使用反射技术完成此操作过于 ...
- Linear Algebra lecture8 note
Compute solution of AX=b (X=Xp+Xn) rank r r=m solutions exist r=n solutions unique example: 若想方程有解 ...
- 找回MSI安装包Win7/Win8管理员身份功能
找回MSI安装包Win7/Win8管理员身份功能 从Vista开始,系统引入了UAC用户控制功能,即普通用户运行exe软件安装程序,支持使用普通账户/管理员身份分别进行安装,但是msi安装包只支持默认 ...
- linux修改mysql密码
以root为列. 查看文件安装路径whereis mysql 查询运行文件所在路径(文件夹地址) which mysql /usr/bin/mysqld_safe: line 178: 5930 ...
- postgresql修改最大连接数
1.合适的最大连接数 used_connections/max_connections在85%左右2.修改最大连接数postgresql最大连接数默认为1001)打开postgresql配置文件vim ...
- Linux LVM硬盘管理之二:创建逻辑卷步骤
创建逻辑卷(LV)的顺序:Linux分区---物理卷(PV)---卷组(VG)---逻辑卷(LV)---挂载到文件系统 删除逻辑卷(LV)的顺序:卸载文件系统----逻辑卷(LV)---卷组(VG)- ...