php版微信公共平台开发者认证实例

 更新时间:2016年11月25日 15:45  点击:2074
开发者认证实例,希望此实例对各位有所帮助。

微信公众平台如何成为开发者?

登录微信公众平台后,点击高级功能=》开发模式=》成为开发者=》填写接口配置信息,提交后等待我司工作人员的审核。


1.开发者认证

这个最简单了,直接上个超简单版代码:

 代码如下 复制代码

exit($_GET['echostr']);

php文件就写上面这一句就行,微信公共平台随便填写token,写上php文件的url,然后验证即可通过。超级简单吧?官方的认证根本没有必要,因为后面的步骤没有使用的验证签名的地方,所以这个地方为了图方便直接输出返回值轻松通过验证。当然下面也给出官方要求的认证代码:

 代码如下 复制代码

$token='11';
$signarr=array($token,$_GET['timestamp'],$_GET['nonce']);
if($this->signnature($signarr,$_GET['signature'])){
   exit($_GET['echostr']);
}
function signnature($arr,$signature){
   sort($arr);
   if(sha1(implode($arr))==$signature) return true;
   return false;
}

把上面的代码保存成php文件,在微信公共平台设置同样的token,然后验证即可通过。

注:url是允许带get参数的

网址接入

公众平台用户提交信息后,我们将以GET请求方式请求到填写的Url上,并且带上四个参数:

* signature — 微信加密签名
* timestamp — 时间戳
* nonce — 随机数
* echostr — 随机字符串

开发者通过检验signature对网址接入合法性进行校验。若此次GET请求原样返回echostr参数内容,则接入生效,否则接入失败。  验证signature将结合开发者填写的token参数、timestamp

参数和nonce参数等,加密流程:
* 将token、timestamp、nonce三个参数进行字典序排序
* 将三个参数字符串拼接成一个字符串进行sha1加密
* 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。

在php中memcache是一个缓存功能,可以提高数据访问性能同时减少机器负载,下面我来介绍php中memcache优化方法吧。

memcache support enabled
Active persistent connections 0
Revision $Revision: 1.92 $

Directive Local Value Master Value
memcache.allow_failover 1 1
memcache.chunk_size 8192 8192
memcache.default_port 11211 11211
memcache.hash_function crc32 crc32
memcache.hash_strategy standard standard
memcache.max_failover_attempts 20 20

 在网上找到php的memcache模块的优化方面的部分资料,贴出来备忘.

 代码如下 复制代码

vi /etc/php.d/memcache.ini
[Memcache]
; Enable memcache extension module
extension=memcache.so
memcache.allow_failover = "1"
memcache.max_failover_attempts = "20"
memcache.chunk_size = "8192"
memcache.default_port = "11211"
memcache.hash_strategy = "standard"
memcache.hash_function = "crc32"

ps:

 代码如下 复制代码
memcache.allow_failover = "1"

一个布尔值,用于控制当连接出错时 Memcache 扩展是否故障转移到其他服务器上.默认值为 1 (true).

 代码如下 复制代码

memcache.max_failover_attempts = "20"

一个整型值,用于限制连接到持久性数据或检索数据的服务器数目.如果 memcache.allow_failover 为 false,则将忽略此参数.默认值为 20.

 代码如下 复制代码
memcache.chunk_size = "8192"

一个整型值,用于控制数据传输的大小.默认值为 8192 字节 (8 KB),但是如果设置为 32768 (32 KB),则可以获得更好的性能.

 代码如下 复制代码

memcache.default_port = "11211"

另一个整型值,用于设置连接到 Memcache 所使用的 TCP 端口.除非您修改它,否则默认值为无特权的高端口 11211.

 代码如下 复制代码

memcache.hash_strategy = "standard"

哈希策略,目前有standard模式和consistent模式.standard模式其实就是%,即取模.而consistent,就比较复杂, memcache.hash_function = "crc32"
控制哪种 hsah 函数被应用于 key映射 到服务器过程中,默认值“crc32”使用 CRC32 算法,而“fnv”则表示使用 FNV-1a 算法.

测试memcache

 代码如下 复制代码

<?php
$mc = new Memcache;
$mc->connect("127.0.0.1",11211);
$item = $mc->get('item');
if(!is_array($item)){
echo "Add item to memcache";
$mc->add('item',array('item'));
}
$item = $mc->get('item');
var_dump($item);
?>

最后,祝您成功提升服务器性能,网站运营如日中天

在php中条件控制语包括了if语句、swicth语句、三无操作符等下面小编来给大家总结它们三个在php中的一些应用实例了,希望此教程对各位朋友有所帮助。

PHP条件控制语句一共有三种:

第一种:if语句;

第二种:switch语句;

第三种:三元操作符;

分别讲解下这三种条件控制语句。

第一种:if语句。


if语法有以下几种格式:

1)、

if (表达式一) {  //满足条件执行以下程序段

执行语句;
}

例如:

 代码如下 复制代码

<?php

if ($a > $b) {
echo "a is bigger than b";
$b = $a;
}
?>

2)、

if (表达式一){   //满足条件执行以下程序段

执行语句;

}

else{        //不满足执行如下程序段

执行语句;

}

例如:

 代码如下 复制代码

<?php
if ($a > $b) {
echo "a is bigger than b";
} else {
echo "a is NOT bigger than b";
}
?>

3)、if (表达式一) {   //满足条件执行以下程序段

}elseif  (表达式二)  {

}else {

}

例如:

 代码如下 复制代码

<?php

$a=45;

$b=50;

if ($a>$b)      {  print  “a大于b”;  }

elseif ($a==$b)      {  print  “a等于b”;  }

else      {  print “a小于b”;  }

?>

 

第二种:switch语句。

Switch是多路分支语句,虽然可以通过多重嵌套的if语句来实现多路分支,但嵌套越深,程序的可读性越差。使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。

Switch语句的语法

switch (var) {
case 值1:
语句1;
   break;
case 值2:

语句2;
   break;
case 值N:

语句N;
   break;
default:

语句;

}

例如:

 代码如下 复制代码

<?php

$i=1;

switch ($i) {
case 0:
echo  "i equals 0";
break;
case 1:
echo   "i equals 1";
break;
case 2:
echo   "i equals 2";
break;

default:
echo   "i no equals";
break;
}
?>

第三种:三元操作符。

PHP脚本语言支持操作符?:,它是if语句的紧凑版本。我们可以用下面的实例来对该三元操作符进行解释:


三元操作符语法:

(条件)?’执行语句1′:’执行语句2′;

解释为:如果条件为TRUE则执行语句1,如果条件为FALSE则执行语句2;

例如:

 代码如下 复制代码

echo  ($a>$b)?“a大于b”:“a不大于b”;

解释为:

如果$a>$b,则输入a大于b;如果$a<$b,则输入a不大于b。

本文章来给各位同学介绍关于php Exception打印error trace 实例,有需要的朋友可进入参考。


对于php的Exception,可以通过getTraceAsString获得错误栈。


而对于error则应该如下:

 代码如下 复制代码

function x()
 $x = debug_backtrace();
 //remove stack of this function
 array_shift($x);
 $i = 0;
 $xstr = '';
 foreach ($trace as $x) {
  //TODO need check exists args
  $args = $x['args'];
  if (!$args) {
   $argstr = '';
  } else {
   $argstr = '';
   $first = true;
   foreach ($args as $arg) {
    if (!$first) {
     $argstr .= ',';
    }
    $first = false;
    if (is_object($arg)) {
     $argstr .= 'Object[' . get_class($arg) . ']';
    }
    elseif (is_array($arg)) {
     $argstr .= 'Array';
    } else {
     $argstr .= $arg;
    }
   }
  }
  $xstr .= "[#$i] {$x['file']}({$x['line']}) {$x['function']} ($argstr)" . PHP_EOL;
  $i++;
 }

 return $xstr;
}

要实现计算器我们可以利用php中相关数学操作函数及相关数组来进行操作了,这个个人只是好玩写的并且无实用,计算器个人觉得js的最好。

php计算器

 代码如下 复制代码

<html>
    <head>
        <title>PHP实现简单计算器</title>
        <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
    </head>
<?php
    $num1=true;
    $num2=true;
    $numa=true;
    $numb=true;
    $message="";
    //单路分支
    if(isset($_GET["sub"])){
        if($_GET["num1"]==""){
            $num1=false;
            $message.="第一个数不能为空";

        }
        if(!is_numeric($_GET["num1"])){
            $numa=false;
            $message.="第一个数不是数字";
        }

        if($_GET["num2"]==""){
            $num2=false;
            $message.="第二个数不能为空";

        }
        if(!is_numeric($_GET["num2"])){
            $numb=false;
            $message.="第二个数不是数字";
        }

        if($num1 && $num2 && $numa && $numb) {
            $sum=0;
            //多路分支switch
            switch($_GET["ysf"]){
                case "+":
                    $sum=$_GET["num1"]+$_GET["num2"];
                    break;
                case "-":
                    $sum=$_GET["num1"]-$_GET["num2"];
                    break;
                case "x":
                    $sum=$_GET["num1"]*$_GET["num2"];
                    break;
                case "/":
                    $sum=$_GET["num1"]/$_GET["num2"];
                    break;
                case "%":
                    $sum=$_GET["num1"]%$_GET["num2"];
                    break;
            }
        }
    }
?>
<br /><b>Notice</b>:  Undefined index:  num1 in <b>
D:\php\PHPnow1.5.5\Package\vhosts\127.0.0.1\ceshi\jsq.php</b>
on line <b>64</b><br />
    <body>
        <table align="center" border="1" width="500">
            <caption><h1>计算器</h1></caption>
            <form action="jsq.php">
            <tr>
                <td>
                    <input type="text" size="5" name="num1" value="<?php echo $_GET["num1"] ?>" >
                </td>
                <td>
                    <select name="ysf">
                        <option value="+" <?php if($_GET["ysf"]=="+") echo "selected" ?>>+</option>
                        <option value="-" <?php if($_GET["ysf"]=="-") echo "selected" ?>>-</option>
                        <option value="x" <?php echo $_GET["ysf"]=="x"?"selected":"" ?>>x</option>
                        <option value="/" <?php echo $_GET["ysf"]=="/"?"selected":"" ?>>/</option>
                        <option value="%" <?php echo $_GET["ysf"]=="%"?"selected":"" ?>>%</option>
                    </select>
                </td>
                <td>
                    <input type="text" size="5" name="num2" value="<?php echo $_GET["num2"] ?>">
                </td>
                <td>
                    <input type="submit" name="sub" value="计算">
                </td>
            </tr>

            <?php
                if(isset($_GET["sub"])){

                    echo '<tr><td colspan="5">';
                    if($num1 && $num1 && $numa && $numb){
                        echo "结果:".$_GET["num1"]." ".$_GET["ysf"]." ".$_GET["num2"]." = ".$sum;
                    }else{
                        echo $message;
                    }
                    echo '</td></tr>';
                }
            ?>
            </form>
            </table>

    </body>
</html>

js计算器

 代码如下 复制代码

<html>
<head>
<title>计算器</title>
<script>
<!--
willclear=false //这个变量作为下一次输入是否先清空输入框的状态标志
function backspace(){ //退格
Calc.Input.value = Calc.Input.value.substring(0,Calc.Input.value.length-1)
Calc.Input.title = Calc.Input.value.substring(0,Calc.Input.title.length-1)
}//取长度为原长度减一的串,实现退格效果。
function addoperator(){  //加操作符
if (willclear){  //如果这次输入前需要清空输入框
willclear=false   //先清除标志,避免下次再次被错误地重复清空
clearinput()  //清除输入内容
}
Calc.Input.value += event.srcElement.innerText //给用于显示的加上刚输入的运算符
Calc.Input.title += event.srcElement.name //给用于计算的表达式区加上刚输入的运算符
}

function clearinput(){  //清除输入
Calc.Input.value=''  //清空显示区
Calc.Input.title=''  //清空表达式
}

function result(){ //用于计算结果
Calc.Input.value = eval(Calc.Input.title)//执行表达式区的表达式,返回结果到显示区。
willclear=true//设定下次按键则先清除此次计算结果。
}
//-->
</script>

<style>
button {width:40; border: 1 solid #808080;background-color: #FFFFFF}
</style>
</head>
<body>
<FORM NAME="Calc">
   <TABLE BORDER=4 bordercolorlight="#808080" bordercolor="#808080" width="250" height="38"><TR><TD width="291" height="39" bgcolor="#C0C0C0">
    &nbsp; 
    <INPUT TYPE="text" NAME="Input" readonly Size="21" style="background-color: #F5F5F5; font-family: Arial; border: 1 solid #000000">&nbsp
    <button NAME="back" OnClick="backspace()">←</button>
   </TD></TR><TR><TD width="291" height="38"> 
    <table border="0" width="100%" height="105" cellpadding="0"> 
      <tr> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="1" OnClick="addoperator()">1</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="2" OnClick="addoperator()">2</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="3" OnClick="addoperator()">3</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="+" OnClick="addoperator()">+</BUTTON>
        </td> 
      </tr> 
      <tr> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="4" OnClick="addoperator()">4</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="5" OnClick="addoperator()">5</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="6" OnClick="addoperator()">6</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="-" OnClick="addoperator()">-</BUTTON>
        </td> 
      </tr> 
      <tr> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="7" OnClick="addoperator()">7</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="8" OnClick="addoperator()">8</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="9" OnClick="addoperator()">9</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="*" OnClick="addoperator()">×</BUTTON>
        </td> 
      </tr> 
      <tr> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="clear" OnClick="clearinput()">C</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="0" OnClick="addoperator()">0</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="=" OnClick="result()">=</BUTTON>
        </td> 
        <td width="25%" height="31" align="center" bgcolor="#C0C0C0"> 
    <BUTTON NAME="/" OnClick="addoperator()">÷</BUTTON>
        </td> 
      </tr> 
    </table> 
   </TD></TR> 
   </TABLE> 
   </FORM> 
</body> 
</html> 

[!--infotagslink--]

相关文章

  • C#微信开发之发送模板消息

    这篇文章主要为大家详细介绍了C#微信开发之发送模板消息的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • iOS新版微信底部返回横条问题的解决

    这篇文章主要介绍了iOS新版微信底部返回横条问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-30
  • vscode搭建STM32开发环境的详细过程

    这篇文章主要介绍了vscode搭建STM32开发环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-02
  • 基于C#实现微信支付宝扫码支付功能

    为公司系统业务需要,这几天了解了一下微信和支付宝扫码支付的接口,并用c#实现了微信和支付宝扫码支付的功能。需要的朋友跟随小编一起看看吧...2020-06-25
  • Python爬取微信小程序通用方法代码实例详解

    这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29
  • C#实现的微信网页授权操作逻辑封装示例

    这篇文章主要介绍了C#实现的微信网页授权操作逻辑封装,分析了微信网页授权操作的原理、步骤并给出了C#实现的网页授权操作逻辑封装类,需要的朋友可以参考下...2020-06-25
  • 安卓开发之Intent传递Object与List教程

    下面我们一起来看一篇关于 安卓开发之Intent传递Object与List的例子,希望这个例子能够为各位同学带来帮助。 Intent 不仅可以传单个的值,也可以传对象与数据集合...2016-09-20
  • iOS新版微信底部工具栏遮挡问题完美解决

    这篇文章主要介绍了iOS新版微信底部工具栏遮挡问题完美解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-30
  • C#图像识别 微信跳一跳机器人

    这篇文章主要为大家详细介绍了C#图像识别,微信跳一跳机器人,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • 如何设计一个安全的API接口详解

    在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下...2021-08-12
  • 微信开发生成带参数的二维码的讲解

    在微信公众号平台开发者那里,在“账号管理”那里,有一项功能是“生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微...2016-05-19
  • 基于JavaScript代码实现微信扫一扫下载APP

    有很多人在做微信的扫一扫下载。但是在微信更新之后微信将该功能给禁止掉了,也不能说是全面禁止吧,因为腾讯、微信是一家嘛,通过应用宝审核的应用好像还是可以通过扫一扫直接下载的,下面通过本篇文章给大家介绍微信扫一扫下载app的代码片段,感兴趣的朋友一起看看吧...2016-01-02
  • 简单用VBS调用企业微信机器人发定时消息的方法

    这篇文章主要介绍了简单用VBS调用企业微信机器人发定时消息的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • python实现企业微信定时发送文本消息的实例代码

    这篇文章主要介绍了python实现企业微信定时发送文本消息的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-25
  • HTML5实现微信拍摄上传照片功能

    这篇文章主要介绍了HTML5实现微信拍摄上传照片功能,实现HTML5 Canvas手机拍摄,本地压缩上传图片时遇到问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-04-27
  • 解决微信授权成功后点击按返回键出现空白页和报错的问题

    这篇文章主要介绍了解决微信授权成功后点击按返回键出现空白页和报错的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-08
  • 分享我对JS插件开发的一些感想和心得

    这篇文章主要给大家分享我对JS插件开发的一些感想和心得的相关资料,需要的朋友可以参考下...2016-02-09
  • 微信为何被“专利流氓”起诉?腾讯太有钱

    六月才刚刚过半,就已经相继有中兴、华为被美国起诉,此次微信也未能幸免,被美国一家叫Uniloc的公司起诉,理由是微信的语音群聊、视频聊天等功能侵犯其两项与电话会议技术相关的专利,该公司要求微信立即中止这些功能。...2016-07-04
  • Chrome插件开发系列一:弹窗终结者开发实战

    从这一节开始,我们将从零开始打造我们的chrome插件工具库,第一节我们将讲一下插件开发的基础知识并构建一个简单但却很实用的插件,在构建之前,我们先简单的了解一下插件以及插件开发的基础知识...2020-10-03