美文网首页
微信树洞(php+EasyWechat)--记录你的心里话

微信树洞(php+EasyWechat)--记录你的心里话

作者: csuhan | 来源:发表于2017-06-18 00:47 被阅读0次

突然想记录一些简短的文字,可以是心里话,也可以是一些感慨,而且要方便使用,大概就是微信了吧

通过微信的消息输入窗口,输入简短的话,就像丢进了树洞一样。
开始!

实现思路

1 技术架构:原生php+EasyWechat框架+mysql。
2 微信公众号:中南小箱子。
3 测试:ngrok本地调试工具。

小插曲,如实保证mysql存入中文不乱码?

  • 数据库建立数据表时,选择collect方式为utf8-general-ci
  • 建立字段时,保证数据类型不错误(使用phpmyadmin时容易出错)
  • 连接数据库时,记着set names utf8

require装载配置文件

//config.php
return [arg1,arg2...];
//index.php
$config = require('config.php');
//不可使用require 'config.php';
//前者是函数,后者是结构
var_dump($config);

ngrok

强势安利一下ngrok

ngrok

也就是说,ngrok就是实现内网穿透的,因此用在本地调试微信开发再合适不过了。

架构

小程序,因此就怎样简单怎样来。


程序架构
  • index.php.入口文件,加载配置,加载autoloader,加载helper。
  • config.php.配置文件,微信key、secret、database连接信息。
  • herlper.php .辅助函数。
  • WechatController.php。控制器,实现消息响应与回复。
  • MessageHandler.php。消息处理,实现消息分类处理。
  • Model.php。数据模型,实现CURD操作。
  • wechat-hole.php。日志文件。

贴上代码

1. index.php

<?php
/**
 * Created by PhpStorm.
 * User: han
 * Date: 2017/6/17
 * Time: 19:52
 */
include "vendor/autoload.php";
include "./application/config.php"; //加载配置
include "./application/helper.php"; //加载帮助文件
//加载控制器
include "./application/MessageHandler.php";
include "./application/Model.php";
include "./application/WechatController.php";

2. WechatController.php

<?php
/**
 * Created by PhpStorm.
 * User: han
 * Date: 2017/6/17
 * Time: 20:08
 * 控制器
 */
//引入类库
use EasyWeChat\Foundation\Application;
use Applicaiton\MessageHandler;

//配置文件
$config = require('config.php');
//实例对象
$app = new Application($config);
$server = $app->server;
//消息处理
$server->setMessageHandler(function ($message){
    $handler = new MessageHandler($message);
    switch($message->MsgType){
        case "event":
            return $handler->eventHandler();
            break;
        case 'text':
            return $handler->textHandler();
            break;
        default:
            break;
    }
});
//响应
$response = $server->serve();
//返回消息
$response->send();

3. MessageHandler.php

<?php
/**
 * Created by PhpStorm.
 * User: han
 * Date: 2017/6/17
 * Time: 20:20
 */
//消息处理类
namespace Applicaiton;
use EasyWeChat\Message\Text;
use Applicaiton\Model;
class MessageHandler
{
    /*
     * 消息对象
     */
    private $message;
    public function __construct($message)
    {
        $this->message = $message;
    }
    /*
     * 事件响应函数
     */
    public function eventHandler()
    {
        return new Text(['content' => "指令已收到!"]);
    }
    /*
     * 文本消息响应
     */
    public function textHandler()
    {
        //所有日记
        if($this->message->Content == "我的日记")
        {
            $str = "";
            $notes = Model::get_all_notes($this->message['FromUserName']);
            foreach ($notes as $key => $values)
            {
                $strTemp  = $values['times'];
                $str.=$strTemp."\n";
                $str.=$values['content']."\n\n";
            }
            return $str;
        }
        //添加数据
        if(Model::add_note([$this->message['FromUserName'],$this->message['Content']]) )
            return new Text(['content' => "收到文本消息:\n".$this->message['Content']]);
        else
            return "插入失败";
    }
}

4. Model.php

<?php
/**
 * Created by PhpStorm.
 * User: han
 * Date: 2017/6/17
 * Time: 20:53
 */
/*
 * 数据模型
 */
namespace Applicaiton;

class Model
{
    private static $conn;
    private static $table;
    private static function _connect()
    {
        $config = require('config.php');
        self::$conn = new \Mysqli($config['db']['host'],$config['db']['user'],$config['db']['pwd'],$config['db']['dbname']);
        self::$conn->query("set names utf8");
        //设置数据表
        self::$table = $config['db']['table'];
    }
    //插入数据
    /**
     * @param $note_arr
     * @return mixed
     */
    public static function add_note($note_arr)
    {
        static::_connect();
        //拼接sql
        $sql = "insert into ".self::$table." (openid,content) values ('$note_arr[0]','$note_arr[1]')";

        return self::$conn->query($sql);
    }
    /*
     * 返回所有留言
     */
    public static function get_all_notes($openid)
    {
        static::_connect();
        $sql = "select * from ".self::$table." where openid = '$openid'";
       return  self::$conn->query($sql);
    }
}

效果演示

目前仅仅实现了添加日记和读取日记。回复我的日记即收到所有日记。

效果 数据库

总结

两个小时的练习,使我熟悉了EasyWechat框架,同时对有关问题进行探讨,之后会进一步完善。
TODO--有空再写。

相关文章

  • 微信树洞(php+EasyWechat)--记录你的心里话

    突然想记录一些简短的文字,可以是心里话,也可以是一些感慨,而且要方便使用,大概就是微信了吧 通过微信的消息输入窗口...

  • 说点愚话

    对我而言,有时候写作真是一件愉快的事情,当我把它当做一个树洞,一个倾诉心里话、发泄情绪的树洞,一个记录往事的记事本...

  • 新的启程

    微信朋友圈已经不太适合自己去写些心情,希望把这里当做一个树洞,记录已经的想法,安放自己的心情。

  • 树洞,我想对你说

    前几天,我发现网络上盛行树洞之说。在企鹅、知乎、微博、微信等社交平台上,很多网友喜欢用“XX树洞”来命名自己的I...

  • 约定

    立个flag -O- 既然微信微博有太多的亲朋好友那从此简书就是我的“树洞” 尽情蹦迪!!! 释放天性 你是最棒...

  • 开发处女地

    有段时间了,一直就像寻找一个平台,用来记录自己琐碎的日常生活。说句心里话微信等好多的APP,感觉不是很适合...

  • 就算这个时代开放成公共妓院,你也记得,你不是妓

    微信公众号☞喵爷的心里话 微博☞找寻记忆的猫 就算这个时代开放成公共妓院,你也记得,你不是妓 有些东西脏了,就再也...

  • 人可以暂时贫穷,但绝不能心穷

    作者:蓝雪儿/心事倾诉树洞(xsqssd) 首f:时尚婚恋观(mengpo87) 1 自从有了微信群红包,你就会发...

  • 懂?

    只是想找一个树洞,能听听我的心里话。能给我一个安慰

  • 微信删了的聊天记录如何恢复?免费恢复微信聊天记录的方法

    微信删除的聊天记录怎么恢复?可能你已经在网上搜索了很多种方式,小编推荐微信自助修复的方法,一个免费恢复微信聊天记录...

网友评论

      本文标题:微信树洞(php+EasyWechat)--记录你的心里话

      本文链接:https://www.haomeiwen.com/subject/ecsbqxtx.html