<code><?php</code>
<code>/*</code>
<code> </code><code>http://fanyi.youdao.com/openapi.do?keyfrom=weifan&key=791593512&type=data&doctype=<doctype>&version=1.1&q=要翻譯的文本 </code>
<code> </code><code>方倍工作室 http://www.cnblogs.com/txw1958/</code>
<code> </code><code>CopyRight 2013 www.doucube.com All Rights Reserved</code>
<code>*/</code>
<code>traceHttp();</code>
<code>define(</code><code>"TOKEN"</code><code>, </code><code>"weixin"</code><code>);</code>
<code>$wechatObj</code> <code>= </code><code>new</code> <code>wechatCallbackapiTest();</code>
<code>if</code> <code>(isset(</code><code>$_GET</code><code>[</code><code>'echostr'</code><code>])) {</code>
<code> </code><code>$wechatObj</code><code>->valid();</code>
<code>}</code><code>else</code><code>{</code>
<code> </code><code>$wechatObj</code><code>->responseMsg();</code>
<code>}</code>
<code>class</code> <code>wechatCallbackapiTest</code>
<code>{</code>
<code> </code><code>public</code> <code>function</code> <code>valid()</code>
<code> </code><code>{</code>
<code> </code><code>$echoStr</code> <code>= </code><code>$_GET</code><code>[</code><code>"echostr"</code><code>];</code>
<code> </code><code>if</code><code>(</code><code>$this</code><code>->checkSignature()){</code>
<code> </code><code>echo</code> <code>$echoStr</code><code>;</code>
<code> </code><code>exit</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>private</code> <code>function</code> <code>checkSignature()</code>
<code> </code><code>$signature</code> <code>= </code><code>$_GET</code><code>[</code><code>"signature"</code><code>];</code>
<code> </code><code>$timestamp</code> <code>= </code><code>$_GET</code><code>[</code><code>"timestamp"</code><code>];</code>
<code> </code><code>$nonce</code> <code>= </code><code>$_GET</code><code>[</code><code>"nonce"</code><code>];</code>
<code> </code><code>$token</code> <code>= TOKEN;</code>
<code> </code><code>$tmpArr</code> <code>= </code><code>array</code><code>(</code><code>$token</code><code>, </code><code>$timestamp</code><code>, </code><code>$nonce</code><code>);</code>
<code> </code><code>sort(</code><code>$tmpArr</code><code>);</code>
<code> </code><code>$tmpStr</code> <code>= implode( </code><code>$tmpArr</code> <code>);</code>
<code> </code><code>$tmpStr</code> <code>= sha1( </code><code>$tmpStr</code> <code>);</code>
<code> </code><code>if</code><code>( </code><code>$tmpStr</code> <code>== </code><code>$signature</code> <code>){</code>
<code> </code><code>return</code> <code>true;</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>return</code> <code>false;</code>
<code> </code><code>public</code> <code>function</code> <code>responseMsg()</code>
<code> </code><code>$postStr</code> <code>= </code><code>$GLOBALS</code><code>[</code><code>"HTTP_RAW_POST_DATA"</code><code>];</code>
<code> </code><code>//simplexml_load_string() 函數把 XML 字元串載入對象中。</code>
<code> </code><code>if</code> <code>(!</code><code>empty</code><code>(</code><code>$postStr</code><code>)){</code>
<code> </code><code>$postObj</code> <code>= simplexml_load_string(</code><code>$postStr</code><code>, </code><code>'SimpleXMLElement'</code><code>, LIBXML_NOCDATA);</code>
<code> </code><code>$fromUsername</code> <code>= </code><code>$postObj</code><code>->FromUserName;</code>
<code> </code><code>$toUsername</code> <code>= </code><code>$postObj</code><code>->ToUserName;</code>
<code> </code><code>$keyword</code> <code>= trim(</code><code>$postObj</code><code>->Content);</code>
<code> </code><code>$time</code> <code>= time();</code>
<code> </code><code>$textTpl</code> <code>= "<xml></code>
<code> </code><code><ToUserName><![CDATA[%s]]></ToUserName></code>
<code> </code><code><FromUserName><![CDATA[%s]]></FromUserName></code>
<code> </code><code><CreateTime>%s</CreateTime></code>
<code> </code><code><MsgType><![CDATA[%s]]></MsgType></code>
<code> </code><code><Content><![CDATA[%s]]></Content></code>
<code> </code><code><FuncFlag>0</FuncFlag></code>
<code> </code><code></xml>";</code>
<code> </code><code>//sprintf() 函數把格式化的字元串寫入一個變量中</code>
<code> </code><code>//strstr() 函數搜尋一個字元串在另一個字元串中的第一次出現</code>
<code> </code><code>if</code><code>(</code><code>$keyword</code> <code>== </code><code>"1"</code><code>)</code>
<code> </code><code>{</code>
<code> </code><code>$msgType</code> <code>= </code><code>"text"</code><code>;</code>
<code> </code><code>$contentStr</code> <code>= </code><code>"哈哈"</code><code>;</code>
<code> </code><code>$resultStr</code> <code>= sprintf(</code><code>$textTpl</code><code>, </code><code>$fromUsername</code><code>, </code><code>$toUsername</code><code>, </code><code>$time</code><code>, </code><code>$msgType</code><code>, </code><code>$contentStr</code><code>);</code>
<code> </code><code>echo</code> <code>$resultStr</code><code>;</code>
<code> </code><code>}</code><code>elseif</code><code>( </code><code>$keyword</code> <code>== </code><code>"A"</code><code>)</code>
<code> </code><code>$contentStr</code> <code>= </code><code>"OK"</code><code>;</code>
<code> </code><code>}</code><code>elseif</code><code>( </code><code>$keyword</code> <code>== </code><code>"B"</code><code>)</code>
<code> </code><code>$contentStr</code> <code>= </code><code>"good"</code><code>;</code>
<code> </code><code>}</code><code>else</code> <code>if</code><code>(</code><code>$keyword</code> <code>== </code><code>"fff"</code><code>){</code>
<code> </code><code>$msgType</code> <code>= </code><code>"text"</code><code>;</code>
<code> </code><code>$contentStr</code> <code>= </code><code>"asasasas!!<font color = 'red'>"</code><code>.</code><code>$keyword</code><code>.</code><code>"</font>zzzz"</code><code>;</code>
<code>exit</code><code>();</code>
<code> </code><code>$msgType</code> <code>= </code><code>"text"</code><code>;</code>
<code> </code><code>$contentStr</code> <code>= </code><code>$keyword</code><code>.</code><code>"zzzz"</code><code>;</code>
<code>function</code> <code>traceHttp()</code>
<code> </code><code>//“REMOTE_ADDR”:正在浏覽目前頁面使用者的 IP 位址。 </code>
<code> </code><code>logger(</code><code>"\n\nREMOTE_ADDR:"</code><code>.</code><code>$_SERVER</code><code>[</code><code>"REMOTE_ADDR"</code><code>].(</code><code>strstr</code><code>(</code><code>$_SERVER</code><code>[</code><code>"REMOTE_ADDR"</code><code>],</code><code>'101.226'</code><code>)? </code><code>" FROM WeiXin"</code><code>: </code><code>"Unknown IP"</code><code>));</code>
<code> </code><code>logger(</code><code>"QUERY_STRING:"</code><code>.</code><code>$_SERVER</code><code>[</code><code>"QUERY_STRING"</code><code>]);</code>
<code>function</code> <code>logger(</code><code>$log_content</code><code>)</code>
<code> </code><code>if</code><code>(isset(</code><code>$_SERVER</code><code>[</code><code>'HTTP_APPNAME'</code><code>])){ </code><code>//SAE</code>
<code> </code><code>sae_set_display_errors(false); </code><code>//</code>
<code> </code><code>sae_debug(</code><code>$log_content</code><code>); </code><code>//sae_debug是儲存到日志裡面, 不會儲存到storage裡面.</code>
<code> </code><code>sae_set_display_errors(true);</code>
<code> </code><code>}</code><code>else</code><code>{ </code><code>//LOCAL</code>
<code> </code><code>$max_size</code> <code>= 500000;</code>
<code> </code><code>$log_filename</code> <code>= </code><code>"weixinlog.xml"</code><code>;</code>
<code> </code><code>if</code><code>(</code><code>file_exists</code><code>(</code><code>$log_filename</code><code>) </code><code>and</code> <code>(</code><code>abs</code><code>(</code><code>filesize</code><code>(</code><code>$log_filename</code><code>)) > </code><code>$max_size</code><code>)){unlink(</code><code>$log_filename</code><code>);}</code>
<code> </code><code>file_put_contents</code><code>(</code><code>$log_filename</code><code>, </code><code>date</code><code>(</code><code>'Y-m-d H:i:s'</code><code>).</code><code>$log_content</code><code>.</code><code>"\r\n"</code><code>, FILE_APPEND);</code>
<code>?></code>
本文轉自噼裡啪啦啦 51CTO部落格,原文連結:http://blog.51cto.com/pilipala/1661398,如需轉載請自行聯系原作者