生成簽名,隨機字符串,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];}
相關文章
相關標籤/搜索