php+ajax實現微信上牆

來源:互聯網
上載者:User

好久就想實現這個功能了,可是一直沒心情,好在收到網易實習的offer,於是心情大好,實現了這個功能來和大家共用。大家可以先看效果吧:只要關注微信公眾帳號say_magic,


然後開啟網址http://www.saymagic.cn/weixin/wall.php,在公眾號裡回複:上牆+您要說的話,您就會發現您說的話會同步到上面的網址上。


整個流程大概是這樣:

公眾號的後台接收到訊息並將訊息存入資料庫,而前台呢,則使用js的setTimeout函數進行迴圈的使用ajax向後台get資料來擷取資料庫的最新資料,當明白整個原理後,就顯得很簡單,接下來看一下主要的代碼:

wall.php(微信牆頁面 )

微信牆    query($wxQuery);while ($wxRow=mysql_fetch_row($wxResult)) {    $lastID or $lastID = $wxRow[0];//0代表資料庫中的id,這個要和你自己資料庫相對應    $content = $wxRow[4];//4也是一樣的echo "",$content,"\n";}$lastID = (int)$lastID;?> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js"></script><script>var lastID = ;function getMessages() {       $.ajax({           url: "message.php?lastID=" + lastID + "&v=" + (new Date()/1),        dataType: "json",        error: function(){              alert("Error loading JSON document");          },          success: function(data){//如果調用php成功            $.each(data,function(i,n){                        message = "" + n + "";                        $(message).prependTo("#msgBox").hide().slideDown("slow");                       lastID = i;});        }    });window.setTimeout(getMessages, 5000);}getMessages();</script> 

mysql操作檔案sql.php:
db_host = $db_host;        $this->db_user = $db_user;        $this->db_pwd = $db_pwd;        $this->db_database = $db_database;        $this->conn = $conn;        $this->coding = $coding;        $this->connect();    }      /*資料庫連接*/    public function connect() {        if ($this->conn == "pconn") {            //永久連結            $this->conn = mysql_pconnect($this->db_host, $this->db_user, $this->db_pwd);        } else {            //即使連結            $this->conn = mysql_connect($this->db_host, $this->db_user, $this->db_pwd);        }          if (!mysql_select_db($this->db_database, $this->conn)) {            if ($this->show_error) {                $this->show_error("資料庫不可用:", $this->db_database);            }        }        //mysql_query("SET NAMES $this->coding");    }      /*資料庫執行語句,可執行查詢添加修改刪除等任何sql語句*/    public function query($sql) {        if ($sql == "") {            $this->show_error("SQL語句錯誤:", "SQL查詢語句為空白");        }        $this->sql = $sql;        $result = mysql_query($this->sql, $this->conn);        if (!$result) {            //調試中使用,sql語句出錯時會自動列印出來            if ($this->show_error) {                $this->show_error("錯誤SQL語句:", $this->sql);            }        } else {             $this->result = $result;        }        return $this->result;    }  }?>


不斷從資料庫擷取最新資料的檔案message.php.


 1000) {        die("possible deep recursion attack");    }    foreach ($array as $key => $value) {        if (is_array($value)) {            arrayRecursive($array[$key], $function, $apply_to_keys_also);        } else {            $array[$key] = $function($value);        }         if ($apply_to_keys_also && is_string($key)) {            $new_key = $function($key);            if ($new_key != $key) {                $array[$new_key] = $array[$key];                unset($array[$key]);            }        }    }    $recursive_counter--;}function JSON($array) {arrayRecursive($array, "urlencode", true);$json = json_encode($array);return urldecode($json);}$lastID = (int) $_GET["lastID"];include_once("sql.php");$backValue=array();$wxQuery = "SELECT * FROM wx_note WHERE id > ".$lastID." ORDER BY id LIMIT  3";$wxResult = $mysql->query($wxQuery);while ($wxRow=mysql_fetch_row($wxResult)) {$recordID = $wxRow[0];$content = $wxRow[4];    //$xml=$content;    $backValue[$recordID ] = $content;}echo JSON($backValue);?>


最後,如果需要的話,還有背景圖片:/program/UploadPic/2014-3/2014317135337634.jpg.


當然,這裡說的只是後端的部分,在處理微信訊息上,你還需要把收到的訊息存入資料庫,這應該沒什麼難度,就不放代碼了。這裡一定要記得和剛才操作的方法中的資料格式相對應,這是最容易出錯的了。好的,如果有什麼疑問的話,歡迎留言。


轉載請註明:我的原部落格連結http://blog.saymagic.cn/blog.php?id=58




相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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