微信消息接口使用,在提供的demo中引用自己写的类出现问题
这是微信提供的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做的一个平台,微发网。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。
