PHP网站记录

手把手教您搭建Apache下的PHP环境

http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%8E%A8%E8%8D%90/37371.shtml

http://httpd.apache.org/docs/2.4/platform/windows.html#winsvc

PHP 教程

http://www.w3school.com.cn/php/index.asp

http://www.kokojia.com/course-3553.html

 

微信开发教程 视频

http://study.163.com/course/courseMain.htm?courseId=1003067001#/courseDetail?tab=1

http://study.163.com/course/courseMain.htm?courseId=1003868040#/courseDetail?tab=1

 

通讯AES加密

https://www.cryptopp.com/wiki/Advanced_Encryption_Standard
https://www.cryptopp.com/wiki/TripleDES#Sample_Programs

 

微信加密sample
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1434696670

 

微信php代码示例

复制代码
 1 <?php
 2 /**
 3   * wechat php test
 4   */
 5 
 6 //define your token
 7 define("TOKEN", "weixin");
 8 $wechatObj = new wechatCallbackapiTest();
 9 $wechatObj->valid();
10 
11 class wechatCallbackapiTest
12 {
13     public function valid()
14     {
15         $echoStr = $_GET["echostr"];
16 
17         //valid signature , option
18         if($this->checkSignature()){
19             echo $echoStr;
20             exit;
21         }
22     }
23 
24     public function responseMsg()
25     {
26         //get post data, May be due to the different environments
27         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
28 
29           //extract post data
30         if (!empty($postStr)){
31                 
32                   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
33                 $fromUsername = $postObj->FromUserName;
34                 $toUsername = $postObj->ToUserName;
35                 $keyword = trim($postObj->Content);
36                 $time = time();
37                 $textTpl = "<xml>
38                             <ToUserName><![CDATA[%s]]></ToUserName>
39                             <FromUserName><![CDATA[%s]]></FromUserName>
40                             <CreateTime>%s</CreateTime>
41                             <MsgType><![CDATA[%s]]></MsgType>
42                             <Content><![CDATA[%s]]></Content>
43                             <FuncFlag>0</FuncFlag>
44                             </xml>";             
45                 if(!empty( $keyword ))
46                 {
47                       $msgType = "text";
48                     $contentStr = "Welcome to wechat world!";
49                     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
50                     echo $resultStr;
51                 }else{
52                     echo "Input something...";
53                 }
54 
55         }else {
56             echo "";
57             exit;
58         }
59     }
60         
61     private function checkSignature()
62     {
63         $signature = $_GET["signature"];
64         $timestamp = $_GET["timestamp"];
65         $nonce = $_GET["nonce"];    
66                 
67         $token = TOKEN;
68         $tmpArr = array($token, $timestamp, $nonce);
69         sort($tmpArr);
70         $tmpStr = implode( $tmpArr );
71         $tmpStr = sha1( $tmpStr );
72         
73         if( $tmpStr == $signature ){
74             return true;
75         }else{
76             return false;
77         }
78     }
79 }
80 
81 ?>
View Code
复制代码

 

posted on   itdef  阅读(141)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示