这是微信提供的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 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

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

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

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