& lt? 서버측 프로그래밍 언어 (professional hypertext preprocessor 의 약어)
네임 스페이스? 홈 \ 컨트롤러
사용할까요? 사고/통제자
반? Index 컨트롤러? 확장? 위챗 컨트롤러? {
공? 기능? 인덱스 () {
$v? =? $ _ get ["echostr"];
만약 (! Isset($v)){// 중복 검증을 피하기 위해 무작위 문자열을 기준으로 이전에 검증되었는지 여부를 결정합니다.
$ this-& gt;; Receive ();
} 그렇지 않으면 {
$ this-& gt;; Checksignature ();
}
}
//검증되지 않음 검증 수행
공공? 기능? CheckSignature(){
$ 서명? =? I ("서명"); //암호화 서명
$ 타임 스탬프? =? I ("타임 스탬프"); //타임스탬프
$nonce? =? I ("nonce"); //난수
$ 토큰? =? 토큰//토큰
$tmpArr? =? 배열 ($token, $timestamp,? $ nonce); //새 배열 만들기
Sort($tmpArr, sort _ string); //순서 변경
$tmpStr? =? 내파 ($ tmparr); //문자열로 변환
$tmpStr? =? Sha1($ tmpstr); //그런 다음 문자열을 암호화합니다.
만약 (? $tmpStr? = =? $ 서명? ) 을 참조하십시오
{
메아리? $ _ get ["echostr"];
종료;
//반환? 진실;
} 그렇지 않으면 {
반환? 가짜;
}
}
//이 (가) 여기에서 실행되었는지 확인했습니다.
공공? 기능? 수신 () {
$postStr? =? $ globals ["http _ raw _ post _ data"]; //사용자가 보낸 XML 형식의 메시지를 가져옵니다.
//$postStr? =? File _ get _ contents ("PHP://input");
Libxml _ disable _ entity _ loader (true);
$postObj? =? Simplexml_load_string($postStr,? "SimpleXMLElement", libxml _ nocdata);
$ this-& gt;; Logger ($ poststr);
//사용자에게 정보를 회신합니다.
만약 (! Empty($postObj)){
스위치 ($ post obj-& gt;; MsgType){
사건? 텍스트:
$ 결과? =? $ this-& gt;; Receivetext ($ postobj);
//허위 정보 신고를 피하다.
If(empty($result)){
$xml? =? "& ltxml & gt
& ltToUserName & gt& lt! [CDATA [%s]] > & lt/tousername >
& ltfrom 사용자 이름>& lt! [CDATA [%s]] > & lt/fromusername >
& lt createtime & gt% s</createtime >
& ltMsgType & gt& lt! [CDATA [%s]] > & lt/msgtype >
& lt 콘텐츠>& lt! [CDATA [%s]] > & lt/Content & gt;;
& lt/XML & gt;; ";
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), $ postObj-& gt;; MsgType, "다중 그래프 정보를 가져오지 않음");
}
메아리? $ result
깨뜨리다
사건? [사진]:
$ 결과? =? $ this-& gt;; Receiveimage ($ postobj);
If(empty($result)){
$xml? = "& ltxml & gt
& ltToUserName & gt& lt! [CDATA [%s]] > & lt/tousername >
& ltfrom 사용자 이름>& lt! [CDATA [%s]] > & lt/fromusername >
& lt createtime & gt% s</createtime >
& ltMsgType & gt& lt! [CDATA [%s]] > & lt/msgtype >
& ltarticlecount & gt1< /articlecount >
& lt 문장>
& ltitem & gt
& ltTitle & gt& lt! [CDATA [%s]] > & lt/Title & gt;; -응?
& lt 설명>& lt! [CDATA [%s]] > & lt/Description & gt;;
& ltPicUrl & gt& lt! [CDATA [%s]] > & lt/pic URL>;;
& ltUrl & gt& lt! [CDATA [%s]] > & lt/Url & gt;;
& lt/item & gt;;
& lt/Articles & gt;;
& lt/XML & gt;; ";
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (),' 뉴스',' 이씨와 함께 위챗 개발을 하자',' 위챗 개발은 위챗 공공플랫폼 개발로 위챗 웹 페이지를 통해 기업 정보, 서비스, 활동 등을 전시하고, 사용자는 간단한 설정을 통해 위챗 3G 웹 사이트를 생성할 수 있다. 위챗 공공 플랫폼을 통해 위챗 사용자에게 기업 브랜드를 전시하고, 홍보 비용을 절감하고, 기업, 소비자, 고객 간의 일대일 상호 작용 및 커뮤니케이션을 구축하고, 소비자를 기업 CRM 시스템에 접속시켜 홍보, 판촉, 홍보, 애프터를 진행한다. 주류 온라인 및 오프라인 위챗 인터랙티브 마케팅 방식을 형성했습니다. ","/-po3dsag _ xi4khgkpowk1hf6hy/baike/w% 3d 268% 3bg% 3d 0/sign = a/; 5aeb903e/b03533fa828ba61efb07a5464738
}
메아리? $ result
깨뜨리다
사건? 이벤트':
$ 결과? =? $ this-& gt;; Receiveevent ($ postobj);
If(empty($result)){
$xml? =? "& ltxml & gt
& ltToUserName & gt& lt! [CDATA [%s]] > & lt/tousername >
& ltfrom 사용자 이름>& lt! [CDATA [%s]] > & lt/fromusername >
& lt createtime & gt% s</createtime >
& ltMsgType & gt& lt! [CDATA [%s]] > & lt/msgtype >
& lt 콘텐츠>& lt! [CDATA [%s]] > & lt/Content & gt;;
& lt/XML & gt;; ";
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "위챗 인터페이스 테스트 서비스 번호에 관심을 가져 주셔서 감사합니다. 저는 이 선생님입니다!" " );
}
메아리? $ result
깨뜨리다
위약? 다음 중 하나를 수행합니다.
$ 결과? =? "보낸 데이터 유형은 일시적으로 처리되지 않습니다.? 클릭합니다 -응? 。 -응? $ post obj-& gt;; MsgType
메아리? $ result
깨뜨리다
}
}
}
//로그
개인? 기능? 로거 ($content){
$ logsize =100000;
$log? =? "../log.txt";
If(file_exists($log)? & amp& amp? 파일 크기 (로그)? & gt? $logSize){
Unlink ($ log);
}
파일 _ 업로드 _ 내용 ($log,? 날짜 ("Y-m-d"? H:i:s ") 를 참조하십시오. "?" 。 $ 컨텐츠. "\n", file _ append);
}
//자동 응답 정보 관심
개인? 기능? 수신 이벤트 ($postObj){
$xml? =? "& ltxml & gt
& ltToUserName & gt& lt! [CDATA [%s]] > & lt/tousername >
& ltfrom 사용자 이름>& lt! [CDATA [%s]] > & lt/fromusername >
& lt createtime & gt% s</createtime >
& ltMsgType & gt& lt! [CDATA [%s]] > & lt/msgtype >
& lt 콘텐츠>& lt! [CDATA [%s]] > & lt/Content & gt;;
& lt/XML & gt;; ";
If($ post obj-& gt;; 이벤트 = = "subscribe") {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "위챗 인터페이스 테스트 서비스 번호에 관심을 가져 주셔서 감사합니다. 저는 이 선생님입니다!" " );
다른 거요? If($ post obj-& gt;; 이벤트 = = "click") {
If($ post obj-& gt;; 이벤트 키 = = "getsalary") {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "조회 클릭-> 급여 버튼);
다른 거요? If($ post obj-& gt;; 이벤트 키 = = "getattendance") {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "조회 클릭-> 출석 기록 버튼);
다른 거요? If($ post obj-& gt;; 이벤트 키 = = "getbonus") {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "조회 클릭-> 보너스 상세 정보 버튼);
다른 거요? If($ post obj-& gt;; 이벤트 키 = = "getabout") {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "우리에 대해 클릭-> 연락처 버튼);
다른 거요? If($ post obj-& gt;; 이벤트 키 = = "get join") {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "우리에 대해 클릭-> 우리 버튼 가입 ");
다른 거요? If($ post obj-& gt;; 이벤트 키 = = "get customer") {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "우리에 대해 클릭-> 고객 서비스 버튼);
다른 거요? If($ post obj-& gt;; 이벤트 키 = = "getinternational") {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "당신은 뉴스를 주문했습니다-> 국제 버튼);
다른 거요? If($ post obj-& gt;; 이벤트 키 = = "getindustry") {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "당신은 뉴스를 주문했습니다-> 산업 버튼);
}
다른 거요? If($ post obj-& gt;; 이벤트 = = "scancode _ waitmsg") {
//프롬프트가 있는 이벤트 코드 검색
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "힌트가 있는 스캔 이벤트를 사용했습니다. 이벤트 키: {$ postobj-> eventkey}";
다른 거요? If($ post obj-& gt;; 이벤트 = = "scancode _ push") {
//스캔 코드 푸시 이벤트
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "당신은 스캔 코드를 사용하여 이벤트를 푸시했습니다. 이벤트 키: {$ postobj->; 이벤트 키} ");
} 그렇지 않으면 {
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "text", "너의 조작은 좀 묘하다.");
}
반환? $ result
}
//수신된 텍스트 정보를 처리하고 사용자에게 회신합니다.
개인? 기능? ReceiveText($postObj){
$ 컨텐츠? =? Trim($ post obj-& gt;; 내용);
//if(strstr($content, "hello "){
If (preg _ match ("/\ d * $/",$ content)) {
//다중 그래프 정보에 응답
$ 결과? =? $ this-& gt;; Receivenews ($ postobj);
반환? $ result?
다른 거요? If($content== "picture") {
//그림 메시지에 회신
$xml? =? "& ltxml & gt
& ltToUserName & gt& lt! [CDATA [%s]] > & lt/tousername >
& ltfrom 사용자 이름>& lt! [CDATA [%s]] > & lt/fromusername >
& lt createtime & gt% s</createtime >
& ltMsgType & gt& lt! [CDATA [%s]] > & lt/msgtype >
& ltImage & gt
& ltMediaId & gt& lt! [CDATA [%s]] > & lt/MediaId & gt;;
& lt/Image & gt;;
& lt/XML & gt;; ";
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), "image", "t8asw vxml1vypfmdznezlq 2z2b6wim4ji4pbc23qu muc9/kloc-
반환? $ result
} 그렇지 않으면 {
//답장 문자
$xml? =? "& ltxml & gt
& ltToUserName & gt& lt! [CDATA [%s]] > & lt/tousername >
& ltfrom 사용자 이름>& lt! [CDATA [%s]] > & lt/fromusername >
& lt createtime & gt% s</createtime >
& ltMsgType & gt& lt! [CDATA [%s]] > & lt/msgtype >
& lt 콘텐츠>& lt! [CDATA [%s]] > & lt/Content & gt;;
& lt/XML & gt;; ";
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (), $ postObj-& gt;; MsgType, $ content);
반환? $ result
}
}
//수신된 텍스트 메시지를 처리하고 사용자에게 단일 텍스트 메시지로 응답합니다.
개인? 기능? 이미지 수신 ($postObj){
$xml? = "& ltxml & gt
& ltToUserName & gt& lt! [CDATA [%s]] > & lt/tousername >
& ltfrom 사용자 이름>& lt! [CDATA [%s]] > & lt/fromusername >
& lt createtime & gt% s</createtime >
& ltMsgType & gt& lt! [CDATA [%s]] > & lt/msgtype >
& ltarticlecount & gt1< /articlecount >
& lt 문장>
& ltitem & gt
& ltTitle & gt& lt! [CDATA [%s]] > & lt/Title & gt;; -응?
& lt 설명>& lt! [CDATA [%s]] > & lt/Description & gt;;
& ltPicUrl & gt& lt! [CDATA [%s]] > & lt/pic URL>;;
& ltUrl & gt& lt! [CDATA [%s]] > & lt/Url & gt;;
& lt/item & gt;;
& lt/Articles & gt;;
& lt/XML & gt;; ";
$ 결과? =? 스프린트 ($ XML, $ post obj-& gt;; FromUserName, $ post obj-& gt;; ToUserName, time (),' 뉴스',' 이씨와 함께 위챗 개발을 하자',' 위챗 개발은 위챗 공공플랫폼 개발로 위챗 웹 페이지를 통해 기업 정보, 서비스, 활동 등을 전시하고, 사용자는 간단한 설정을 통해 위챗 3G 웹 사이트를 생성할 수 있다. 위챗 공공 플랫폼을 통해 위챗 사용자에게 기업 브랜드를 전시하고, 홍보 비용을 절감하고, 기업, 소비자, 고객 간의 일대일 상호 작용 및 커뮤니케이션을 구축하고, 소비자를 기업 CRM 시스템에 접속시켜 홍보, 판촉, 홍보, 애프터를 진행한다. 주류 온라인 및 오프라인 위챗 인터랙티브 마케팅 방식을 형성했습니다. ","/-po3dsag _ xi4khgkpowk1hf6hy/baike/w% 3d 268% 3bg% 3d 0/sign = a/; 5aeb903e/b03533fa828ba61efb07a5464738
반환? $ result
}
//수신된 텍스트 정보를 처리하여 사용자에게 다중 그래프 정보로 응답합니다.
개인? 기능? 뉴스 수신 ($postObj){
$con? =? 배열 (
Array ("제목" = >; 앞 거리 보기',' 설명' =>" hjhhj', "picurl" => "/9fo3d sag _ Xi 4k hgko 9 WTA nf 6h hy/image/pic/item/5243fbf2b21/ 6c 380 CD 790238 db 3. jpg ","URL "=>"/9 fo3dsag _ Xi 4k hgko 9 WTA nf 6h hy/image/pic/item/5244
Array ("제목" = >; 평강로',' 설명' = >; "mkbkbjj", "picurl" => "/upload/ttq/20160729/146978/
Array ("제목" = >; 평강로',' 설명' = >; "mkbkbjj", "picurl" => "/html/uploadpic/2010-3/201
Array ("제목" = >; 앞 거리 보기',' 설명' =>" hjhhj',' picurl' => "/uploadfile/2013/0508 "URL" => "/uploadfile/2013/0508/201305081;
Array ("제목" = >; 평강로',' 설명' = >; "mkbkbjj", "picurl" => "/it/u = 995757682,3656700920 & Fm = 214 & Gp=0.jpg ","URL "=>"/it/u = 995757682,3656700920 & Fm = 214 & Gp=0.jpg "),
Array ("제목" = >; 앞 거리 보기',' 설명' =>" hjhhj',' picurl' => "/tupian/20126/kloc- "/tupian/201261510566.jpg"),
Array ("제목" = >; 평강로',' 설명' = >; "mkbkbjj", "picurl" => "/uploads/allimg/160528/9-16055
);
$ bodys = "& ltitem & gt
& ltTitle & gt& lt! [CDATA [%s]] > & lt/Title & gt;;
& lt 설명>& lt! [CDATA [%s]] > & lt/Description & gt;;
& ltPicUrl & gt& lt! [CDATA [%s]] > & lt/pic URL>;;
& ltUrl & gt& lt! [CDATA [%s]] > & lt/Url & gt;;
& lt/item & gt;; ";
$tpl2? = "";
Foreach($con? 로? $ key = & gt$newArray)? {
$tpl2? 。 =? Sprintf($bodys, $newArray["Title"], $newArray["Description"], $ newarray ["picurl"
}
$fromUsername? =? $ post obj-& gt;; 시작 사용자 이름;
$toUsername? =? $ post obj-& gt;; ToUserName
$ TPL1= "< Xml>
& ltToUserName & gt& lt! [CDATA [%s]] > & lt/tousername >
& ltfrom 사용자 이름>& lt! [CDATA [%s]] > & lt/fromusername >
& lt createtime & gt% s</createtime >
& ltMsgType & gt& lt! [CDATA [%s]] > & lt/msgtype >
& ltarticlecount & gt% s</articlecount >
& lt 문장> ";
$ tpl3 = "& lt/Articles & gt;;
& lt/XML & gt;; ";
$ TPL1= sprintf ($ TPL1,$fromUsername, $toUsername, time (), ";
$ 결과? =? $tpl 1 입니다. $tpl2. $ tpl3
반환? $ result
}
}