之前只知道用户发送一个消息,今天要弄个用户

2019-11-26 15:38栏目:大奖888官网登录
TAG:

本文实例讲述了php版微信公众平台接口参数调试实现判断用户行为的方法。分享给大家供大家参考,具体如下:

本文实例讲述了PHP创建文件及写入数据的方法。分享给大家供大家参考,具体如下:

今天要弄个用户订阅就给推送一个消息的功能,却发现不知道如何判断用户是订阅的操作,还是取消订阅,还是发消息

微信开发的时候,发现有个重要的变量$postObj,获得了一个xml结构装入的对象里因为用户发来的事件,之前只知道用户发送一个消息,我进行处理.

这里主要介绍了PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码,需要的朋友可以参考下:

 代码如下

今天要弄个用户订阅就给推送一个消息的功能,却发现不知道如何判断用户是订阅的操作,还是取消订阅,还是发消息,代码如下:

fopen ( string filename, string mode )

 public function responseMsg()
    {
     global $db;
 //get post data, May be due to the different environments
 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
 writeover("msg.txt",$postStr."rn","a+");
。。。。。。
  }

public function responseMsg(){ global $db; //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); writeover("msg.txt",$postStr."rn","a+"); //。。。。。}

参数:

发现$postStr是之前没有封装的字符串,直接打印,即可知道用户的行为了。

发现$postStr是之前没有封装的字符串,直接打印,即可知道用户的行为了,测试输出的文件如下:

filename:创建文件名

测试输出的文件如下

13947050445990212551746www.phpfensi.com353512

mode:以什么方式打开文件filename

 代码如下

MsgType即可判断用户行为text表示用户输入了一条文本信息,如果是订阅,那么就是event 大家自己测试吧.

其中mode可能值列表:

<xml><ToUserName><![CDATA[gh_a64528aca3b]]></ToUserName>
<FromUserName><![CDATA[oSgH_jveTxJSlFK_6QSiGeVaSyk]]></FromUserName>
<CreateTime>1394705044</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[ha]]></Content>
<MsgId>5990212551746www.111cn.net353512</MsgId>
</xml>

一个新用户关注公众账号发送的消息的例子,代码如下:

mode 说明 ‘r' 只读方式打开,将文件指针指向文件头。 ‘r+' 读写方式打开,将文件指针指向文件头。 ‘w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 ‘w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 ‘a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 ‘a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 ‘x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。 ‘x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

MsgType即可判断用户行为text表示用户输入了一条文本信息。
如果是订阅,那么就是event 大家自己测试吧。

1394706271

下面代码是我通过利用函数fopen创建一个名为Demo,格式为txt的文件,并在文件中写入"Welcome To ItCodeWorld!"的数据。

一个新用户关注公众账号发送的消息的例子

这样就可以得到具体的事件类型了.

");$StrConents = "Welcome To ItCodeWorld!";//要 写进文件的内容if(!fwrite { //将信息写入文件echo ("尝试向文件".$TxtFileName."写入".$StrConents."失败!");fclose;}echo ("尝试向文件".$TxtFileName."写入".$StrConents."成功!");fclose ; //关闭指针?>

 代码如下

$msgtype = $postObj->MsgType;能判断用户的行为,后续的操作就方便多了.

PHP 创建文件 – fopen()

<xml><ToUserName><![CDATA[gh_a5218aca3b]]></ToUserName>
<FromUserName><![CDATA[oSgH_jveTxJSlFK_6QSiGeVyk]]></FromUserName>
<CreateTime>1394706271</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>
</xml>

附上写入日志文件的代码:

fopen() 函数也用于创建文件。也许有点混乱,但是在 PHP 中,创建文件所用的函数与打开文件的相同。

这样就可以得到具体的事件类型了。

‘r' 只读方式打开,将文件指针指向文件头。

如果您用 fopen() 打开并不存在的文件,此函数会创建文件,假定文件被打开为写入。

$msgtype = $postObj->MsgType;能判断用户的行为,后续的操作就方便多了。

‘r+' 读写方式打开,将文件指针指向文件头。

下面的例子创建名为 "testfile.txt" 的新文件。此文件将被创建于 PHP 代码所在的相同目录中:

附上写入日志文件的代码

‘w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

$myfile = fopen

/*
‘r’ 只读方式打开,将文件指针指向文件头。
‘r+’ 读写方式打开,将文件指针指向文件头。
‘w’ 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘w+’ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘a’ 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
‘a+’ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
*/

‘w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

PHP 文件权限

 代码如下

‘a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

如果您试图运行这段代码时发生错误,请检查您是否有向硬盘写入信息的 PHP 文件访问权限。

function writeover2($filename,$data,$method="rb+",$iflock=1)
{
    @touch($filename);/*文件不存在则创建之.可以采用file_exists验证并其他创建文件函数代替.测试结果效率相当*/
    $handle=@fopen($filename,$method);
    if($iflock){
        flock($handle,LOCK_EX);
    }
    fwrite($handle,$data);
    if($method=="rb+") ftruncate($handle,strlen($data));
    fclose($handle);
}

‘a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

PHP 写入文件 – fwrite()

function writeover2($filename,$data,$method="rb+",$iflock=1){ @touch;/*文件不存在则创建之.可以采用file_exists验证并其他创建文件函数代替.测试结果效率相当*/ $handle=@fopen; if{ flock; } fwrite; if ftruncate); fclose;}

fwrite() 函数用于写入文件。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP微信开发技巧汇总》、《PHP编码与转码操作技巧汇总》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。

希望本文所述对大家PHP程序设计有所帮助。

下面的例子把姓名写入名为 "newfile.txt" 的新文件中:

实例

请注意,我们向文件 "newfile.txt" 写了两次。在每次我们向文件写入时,在我们发送的字符串 $txt 中,第一次包含 "Bill Gates",第二次包含 "Steve Jobs"。在写入完成后,我们使用 fclose() 函数来关闭文件。

如果我们打开 "newfile.txt" 文件,它应该是这样的:

Bill GatesSteve Jobs

PHP 覆盖

如果现在 "newfile.txt" 包含了一些数据,我们可以展示在写入已有文件时发生的的事情。所有已存在的数据会被擦除并以一个新文件开始。

在下面的例子中,我们打开一个已存在的文件 "newfile.txt",并向其中写入了一些新数据:

如果现在我们打开这个 “newfile.txt” 文件,Bill 和 Steve 都已消失,只剩下我们刚写入的数据:

Mickey MouseMinnie Mouse

换行符‘n'和回车符‘r'

顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符

‘n' 10 换行‘r' 13 回车

也可以表示为'x0a'和'x0d'.

在windows系统下,回车换行符号是”rn”.但是在Linux等系统下是没有”r”符号的。

在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定”rn”又要判定”n”。

写程序时可能得到一行,将其进行trim掉'r',这样能得到你所需要的string了。

PHP file_put_contents() 函数

PHP file_put_contents() 函数是一次性向文件写入字符串或追加字符串内容的最合适选择。

file_put_contents() 函数用于把字符串写入文件,成功返回写入到文件内数据的字节数,失败则返回 FALSE。

int file_put_contents ( string filename, string data [, int flags [, resource context]] )

参数说明:

参数 说明 filename 要写入数据的文件名 data 要写入的数据。类型可以是 string,array,或者是 stream 资源 flags 可选,规定如何打开/写入文件。可能的值: 1. FILE_USE_INCLUDE_PATH:检查 filename 副本的内置路径 2. FILE_APPEND:在文件末尾以追加的方式写入数据 3. LOCK_EX:对文件上锁 context 可选,Context是一组选项,可以通过它修改文本属性

运行该例子,浏览器输出:

而 test.txt 文件内容则为:This is something.。

如果文件不存在,则创建文件,相当于fopen()函数行为。如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免。本函数可安全用于二进制对象。

以追加形式写入内容

当设置 flags 参数值为 FILE_APPEND 时,表示在已有文件内容后面追加内容的方式写入新数据:

执行程序后,test.txt 文件内容变为:

This is something.This is another something.

file_put_contents() 的行为实际上等于依次调用 fopen()fwrite() 以及 fclose() 功能一样。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

版权声明:本文由大奖888-www.88pt88.com-大奖888官网登录发布于大奖888官网登录,转载请注明出处:之前只知道用户发送一个消息,今天要弄个用户