这是微信提供的demo:我在responseMsg函数中想调用自己写的验证的php类,添加了这条语句
require_once "./IValidMsgImpl.php";却始终不响应,我刚学php,有很多java的思想,请phper帮我看看,我想不会有问题吧,要不就是路径问题?我用的是国外的服务器绑定的。
/**
* wechat php test
*/
//define your token
define("TOKEN", "sharenet");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
}
}
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
//使用php内置函数读取xml文件并将其转化为对象
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
//通过对象读取xml消息的内容
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time()+(7*60*60);
$time2 = date('Y-m-d G:i:s', $time);
//定义回复消息的xml数据格式,其中中%s被替换的内容将不会被xml解析器解析
$textTpl = "
//这里只是简单的对用户发来的信息做了非空检验 详细的校验规则在这里展开
if(!empty( $keyword ))
{
require_once "./IValidMsgImpl.php";
$test = new IValidMsgImpl();
$contentStr = $test->ValidNum($keyword);
//数据的回复格式不能修改!将回复内容转化为xml格式并发送
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time2, $msgType, $contentStr);
//将回复的内容$resultStr发送出去,腾讯微信服务器接收此xml格式的数据包并转发给接收者
echo $resultStr;
}else{
$msgType = "text";
$contentStr = "不要给我发空信息!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time2, $msgType, $contentStr);
//将回复的内容$resultStr发送出去,腾讯微信服务器接收此xml格式的数据包并转发给接收者
echo $resultStr;
}
}else {
echo "get a error!";
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
?>
我自己写的php:
public class IValidMsgImpl{
/*
验证微信好友发来的消息是否为学号,以验证是否导入学生信息
学号格式为10位数字如:1020107201
*/
function ValidNum($keyword){
//回复内容的数据类型:text,
$msgType = "text";
//自动回复的内容在这里修改即可$contentStr,发送汉字时要指定编码utf-8
//$contentStr = "i am a robot...";
if(preg_match("/^R:\d{10}$/",$keyword)){
$array = explode(':', $keyword);
$keyword2 = $array[1];
$contentStr = "你使用了R:命令,我已收到你的指令";
}else{
$contentStr = "欢迎你,你可以试试我的新功能,输入以'R:'命令并加上10位数字如:R:1020107228.就会有不同内容!";
return $contentStr;
}
}
?>
我只是想把验证的内容放到一个类中!现在已经测试过,微信好友发空的字符串是有提示的,代码就是在调用我自己php时出错,可能是路径问题,这两个php文件我都是放在apache服务器htdocs文件夹下的。求指导
回复讨论(解决方案)
require_once "./IValidMsgImpl.php";
这句是包含一个php文件。
你检查路径看看有无问题。
先看路径,在ValidMsgImpl.php中写个测试方法,比如
function isRight(){
echo 'test===========================>ok';
}
然后,在引入文件中调用,能显示那句的话说明引用路径正确,再找其他原因。不显示,先调整路径
我测试过,没问题,放在微信接口中就没用
就是测试过成功,然后在微信接口中调用就没反应
有学过php的大神吼一下,我具体的问题想请教请教
换环境出问题这种事别奇怪。有时在windows上编写代码,由于你用的编辑器的问题,再上传至linux服务器上后会出现特殊字符。这种特殊字符会导致语法错误。
谢谢你,问题解决了,其实是我一直纠结的是什么呢?给你讲一讲,互相提高。呵呵
我的文件目录结构:根目录htdocs/下有一个文件myTest.php,同时有一个文件夹sharenet
sharenet/php/DAO/下放的是我的一些接口,里面有个IValidMsg.php接口
sharenet/php/impl/下放的是我的一些接口实现类,里面有个IValidMsgImpl.php接口实现类implements IValidMsg,而在文件里我加入引用路径require_once "../DAO/IValidMsg.php";
而我在myTest.php文件中时这样引用的require_once "./sharenet/php/impl/IValidMsgImpl.php";先要调用基于接口的实现类具体的方法,一运行就报错了,说路径错误
找了好多资料才发现php中的路径问题很烦人,require只是把路径包含的文件直接加到当前文件中的,不像java,java中是边加载边编译的,而php是解释型的,先加载后翻译执行,他直接先把require_once "../DAO/IValidMsg.php";包含的路径先加载到myTest.php中的,然后运行时才编译的,这是是在htdocs/目录下的了,所以他找不到sharenet/php/impl/下的文件。所以我直接在定义接口实现类的文件中直接引用require_once "./sharenet/php/DAO/IValidMsg.php";路径了,听网上说可以把一个路径固化,set_include_path()这个函数?能固化当然好,直接将./sharenet/php/DAO/和./sharenet/php/impl/两个路径先预定义好,以后直接用就行了,而不再考虑文件里套文件而引发的路径问题了,现在我是这么想的,对你有没有点用?我是新学php的,你知道的话就跟我交流交流,我很想找个学过php的人学习经验啊!呵呵
换环境出问题这种事别奇怪。有时在windows上编写代码,由于你用的编辑器的问题,再上传至linux服务器上后会出现特殊字符。这种特殊字符会导致语法错误。
谢谢你,问题解决了,其实是我一直纠结的是什么呢?给你讲一讲,互相提高。呵呵
我的文件目录结构:根目录htdocs/下有一个文件myTest.php,同时有一个文件夹sharenet
sharenet/php/DAO/下放的是我的一些接口,里面有个IValidMsg.php接口
sharenet/php/impl/下放的是我的一些接口实现类,里面有个IValidMsgImpl.php接口实现类implements IValidMsg,而在文件里我加入引用路径require_once "../DAO/IValidMsg.php";
而我在myTest.php文件中时这样引用的require_once "./sharenet/php/impl/IValidMsgImpl.php";先要调用基于接口的实现类具体的方法,一运行就报错了,说路径错误
找了好多资料才发现php中的路径问题很烦人,require只是把路径包含的文件直接加到当前文件中的,不像java,java中是边加载边编译的,而php是解释型的,先加载后翻译执行,他直接先把require_once "../DAO/IValidMsg.php";包含的路径先加载到myTest.php中的,然后运行时才编译的,这是是在htdocs/目录下的了,所以他找不到sharenet/php/impl/下的文件。所以我直接在定义接口实现类的文件中直接引用require_once "./sharenet/php/DAO/IValidMsg.php";路径了,听网上说可以把一个路径固化,set_include_path()这个函数?能固化当然好,直接将./sharenet/php/DAO/和./sharenet/php/impl/两个路径先预定义好,以后直接用就行了,而不再考虑文件里套文件而引发的路径问题了,现在我是这么想的,对你有没有点用?我是新学php的,你知道的话就跟我交流交流,我很想找个学过php的人学习经验啊!呵呵
把这个注释掉$wechatObj->valid();
lz你好,我最近才接触微信的,注册了一个公众账号。看了微信网站上写着:新用户订阅,将由之前推送一条“Hello2BizUser”文本,变化为推送一条“subscribe”的事件。但是还是不懂写,比如别人关注我后 我要发一条“欢迎光临” 该怎么写呢 能写个demo.php吗,万分感谢
我自己用php做微信第三方开发,thinkphp做的一个平台,微发网。

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP和Python都是高层次的编程语言,广泛应用于Web开发、数据处理和自动化任务。1.PHP常用于构建动态网站和内容管理系统,而Python常用于构建Web框架和数据科学。2.PHP使用echo输出内容,Python使用print。3.两者都支持面向对象编程,但语法和关键字不同。4.PHP支持弱类型转换,Python则更严格。5.PHP性能优化包括使用OPcache和异步编程,Python则使用cProfile和异步编程。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

Dreamweaver Mac版
视觉化网页开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。