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) //获取菜单 ...
随机推荐
- Chp11 11.7
<Java语言程序设计>P327 题目要求使用数组来模拟实现ArrayList的一些方法,并要求可以根据实际长度来实现数组自动增长,这里只贴出LikeArrayList.java 测试方法 ...
- 如何制作快速加载的HTML页面
整理出来的tip 减小页面的大小 在页面下载中,页面的大小至今扮演着非常重要的因素. 减小页面的大小能够通过排除不必要空格,注释,动态内嵌脚本,和放入外部文件的 CSS 等在页面结构中很小的改变都能够 ...
- jQuery中$.fn的用法示例介绍
$.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效,下面有个不错的示例,喜欢的朋友可以参考下 如扩展$.fn.abc(),即$.fn.abc()是对jquery ...
- MySQL中MyISAM和InnoDB的区别
MyISAM和InnoDB的区别 MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事 ...
- eclipse连接mysql,插入数据时乱码
问题:如果eclipse中项目的编码方式为utf-8 插入数据后,在数据库中查看后,汉字出现乱码情况 解决方法: 1.在获取连接的时候将conn = DriverManager.getConnecti ...
- PSP第九周
一.表格 C(分类) C(内容) S(开始时间) ST(结束时间) I(打断时间) △(净工作时间) 学习 UML 12:30 13:20 0 50 编码 编码 20:00 22:10 0 130 学 ...
- PetaPoco ORM 增加返回DataTable的方法
public DataTable ExecuteDataTable(Sql sql) { return ExecuteDataTable(sql.SQL, sql.Arguments); } publ ...
- Python 之简易单链表
单链表的基本要素有 2 个,数据项和连接项.这两项在 Python 中可以通过对象及其属性来实现. class Node: def __init__ (self, data): self.data = ...
- Network Alignment(网络比对)模型
两类模型: 第一类:two-steps method 先计算两个网络之间每两个结点的相似性,再从N1*N2对相似性中抽取N1对匹配(N1<=N2). 代表算法:IsoRank 第二类:obj ...
- Qt实用小技巧(转)
原博网址:http://www.cnblogs.com/feiyangqingyun/archive/2010/12/06/1898143.html 1.如果在窗体关闭前自行判断是否可关闭答:重新实现 ...