PHP微信公眾開發筆記(三)

來源:互聯網
上載者:User
PHP公眾開發筆記系列

日期:2014.9.2


今天主要的任務是昨天提到的那個處理緩衝資訊的問題,我需要儲存一些訊息用來做二次判斷。


首先,記錄一些PHP文法知識吧。

1、PHP中字串的串連文法:

在lua中,兩個字串的串連很簡單,加入有兩個字串 "aaa";"bbb"; 需要將這兩個字串串連起來,只需要用兩個句點 .. 便可以了:"aaa" .. "bbb"; 這裡要注意,字串與句點直接需要有空格,沒有空格會報錯;

而在PHP中,串連只需要一個句點就可以了:"aaa"."bbb"; 而且不需要強制在字串和句點之間用空格;


2、得到時間,轉換為日期格式:

使用date函數,格式為:date('Y-m-d H:i:s',time());挺簡單的,記錄一下


公眾平台開發需求完成進度。

現在回到昨天留下的那個任務:利用session緩衝記錄資訊,實現我們構想的那個菜單:

php中關於session的使用,我不是很清楚,所以就一直度娘度娘的,折騰了一番,總算是實現了我的功能需求了,不過還是覺得有一些不足的地方,留給以後再來修正吧。

昨天提到了,我要實現的菜單,希望能記住上一條資訊。即提醒使用者輸入查詢,進入查詢菜單,在使用者發送過來“查詢”之後,下一條資訊就應該轉入查詢菜單了,即我需要記住使用者發送過“查詢”這個資訊。在度娘度了好久之後,尋找到了要麼就用資料庫,要麼就用session,在PHP中用資料庫還不會,然後我感覺就簡單的處理一下記住資訊應該不需要動用資料庫,所以採用的是使用session。

使用Session來實現我們的需求:

php中關於session具體該怎麼用,以後還是需要度娘來詳細瞭解一番,現在我們這隻是簡單的使用。

在查閱資料的時候,有網友提到用使用者的username作為唯一id,這樣就使得針對每個使用者儲存的資訊會不一致(因為我們現在是伺服器發送訊息,每個使用者都會發送訊息過來,不能影響別的使用者的使用),所以代碼實現如下:

session_id($postObj->fromUsername); //這個是伺服器post過來的xml資料包中使用者名稱字,用這個作為id

session_start(); //這個應該是開啟session的意思吧?

而我這兩行代碼該放到哪裡也不是很清楚,現在我是將這個代碼放在 responseMsg函數中了,不知道是不是這樣的,後面的測試是有用的。

開啟了session之後,就是記錄資訊了:

$_SESSION['menu_type'] = $this->getUserMenu($textWord); //這裡的getusermenu是我用來根據使用者輸入得到菜單類型的函數;記錄資訊用到了$_SESSION這個變數,這裡是以數組形式使用??

在我們記錄好了資訊之後,該進行資訊的判斷了,使用到:

isset($_SESSION['menu_type']); //用isset來判斷我們是否設定了這個值,這樣就能判斷使用者是否選擇了一個菜單了

然後在我們不需要使用的時候,則使用以下函數來銷毀這個:

unset($_SESSION['menu_type'];


在代碼中再做相應的調整,便可以實現我們的需求了。然後現在覺得不足的地方是,我該在哪個時候銷毀儲存的使用者選擇的菜單類型呢?假如使用者選擇了“查詢”菜單,那麼我們這邊就是響應使用者的查詢行為了,至少在使用者查詢的過程中我們不應該銷毀掉儲存的菜單類型。我感覺合理的銷毀有三種情況:使用者關掉了對話方塊(即使用者退出了和我們這個公眾號的聊天框,但網上沒查到怎麼知道使用者退出了);使用者長時間內沒有執行查詢操作(即使用者在選擇了“查詢”菜單的前提下,經過了一個給定的時間內沒有執行相應的查詢操作,這個時候自動銷毀);最後就是使用者自動選擇退出。不銷毀記錄的資訊,會出現這樣的問題,在使用者選擇了“查詢”菜單,然後使用者退出了與公眾號的聊天,下一次再進入的時候,還會儲存記錄的使用者選擇的菜單資訊,感覺這樣是不合理的。


拋開上面提到的問題,至少這一步我們需要的功能是實現了,有關的問題慢慢修複吧。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.