生成签名,随机字符串,XML转为数组,数组转XML,json封装,获取IP地址


/* * ******生成签名********* */private function getSign($params){    ksort($params); //将参数数组按照参数名ASCII码从小到大排序    foreach ($params as $key => $item) {        if (!empty($item)) {  //剔除参数值为空的参数            $newArr[] = $key . ‘=‘ . $item; // 整合新的参数数组        }    }    $stringA = implode("&", $newArr);  //使用 & 符号连接参数    $stringSignTemp = $stringA . "&key=" . "key";    // key是在商户平台API安全里自己设置的    $stringSignTemp = hash_hmac("sha256",$stringSignTemp,"key"); //将字符串进行MD5加密或hash_hmac加密    $sign = strtoupper($stringSignTemp); //将所有字符转换为大写    return $sign;}
/** ***生成随机字符串,微信所需参数!*/function rand_code(){    $str = ‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘;//62个字符    $str = str_shuffle($str);    $str = substr($str, 0, 32);    return $str;}
/* * ******传输给微信的参数要组成xml格式发送,传入参数数组*/public function ToXml($data = array()){    if (!is_array($data) || count($data) <= 0) {        return ‘数组异常‘;    }    $xml = "<xml>";    foreach ($data as $key => $val) {        if (is_numeric($val)) {            $xml .= "<" . $key . ">" . $val . "</" . $key . ">";        } else {            $xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";        }    }    $xml .= "</xml>";    return $xml;}

/* * ******将xml数据转换为数组,接收微信返回数据时用到********* */public function FromXml($xml){    if (!$xml) {        echo "xml数据异常!";    }    //将XML转为array    //禁止引用外部xml实体    libxml_disable_entity_loader(true);    $data = json_decode(json_encode(simplexml_load_string($xml, ‘SimpleXMLElement‘, LIBXML_NOCDATA)), true);

return $data;}
/** * api 数据返回 * @param  [int] $code [结果码 200:正常/4**数据问题/5**服务器问题] * @param  [string] $msg  [接口要返回的提示信息] * @param  [array]  $data [接口要返回的数据] * @return [string]       [最终的json数据] */
 function return_msg($code, $msg = ‘‘, $data = []) {        /*********** 组合数据  ***********/        $return_data[‘code‘] = $code;        $return_data[‘msg‘]  = $msg;        if(empty($data)){            $return_data[‘data‘] = "";        }else{            $return_data[‘data‘] = $data;        }        /*********** 返回信息并终止脚本  ***********///        echo json_encode($return_data,JSON_UNESCAPED_UNICODE);die;        echo str_replace(‘:null‘,‘:""‘,json_encode($return_data,JSON_UNESCAPED_UNICODE));die;//JSON_UNESCAPED_UNUCODE 禁止中文转换    }
/* * 获取当前用户注册的ip */

function get_client_ip($type = 0){    $type = $type ? 1 : 0;    static $ip = NULL;    if ($ip !== NULL) return $ip[$type];    if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘])) {        $arr = explode(‘,‘, $_SERVER[‘HTTP_X_FORWARDED_FOR‘]);        $pos = array_search(‘unknown‘, $arr);        if (false !== $pos) unset($arr[$pos]);        $ip = trim($arr[0]);    } elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘])) {        $ip = $_SERVER[‘HTTP_CLIENT_IP‘];    } elseif (isset($_SERVER[‘REMOTE_ADDR‘])) {        $ip = $_SERVER[‘REMOTE_ADDR‘];    }    // IP地址合法验证    $long = sprintf("%u", ip2long($ip));    $ip = $long ? array($ip, $long) : array(‘0.0.0.0‘, 0);    return $ip[$type];}

原文地址:https://www.cnblogs.com/Dgaozhen/p/9963428.html

时间: 2024-11-07 18:45:10

生成签名,随机字符串,XML转为数组,数组转XML,json封装,获取IP地址的相关文章

随机字符串的生成

随机字符串可以用于为用户提供随机密码.随机验证码等等场景之中.好了,话不多说,直接上代码吧 /** * 获取随机字符串 * @param length 生成的字符串长度 * @return */ public static String genRandomNum(int length) { // 62是因为数组是从0开始的,26个小写字母+10个数字+26个大写字母 final int maxNum = 62; int i; // 生成的随机数 int count = 0; // 生成的密码的长

.net生成随机字符串

生成随机字符串的工具类: /// <summary> /// 随机字符串工具类 /// </summary> public class RandomTools { /// <summary> /// 随机系数 /// </summary> public static int _RandIndex = 0; #region 获取某个区间的一个随机数 /// <summary> /// 获取某个区间的一个随机数 /// </summary>

PHP 生成随机字符串与唯一字符串

说明:生成随机字符串用到的方法有 mt_rand() 生成唯一字符串用到的方法有 md5(),uniqid(),microtime() 代码: 1 <?php 2 /* 3 * 生成随机字符串 4 * @param int $length 生成随机字符串的长度 5 * @param string $char 组成随机字符串的字符串 6 * @return string $string 生成的随机字符串 7 */ 8 function str_rand($length = 32, $char =

记一次随机字符串生成算法的随机概率与性能的提升

一.前言背景 前几天我部门一个和银行对接的项目中出现了业务Id重复的现象,导致了很多之前不可预见的bug.由于该项目有资金流动,涉及到金钱交易,故不敢有任何闪失.于是leader把同事写的Handler.ashx.cs发给我瞧了瞧,其中的一处流水号生成代码引起了我的注意.代码如下: string[] str1 = new string[] { "A", "B", "C", "D", "E", "F

(2016-09-01)SQL批量生成随机字符串

/*----------------------------------批量生成随机的字符串----------------------------------*/ --如果在已知数据库中存在GetRandStr这个存储过程,则删除(为了方便反复执行这段代码) if exists(select * from sys.objects where name='GetRandStr' and type='P') drop proc GetRandStr go --随机字符串存储过程 create pr

PHP生成随机字符串与唯一字符串

代码如下: <?php /* * 生成随机字符串 * @param int $length 生成随机字符串的长度 * @param string $char 组成随机字符串的字符串 * @return string $string 生成的随机字符串 */ function str_rand($length = 32, $char = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') { if(!is_int($le

PHP学习笔记:万能随机字符串生成函数(已经封装好)

做验证码用到的,然后就把这个函数封装起来,使用时候要设置2个参数: $str设置里要被采集的字符串,比如: $str='efasfgzsrhftjxjxjhsrth'; 则在函数里面生成的字符串就回从efasfgzsrhftjxjxjhsrth里面随机抓取: $codeLen设置要生成的随机字符串,设置5,则生成5个随机字符串. 原理:随机抓取字符串,对字符串进行拼接 效果: 代码: <?php //mt_rand 获取随机数 mt_rand(min, max); $str="abcdef

SQL Server使用PARSENAME函数来处理IP地址字符串

IP V4地址是用3个点分隔的字符串,有时候需要在数据库中进行处理,比如判断IP地址是否有效等. 通常想到的方法是自己写个函数,比如利用CHARINDEX.SUBSTRING等函数组合来获取IP地址的各个部分,然后处理. SQL Server用来表示对象的时候通常采取 架构名.对象名.数据库名.架构名.对象名.链接服务器名.数据库名.架构名.对象名 等方式 比如dbo.tablename.master.dbo.tablename.[192.168.1.100].master.dbo.tablen

js随机生成一个数组中的随机字符串以及更新验证码

// 生成随机字符串function randomMixed(n) {    var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];    var res = "&qu