ホームページ >バックエンド開発 >PHPチュートリアル >スクリプトinterface.php実装コード、スクリプトinterface.php_PHPチュートリアルにアクセスします。

スクリプトinterface.php実装コード、スクリプトinterface.php_PHPチュートリアルにアクセスします。

WBOY
WBOYオリジナル
2016-07-13 10:18:56936ブラウズ

スクリプトinterface.phpにアクセスしてコード、スクリプトinterface.phpを実装します

上記のWeChatCallBackを実行してください

WeChatCallBack クラスのメンバー変数にはさまざまなメッセージに共通のフィールドが定義されており、これらのフィールドには init 関数で値が割り当てられます。同時に、解析された XML オブジェクトはこのクラスのメンバー変数 $_postObject としても使用され、init で割り当てられます。その目的は、特定のパブリック アカウントのビジネス ロジックを実装するときに、特定の種類のメッセージの特殊フィールドを取得することです。

プロセス関数は、特定のパブリック アカウントのビジネス ロジックを実装するときにオーバーロードする必要がある関数です。デフォルトの実装では、「実装されていません」というエラー メッセージが返されます。

この記事の焦点はアクセス スクリプトです。アクセス スクリプトはプロジェクトのルート ディレクトリにあるinterface.php です。コード リストは次のとおりです。

require_once dirname(__FILE__) '/common/GlobalFunctions.php';

関数checkSingnature()

{

$signature = $_GET["署名"];

$timestamp = $_GET["timestamp"];

$nonce = $_GET["nonce"];

$token = WEIXIN_TOKEN;

$tmpArr = array($token, $timestamp, $nonce);

sort($tmpArr);

$tmpStr = implode( $tmpArr );

$tmpStr = shal( $tmpStr );

if( $tmpStr == $signature ) {

trueを返す;

} else {

return false;

}

}

if(checkSignature()) {

if($_GET["echostr"]) {

エコー $_GET["echostr"];

exit(0);

}

} 他 {

//悪意のあるリクエスト: 送信元IPを取得してログに書き込みます

$ip = getIp();

interface_log(ERROR, EC_OTHER, 'malicious: ' . $ip);

exit(0);

}

関数 getWeChatObj($toUserName) {

if($toUserName == USERNAME_FINDFACE) {

require_once dirname(__FILE__) '/class/

WeChatCallBackMeiri10futu.php' ;

return new WeChatCallBackMeir10futu();

}

if($toUserName == USERNAME_MR) {

require_once dirname(__FILE__) '/class/

WeChatCallBackMeir10futu.php' ;

return new WeChatCallBackMeir10futu();

}

if($toUserName == USERNAME_ES) {

require_once dirname(__FILE__) '/class/

WeChatCallBackEchoServer.php' ;

return new WeChatCallBackEchoServer();

}

require_once dirname(__FILE__) '/class/WeChatCallBcak.php' ;

return new WeChatCallBack();

}

関数 exitErrorInput() {

echo「入力エラー!」

interface_log(INFO, EC_OK, "****** インターフェースリクエスト終了 ******") ;

interface_log(INFO, EC_OK, "********************** ******") ;

interface_log(INFO, EC_OK, "") ;

exit( 0 );

}

$postStr = file_get_contents ( "php://input" );

interface_log(INFO, EC_OK, "");

interface_log(INFO, EC_OK, "******************************");

interface_log(INFO, EC_OK, "***** インターフェースリクエスト開始 *****");

interface_log(INFO, EC_OK, 'request: ' . var_export($_GET, ture)) ;

if (empty ( $postStr )) {

interface_log (ERROR, EC_OK, "入力エラー!" );

exitErrorInput();

}

// パラメータを取得します

$postObj = simplexml_load_string ($postStr, 'SimpleXMLElement',

)

LIBXML_NOCDATA ) ;

$toUserName = ( string ) トリム ( $postObj->ToUserName ) ;

if (! $toUserName) {

interface_log (ERROR, EC_OK, "入力エラー!") ;

exitErrorInput();

} 他 {

$wechatObj = getWeChatObj ( $toUserName ) ;

}

retStr = $ wechatObj->process();

interface_log(INFO, EC_OK, "***** インターフェースリクエスト終了 *****") ;

interface_log(INFO, EC_OK, "******************************") ;

interface_log(INFO, EC_OK, "");

?>

Interface.phpの論理記述:

1. checkSignature 関数を使用して、リクエストが合法かどうかを検証し、違法な場合は悪意のある送信元 IP を記録します。

2. POST データを取得し、XML データを解析し、ToUserName に基づいてメッセージがどのパブリック アカウントに送信されるかを決定し、対応するファイルをロードして、対応するオブジェクトを取得します (getWeChatObj 関数)。

3. オブジェクトのinit関数を呼び出してオブジェクトを初期化します。

4. オブジェクトの process 関数を呼び出して、パブリック アカウント ロジックを処理し、返されるメッセージ文字列を取得します。

5.メッセージを返します。

送信元IPの取得関数:

関数getIp()

{

if (isset($_SERVER)) {

if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {

$realip = $_SERVER["HTTP_X_FORWARDED_FOR"] ;

} else if (isser($_SERVER["HTTP_CLIENT_IP"])) {

$realip = $_SERVER["HTTP_CLIENT_IP"] ;

} else {

$realip = $SERVER["REMOTE_ADDR"];

}

} else {

if (getenv(""HTTP_X_FORWARDED_FOR")) {

$realip = getenv("HTTP_X_FORWARDED_FOR") ;

} else if (getenv("HTTP_CLIENT_IP")) {

$realip = getenv("HTTP_CLIENT_IP") ;

} else {

$realip = getenv("REMOVE_ADDR") ;

}

}

$realip を返します;

}

____________オーバー____________

SPアクセスコードとは何ですか

は、第 2 種付加価値電気通信事業におけるモバイル ネットワーク情報サービス事業のショート メッセージ アクセス コードであり、全ネットワークと地上ネットワークの 2 つのカテゴリに分かれています。全ネットワーク SP アクセス コードは、ネットワーク全体です。 1066 で始まる運用用 SP アクセス コードと、1069 で始まるネットワーク全体の非商用 SP アクセス コード。地上ネットワークの SP アクセス コードは、1062 で始まる商用コードと 1063 で始まる非商用コードに分かれます。ネットワーク全体の SP アクセス コードの申請機関は工業情報化部、地上ネットワーク アクセス コードの申請機関は地方通信管理局です。したがって、SP を申請するにはどのような資料を提出する必要があります。アクセスコード? sp アクセス コード申請資料 1. ショート メッセージ サービス アクセス コード申請報告書 (番号の長さ、適用範囲、連絡先番号) 2. ショート メッセージ サービス アクセス コード (地方用) 申請フォーム 3. ショート メッセージの使用に関する誓約書;サービスアクセスコード 4. 付加価値電気通信事業許可証の原本およびコピー(事業カテゴリー:ショートメッセージサービス) 6. 技術計画、事業計画書などのコピー。

アクセスコードとは何ですか

アクセス コードは地域ごとに異なります
マニュアル サービスに連絡するには 10086 にダイヤルする必要があります
または、電話番号の場所を教えていただければ確認させていただきます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/879485.html技術記事スクリプトinterface.phpにアクセスしてコードを実装します。スクリプトinterface.phpは上記のWeChatCallBackを引き継ぎ、各種メッセージに共通のフィールドが定義されています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。