微信开发源码注释

本文用于解释微信开发中的中PHP代码意义,记录学习php基础知识。

1、PHP代码开始与结束标记

   

    // PHP code

    >


2、PHP注释信息使用双斜线//

     注释块使用/* ... ...*/


3、PHP语句结束,使用分号(;)


4、PHP常量定义 define

 

 

5、 php$符号是变量符号;把 $符号加上字符串,这个字符串就是一个变量名或对象名。

可以使用两个以及多个$,比如:

可变变量
$first ="hello";
$hello ="world";
echo $first." ".$$first;
结果是 hello world

$$first就是$hello,因为$first的值是hello

6、php中类相关定义以及实例化,class 声明累,new实例化

      类中定义可以方法以及属性

      属性值需要使用$标示以及权限修饰关键字 public private

      类的继承使用extends

7、实例化一个对象后,使用 -> 操作符来访问对象的成员属性和方法。比如:

object->var_name;
object->function_name; 

8、在定义的类里面访问成员的属性或者方法,可以使用伪变量 $this 。$this 用于表示当前对象或对象本身 。

name."
"; echo "我的年龄是:".$this->age; } } //类定义结束 $p1 = new Person(); //实例化一个对象 $p1->name = "Gonn"; //给 $p1 对象属性赋值 $p1->age = 25; $p1->say(); //调用对象中的 say()方法 ?>

9、PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

    $GLOBALS //在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
    $_SERVER  //保存关于报头、路径和脚本位置的信息。
    $_REQUEST  //用于收集 HTML 表单提交的数据。
    $_POST //广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。
    $_GET  //用于收集提交 HTML 表单 (method="get") 之后的表单数据。也可以收集 URL 中的发送的数据。
    $_FILES
    $_ENV
    $_COOKIE
    $_SESSION

PHP中全局变量
元素/代码 描述
$_SERVER['PHP_SELF'] 返回当前执行脚本的文件名。
$_SERVER['GATEWAY_INTERFACE'] 返回服务器使用的 CGI 规范的版本。
$_SERVER['SERVER_ADDR'] 返回当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME'] 返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
$_SERVER['SERVER_SOFTWARE'] 返回服务器标识字符串(比如 Apache/2.2.24)。
$_SERVER['SERVER_PROTOCOL'] 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
$_SERVER['REQUEST_METHOD'] 返回访问页面使用的请求方法(例如 POST)。
$_SERVER['REQUEST_TIME'] 返回请求开始时的时间戳(例如 1577687494)。
$_SERVER['QUERY_STRING'] 返回查询字符串,如果是通过查询字符串访问此页面。
$_SERVER['HTTP_ACCEPT'] 返回来自当前请求的请求头。
$_SERVER['HTTP_ACCEPT_CHARSET'] 返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST'] 返回来自当前请求的 Host 头。
$_SERVER['HTTP_REFERER'] 返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
$_SERVER['HTTPS'] 是否通过安全 HTTP 协议查询脚本。
$_SERVER['REMOTE_ADDR'] 返回浏览当前页面的用户的 IP 地址。
$_SERVER['REMOTE_HOST'] 返回浏览当前页面的用户的主机名。
$_SERVER['REMOTE_PORT'] 返回用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER['SCRIPT_FILENAME'] 返回当前执行脚本的绝对路径。
$_SERVER['SERVER_ADMIN'] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
$_SERVER['SERVER_PORT'] Web 服务器使用的端口。默认值为 “80”。
$_SERVER['SERVER_SIGNATURE'] 返回服务器版本和虚拟主机名。
$_SERVER['PATH_TRANSLATED'] 当前脚本所在文件系统(非文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] 返回当前脚本的路径。
$_SERVER['SCRIPT_URI'] 返回当前页面的 URI。

$_GET传递参数实例

假设我们有一张页面含有带参数的超链接:




测试 $GET



当用户点击链接 "Test $GET",参数 "subject" 和 "web" 被发送到 "test_get.php",然后您就能够通过 $_GET 在 "test_get.php" 中访问这些值了。

下面的例子是 "test_get.php" 中的代码:

实例









10、PHP中用于输出信息,使用关键字echo

11、function用于定义类中的方法;

12、关键词解释:

        isset(var) ---检测变量是否设置,如果 var 存在并且值不是 NULL 则返回 TRUE,否则返回FALSE

        empty(var)检查一个变量是否为空,当var存在,并且是一个非空非零的值时返回FALSE 否则返回 TRUE.

        echo输出一个或多个字符串

        exit输出一个消息并且退出当前脚本

        -> 是对象成员访问符号

        => 是数组成员访问符   

微信开发第一课实例代码如下:

valid();
}else{
    $wechatObj->responseMsg();
}

class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }

    private function checkSignature()
    {
        $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 function responseMsg()
    {
        $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;
        }
    }
}
?>

  1. 微信在接受信息后,通过$_GET方法请求是否设置了echostr
  2. 微信加密签名:signature--结合token参数以及timestamp、nonce参数等
  3. timestamp--时间戳
  4. nonce--随机数
  5. echostr-- 随机字符串

微信信息构造XML类型如下:

字符串类型

                      
                        
                        
                        %s
                        
                        
                        0
                      










你可能感兴趣的:(微信开发源码注释)