PHP微信公众开发笔记系列
日期:2014.9.4
今天主要是完善了搜索,加入了管理员模块,优化了身份验证,将学生信息管理封装为了一个类(整这个真是好累呀,主要是数据库操作那里语法老是出问题,一直是各种小问题)
感受:
PHP开发没有断点、不能及时打印log真是好累呀(我是用sublime写的,然后直接微信公众号调试,累屎我了),错误信息经常不能及时发觉、或者说有些问题能通过断点排除掉了没能够排除。但是也说明了,我写代码还是太马虎了啊。
2014.9.10整理笔记:
写这个笔记的时候,在赶功能,所以也就是简单的记几笔当时的工作内容,现在功能开发得差不多了,就来整理之前的笔记。
在笔记五中我提到了,将公众平台上需要实现的一些功能按类型进行了分类处理:菜单、数据库都抽离出来了。这样做的好处就是在今后我做功能调整或者新增功能不会影响现有的功能,利于开发维护。
在笔记四中提到了在SAE上我搭建了一个云端数据库,并做了一个简单的数据检索功能(在菜单-查询菜单中回复姓名,或者学号便能得到对应的相关信息),在同学的建议下,需要快捷查找信息,因此在这里实现了一个我称之为快捷检索的功能:用户回复姓名+电话、姓名+老家、姓名+地址便可以得到对应的相关信息;这个功能的实现也是建立在对数据库的检索和关键词监测的基础之上的。
一、完善搜索
在这里为了维护方便,封装了一个学生信息管理的类,也就是对之前提到的数据库管理进行一个包装,因为我当时是想到了后期可能会有更多的数据库需求,后期的开发维护需求会更高;因此现阶段数据库处理的相关文件有:
1、student_info_sql.class.php 也就是对mysql_sae.func.php的一层包装:
1)在mysql_sae.func.php中提供对数据库操作的语句,函数接受相关的参数<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"/program/UploadPic/2014-9/201492512818624.png" alt="\">
2)然后我在student_info_sql.class.php的使用过程中,传递对应的参数过去就可
而且这样一层包装,就可以保证我可以自由控制需要显示的信息,即我显示学生信息就再这里控制显示,当我需要弄一个关键词之类的数据表,那么我就只需要新建一个对应的php文件,然后在该文件中控制格式就可以了;
在这里提一下上上图中出现的sae_log()函数,这个函数也是查找网上的资料得到的一个打印log而包装出来的:
我这样包装的目的在于,假如某天我不需要打印log了,直接注释掉这里就可以了。
包装的这个student数据库管理类也是提供诸如检索、添加等的操作。这里也没什么需要额外笔记的。
2、然后就是提到的优化数据检索了,也就是根据同学提出的需求---能快捷检索到信息,这里的关键点就是关键词捕获了,这里便是使用到了php中对字符串相关处理函数的使用:
strstr()、str_replace() 我主要是使用到了这两个;第一个函数用来判断给定字符串中某个特定字符是否出现,第二个函数用来做字符替换。
在用户发送消息过来的时候,我这样做了处理:
对这三个关键词进行处理,如果用户发送过来的消息有这三个关键词,然后用str_replace,将关键词替换为空,就得到了姓名,那么就会有相应的响应操作。上图中出现的check_userinfo是我用来做用户身份验证的;menu_Distribution_Center即我之前提到的整理菜单功能而封装的一个函数,菜单分发。在独立封装的基础之上,我只需要捕获关键词,然后调用已实现的查询菜单的相关功能便很快的就实现了这个功能。功能实现上很简单,当时遇到的问题就主要是诸如php语法问题、数据库语法问题,各种坑,也体现了我这个人有的时候马大哈,写代码的时候太马虎,还有就是php毕竟没有系统的学过,直接是边写代码边学习的,所以难免会碰到各种问题。
二、添加管理员模块
因为有的时候没有用电脑,而此时又需要操作如数据库信息更新之类的,该怎么办?我就想到了可以实现一个管理员功能,在验证身份的条件下,可以通过发送特定指令而实现相应的功能。我实现的具体思路是,封装成一个类,一个统一的入口,然后身份验证。因此我新建了一个称之为admin_sys.class.php的文件,封装成了一个类,有了统一的入口之后,假如我之后有新的需求,那么我也只需要在这个类里面添加就可以了,不会影响到别的系统功能:
1、一个统一的入口:
2、在这里实现的验证功能和之前实现的用户身份验证类似,也是使用到了$_SESSION进行信息保存:
先判断是否验证了管理员身份,验证了之后就进入到具体的操作环节,具体的操作环境也是根据相对应的指令进行操作的。这里也就不提了,实现了这个管理员功能是挺便捷的,我可以很方便的更新用户信息、添加用户信息等。