PHP微信公众开发笔记(三)

PHP微信公众开发笔记系列

日期:2014.9.2

今天主要的任务是昨天提到的那个处理缓存信息的问题,我需要保存一些消息用来做二次判断。

首先,记录一些PHP语法知识吧。

1、PHP中字符串的连接语法:

在lua中,两个字符串的连接很简单,加入有两个字符串 "aaa";"bbb"; 需要将这两个字符串连接起来,只需要用两个句点 .. 便可以了:"aaa" .. "bbb"; 这里要注意,字符串与句点直接需要有空格,没有空格会报错;

而在PHP中,连接只需要一个句点就可以了:"aaa"."bbb"; 而且不需要强制在字符串和句点之间用空格;

2、得到时间,转换为日期格式:

使用date函数,格式为:date(‘Y-m-d H:i:s‘,time());挺简单的,记录一下

公众平台开发需求完成进度。

现在回到昨天留下的那个任务:利用session缓存记录信息,实现我们构想的那个菜单:

php中关于session的使用,我不是很清楚,所以就一直度娘度娘的,折腾了一番,总算是实现了我的功能需求了,不过还是觉得有一些不足的地方,留给以后再来修正吧。

昨天提到了,我要实现的菜单,希望能记住上一条信息。即提醒用户输入查询,进入查询菜单,在用户发送过来“查询”之后,下一条信息就应该转入查询菜单了,即我需要记住用户发送过“查询”这个信息。在度娘度了好久之后,查找到了要么就用数据库,要么就用session,在PHP中用数据库还不会,然后我感觉就简单的处理一下记住信息应该不需要动用数据库,所以采用的是使用session。

使用Session来实现我们的需求:

php中关于session具体该怎么用,以后还是需要度娘来详细了解一番,现在我们这只是简单的使用。

在查阅资料的时候,有网友提到用用户的username作为唯一id,这样就使得针对每个用户存储的信息会不一致(因为我们现在是服务器发送消息,每个用户都会发送消息过来,不能影响别的用户的使用),所以代码实现如下:

session_id($postObj->fromUsername);  //这个是微信服务器post过来的xml数据包中用户名字,用这个作为id

session_start();  //这个应该是开启session的意思吧?

而我这两行代码该放到哪里也不是很清楚,现在我是将这个代码放在 responseMsg函数中了,不知道是不是这样的,后面的测试是有用的。

开启了session之后,就是记录信息了:

$_SESSION[‘menu_type‘] = $this->getUserMenu($textWord); //这里的getusermenu是我用来根据用户输入得到菜单类型的函数;记录信息用到了$_SESSION这个变量,这里是以数组形式使用??

在我们记录好了信息之后,该进行信息的判断了,使用到:

isset($_SESSION[‘menu_type‘]); //用isset来判断我们是否设置了这个值,这样就能判断用户是否选择了一个菜单了

然后在我们不需要使用的时候,则使用以下函数来销毁这个:

unset($_SESSION[‘menu_type‘];

在代码中再做相应的调整,便可以实现我们的需求了。然后现在觉得不足的地方是,我该在哪个时候销毁保存的用户选择的菜单类型呢?假如用户选择了“查询”菜单,那么我们这边就是响应用户的查询行为了,至少在用户查询的过程中我们不应该销毁掉保存的菜单类型。我感觉合理的销毁有三种情况:用户关掉了对话框(即用户退出了和我们这个公众号的聊天框,但网上没查到怎么知道用户退出了);用户长时间内没有执行查询操作(即用户在选择了“查询”菜单的前提下,经过了一个给定的时间内没有执行相应的查询操作,这个时候自动销毁);最后就是用户自动选择退出。不销毁记录的信息,会出现这样的问题,在用户选择了“查询”菜单,然后用户退出了与公众号的聊天,下一次再进入的时候,还会保存记录的用户选择的菜单信息,感觉这样是不合理的。

抛开上面提到的问题,至少这一步我们需要的功能是实现了,有关的问题慢慢修复吧。

时间: 2024-10-20 05:36:08

PHP微信公众开发笔记(三)的相关文章

PHP微信公众开发笔记(六)

PHP微信公众开发笔记系列 日期:2014.9.4 今天主要是完善了搜索,加入了管理员模块,优化了身份验证,将学生信息管理封装为了一个类(整这个真是好累呀,主要是数据库操作那里语法老是出问题,一直是各种小问题) 感受: PHP开发没有断点.不能及时打印log真是好累呀(我是用sublime写的,然后直接微信公众号调试,累屎我了),错误信息经常不能及时发觉.或者说有些问题能通过断点排除掉了没能够排除.但是也说明了,我写代码还是太马虎了啊. 2014.9.10整理笔记: 写这个笔记的时候,在赶功能,

PHP微信公众开发笔记(八)

PHP微信公众开发笔记系列 日期:2014.9.6 今天主要要做:建立关键词数据库.超时机制.优化的关键词匹配.表情信息数据库 要注意的:PHP echo之后并没有返回?还会继续执行?? 2014.9.11整理笔记: 写这个笔记的时候,在赶功能,所以也就是简单的记几笔当时的工作内容,现在功能开发得差不多了,就来整理之前的笔记.当时就很简单的记录了上文的那几句. 这天是周六,不加班了在租的房子里歇着.因为要过中秋了,在深圳的姐这天会过来我这边过节,所以这天也没多少时间来写功能.早上早起去跑步,然后

PHP微信公众开发笔记(九)

PHP微信公众开发笔记系列 日期:2014.9.9 中秋假期除了周六那天整了整,就没怎么动过了.今天上班主要是把既定的两个开发目标完成了:"八卦"."回忆"两个模块,这两个东西也很简单,也主要是涉及到数据库的操作而已.然后以图文形式回复就可以了.所以数据库中主要是保存了:文章标题.文章跳转连接.图片链接这三个字段信息. 2014.9.11整理笔记: 写这个笔记的时候,在赶功能,所以也就是简单的记几笔当时的工作内容,现在功能开发得差不多了,就来整理之前的笔记.当时就很

PHP微信公众开发笔记(一)

笔记是先写在印象笔记上的,晚上没事的时候整理整理. PHP微信公众开发笔记系列 日期:2014.9.1 今天开始正式开始做班上的微信公众平台的开发者服务了.因为是第一次做这个,对PHP也不了解,所以一边学PHP,一边整理微信的公众平台,当做是自己的练手学习好了. 在登录了微信的公众平台之后,左边功能区的最底部就是开发者中心了: 在没有开启开发者服务前,这里面啥也没有.启用这个服务后,在网站上编辑的自动回复功能便取消了,用户跟微信公众平台的交互信息便会转到开发者接入的功能.废话少说,开启开发者功能

PHP微信公众开发笔记(二)

PHP微信公众开发笔记系列 日期:2014.9.1 需求分析: 在成功的开启了微信开发者服务之后,我们便需要开始做响应用户操作的功能了.其实做微信公众平台,当初的目的我就是想做成一个服务平台,因为刚大学毕业,同学各奔东西.有的时候可能我们会到一个陌生的城市去,那时可能就会想啊,这个城市有班上的同学在么?这时掏出手机,点开服务号输入这个城市名,就会返回一串信息,假如有同学在这个城市,就会列出联系信息之类的.当然也许会说,既然是熟悉的同学,那么肯定会知道联系方式之类的,还需要这样多此一举么.而我的考

PHP微信公众开发笔记(五)

PHP微信公众开发笔记系列 日期:2014.9.3 今天做了身份验证的功能,然后完善了下搜索功能.其实主要的是将整个代码结构整理了一番,应该可以说是模块化设计吧. 模块化设计我们的公众号. 因为我们之前提的功能需求中有: 1.菜单--查询功能.我考虑到后期功能的扩展,就想将这些分模块来实现:菜单模块(这样,今后我们需要添加新的菜单功能,可以直接在这个模块里操作,这样修正和维护也简单,在考虑到后期可能会分工协作的时候各开发者之间不会产生冲突): 2.数据库模块(这里就主要是负责数据库相关的工作,如

PHP微信公众开发笔记(七)

PHP微信公众开发笔记系列 日期:2014.9.6 这篇日记是补昨天的,昨天没来得及写: 主要实现的功能:模糊检索.问答系统.帮助系统 修复了:_SESSION 的id 调整了验证机制 要注意的:mysql的语法问题.mysql的模糊匹配.PHP的关联数组好像用count计算的话其大小会有原有数据的两倍大(即数组中只有两个数据,count会得到4,这个需要再验证,好像是用到了foreach就出现了这个问题) 学到了:PHP中数组的操作 2014.9.10整理笔记: 写这个笔记的时候,在赶功能,所

PHP微信公众开发笔记(十)

PHP微信公众开发笔记系列 日期:2014.9.10 在新浪SAE上用Storage存储资源,如果选择了资源防盗链的选项,那么将设置了防盗链的图片用作公众平台图文链接的封面,将显示不出图片. 2014.9.11整理笔记: 写这个笔记的时候,在赶功能,所以也就是简单的记几笔当时的工作内容,现在功能开发得差不多了,就来整理之前的笔记.当时就很简单的记录了上文的那几句. 主要是图文链接的那个封面问题.如果我直接用微信素材库里面的图片作为连接,那么图文链接的封面图片是显示不出来的.这个问题困扰了我好久,

微信公众开发URL和token填写详解

方法/步骤 作为一名微信公众号开发者,别人进入你的微信公众号,肯定会看见某些网页,或者给你发某些信息,你需要实时自动回复,所以你需要一个24小时为用户服务的服务器.我们所要填写的url就是你提供的服务器的地址,前提是这个服务器的地址你要能够访问,且能够控制.而token是用来验证的.   然后你需要一个服务器,服务器可以自己购买,也能用新浪sae,百度bae.方法是进入其开发者中心,注册一个开发者账号.并进行实名认证!(没有进行实名认证的小伙伴们是无法成功的).下面我们使用新浪sae做为例子来进