微信二次开发接入的理解

1.
private function checkSignature()
	{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];	
        		
		$token = TOKEN;
		$tmpArr = array($token, $timestamp, $nonce);
		sort($tmpArr);
		$tmpStr = implode( $tmpArr );
		$tmpStr = sha1( $tmpStr );
		
		if( $tmpStr == $signature ){
			return true;
		}else{
			return false;
		}
	}

checkSignature方法是通过判断三个参数是否存在然后判断是否是腾讯服务器提交,这样做是为了保证自己所写的程序的安全,如果$tmpStr==$signature那就说明是腾讯提交的,保证了安全问题。

2.

echo $_GET["echostr"];

就算代码中只有这一行代码,也可以配置成功,是因为开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

3.

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
	    file_put_contents('msg.txt', $postStr,FILE_APPEND);
if (!empty($postStr)){
                
              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
                $time = time();
                $textTpl = "<xml>
							<ToUserName><![CDATA[%s]]></ToUserName>
							<FromUserName><![CDATA[%s]]></FromUserName>
							<CreateTime>%s</CreateTime>
							<MsgType><![CDATA[%s]]></MsgType>
							<Content><![CDATA[%s]]></Content>
							<FuncFlag>0</FuncFlag>
							</xml>";             

判断poststr是否为空若不为空则在生成的msg.txt文件中写入xml中的内容

猜你喜欢

转载自blog.csdn.net/qq_41860519/article/details/79844059