ホームページ >バックエンド開発 >PHPチュートリアル >PHP WeChat 公開開発ノート (3)
PHP WeChat 公開開発ノート シリーズ
日付: 2014.9.2
今日の主なタスクは、昨日述べたキャッシュ情報の処理の問題で、二次判定のためにいくつかのメッセージを保存する必要があります。
まず、PHP 構文の知識を記録します。
1. PHP の文字列接続構文:
Lua では、2 つの文字列 "aaa"; "bbb" を追加するだけで済みます。ピリオド... "aaa" .. "bbb"; ここで、文字列とピリオドには直接スペースが必要であることに注意してください。スペースがない場合、エラーが報告されます。ピリオドで十分です: "aaa"."bbb"; 文字列とピリオドの間にスペースを強制する必要はありません。
2. 時刻を取得して日付形式に変換します。 date 関数、形式: date('Y-m-d H:i:s', time()); パブリック プラットフォームの開発要件の完了の進行状況を記録するのは非常に簡単です。
さて、昨日残したタスクに戻りましょう: セッション キャッシュを使用して情報を記録し、思い描いたメニューを実現します:
PHP でのセッションの使用についてはあまり明確ではないので、いろいろいじっています。しばらくして、ようやく機能要件を達成できましたが、まだいくつかの欠点があると感じているため、将来的に修正します。
昨日、以前のメッセージを忘れないように、実装したいメニューについて言及しました。つまり、ユーザーが「クエリ」を送信した後、次の情報がクエリ メニューに転送されることを覚えておく必要があります。 「クエリ」情報。 Du Niang に長い時間を費やした後、PHP でデータベースを使用する方法がわかりませんでした。その後、単に情報を処理して記憶するだけであれば、データベースを使用する必要はないのではないかと感じました。データベースなので、Use session を使用しました。
PHP での session の使用方法については、今後もさらに学習する必要があります。ここでは、単にそれを使用するだけです。
情報を確認する際、一部のネチズンは、ユーザーのユーザー名を一意のIDとして使用すると、各ユーザーに保存されている情報に一貫性がなくなると述べました(現在、サーバーからメッセージを送信しており、各ユーザーがメッセージを送信するため、影響を与えることはできません)他のユーザーの使用) のため、コードは次のように実装されます:
session_id($postObj->fromUsername) //これは WeChat サーバーによって投稿された XML データ パケット内のユーザー名であり、これを ID として使用します。
session_start() ; //これはセッションを開くことを意味しますよね?
セッションを開いた後、情報が記録されます:
$_SESSION['menu_type'] = $this->getUserMenu($textWord); //getusermenu ユーザーに基づいてメニュー タイプを取得するために使用する関数です。 input ;変数 $_SESSION は情報を記録するために使用されますか? それは配列の形式で使用されますか? ?
情報を記録したら、情報を判断します。
isset($_SESSION['menu_type']) // isset を使用して、この値が設定されているかどうかを判断します。ユーザーがメニューを選択したかどうか
その後、それを使用する必要がない場合は、次の関数を使用してメニューを破棄します:
unset($_SESSION['menu_type'];
コード内で対応する調整を行うことで、ニーズを達成できます。しかし、今私が不十分だと感じているのは、保存されているユーザー選択のメニュー タイプをいつ破棄すべきかということです。ユーザーが「クエリ」メニューを選択した場合、少なくともユーザーのクエリ処理中は、保存されたメニュー タイプを破棄すべきではありません。適切な破棄の状況は 3 つあると思います。ユーザーがダイアログ ボックスを閉じる (つまり、ユーザーが公式アカウントとのチャット ボックスを終了しますが、ユーザーが終了したことを知る方法がインターネット上で見つかりません)。ユーザーが長期間クエリ操作を実行しなかった場合 (つまり、ユーザーが「クエリ」メニューを選択し、一定時間内に対応するクエリ操作を実行しなかった場合、この時点でクエリ操作は自動的に破棄されます)。を選択すると、ユーザーは自動的に終了を選択します。記録された情報が破壊されていない場合、ユーザーが「クエリ」メニューを選択し、公式アカウントとのチャットを終了した場合、ユーザーが選択した記録されたメニュー情報は、次回再び入力したときに保存されます。 . これは無理があるような気がします。
上記の問題はさておき、少なくともこのステップで必要な機能は実装されており、関連する問題は徐々に修正される予定です。