之前只知道用户发送一个消息,今天要弄个用户
本文实例讲述了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官网登录,转载请注明出处:之前只知道用户发送一个消息,今天要弄个用户