1. 程式人生 > >生成簽名,隨機字符串,XML轉為數組,數組轉XML,json封裝,獲取IP地址

生成簽名,隨機字符串,XML轉為數組,數組轉XML,json封裝,獲取IP地址

lse als 封裝 用戶註冊 lex arc 加密 def 合數


/*
* ******生成簽名*********
*/
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];
}

生成簽名,隨機字符串,XML轉為數組,數組轉XML,json封裝,獲取IP地址