namespace Home\Controller;useThink\Controller;header('Content-type:text');define("TOKEN", "x**");class XiaoKeFuController extendsController {public functionindex(){if (isset($_GET['echostr'])) {$this->valid();
}else{$this->responseMsg();
}
}public functionvalid()
{$echoStr = $_GET["echostr"];if($this->checkSignature()){header('content-type:text');echo $echoStr;exit;
}else{echo $echoStr.'+++'.TOKEN;exit;
}
}private functioncheckSignature()
{$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token =TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr,SORT_STRING);$tmpStr = implode( $tmpArr);$tmpStr = sha1( $tmpStr);if( $tmpStr == $signature){return true;
}else{return false;
}
}public functionresponseMsg()
{$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];if (!empty($postStr)){$postObj = simplexml_load_string($postStr, 'SimpleXMLElement',LIBXML_NOCDATA);$fromUsername = $postObj->FromUserName;$toUsername = $postObj->ToUserName;$keyword = trim($postObj->Content);$time = time();$textTpl = "
%s
0
";if($keyword == "?" || $keyword == "?")
{$msgType = "text";$contentStr = date("Y-m-d H:i:s",time());$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;
}
}else{echo "";exit;
}
}
}