程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP入門知識 >> PHP實例教程(1):構建基於PHP的微博客服務

PHP實例教程(1):構建基於PHP的微博客服務

編輯:PHP入門知識

如果您曾經留意過,就會知道 Twitter 是 Web 2.0 世界最大的轟動事件之一。簡單來說,Twitter(Twitter.com 上提供的一個服務)是一個簡單的微博客服務,用戶可以發最多 140 個字符的貼子(稱作 tweet),回答 “你現在在做什麼?” 之類的問題。用戶可以追隨他們感興趣的人,也有自己的追隨者。通過這種方式,可以將信息發布給追隨者或是廣泛地轉發。

隨意浏覽一下某個 Twitter 賬戶可以發現,用戶常常發布關於很多不同話題的 tweet,從日常生活(例如 “我在吃三明治”)到更不平凡的話題。其中常常嵌入了圖像、媒體文件和日志的鏈接。這些 URL 常常被 TinyURL 之類的服務縮短,主要是為了使貼子的總字符數不超過 140 個字符。

很多人喜歡上了 Twitter,使超短格式成了一種藝術形式,甚至將之用於與其他用戶交談(例如將他們的評論定向到 @user)。從這個簡單的起點開始,湧現了大量支持 Twitter 的移動應用程序和其他工具。現在甚至還有專門為最有趣、最卓越和最詳實的 tweet 而設置的獎項,另外還有跟蹤不同 Twitter 應用程序的狀態的在線應用程序。

很多其他站點和服務,例如 LinkedIn 和 Facebook 現在允許用戶用仿照 Twitter 的方式更新他們的當前狀態。換句話說,在 Facebook 更新狀態需要使用短消息,當然,狀態通常是回答 “你現在在干什麼” 之類的問題。

為您自己的站點添加微博客或狀態更新工具不需要做很多工作,但是卻可以為用戶帶來樂趣和簡單的交流方式。本文的目標是展示如何實現這個目的。但是,首先需要對您作一些假設。

首先,假設您對 PHP 和 MySQL 有所了解。同時假設您可以訪問某個運行 PHP 和 MySQL 的本地 Apache Web 服務器。對於本文,我在使用 Macintosh、Apache、MySQL 和 PHP(MAMP)的 MacBook Products 上進行開發,這個免費程序將整個開發環境打包到一個包中。但是,您應該能夠毫無困難地在 Microsoft® Windows® 或 Linux® 上進行開發。最後,假設您已經有一個可以立即運行的應用程序,該應用程序現在有一些用戶,您打算以某種方式將微博客或 tweeting 添加到該應用程序中。為此,我簡化應用程序中側重用戶的一些方面(例如登錄、管理個人文件等),而側重於貼子。

設計應用程序的後端

簡言之,Twitter 服務以兩個名詞為中心:用戶和消息。如果您已經構建了一個應用程序,並且希望將類似 Twitter 的服務添加到應用程序中,那麼很可能已經有了用戶管理功能。如果還沒有,那麼需要采用某種方式使用一個數據庫表(一個主鍵,通常是一個整數)、一個用戶名(也是惟一的)、一個電子郵件地址和密碼等標識每個用戶。

tweet(即貼子)存儲在一個 posts 表中,每個貼子有一個主鍵(某種連續整數)、一個指向發出該貼的用戶的外鍵關系、貼子本身(限制為一定數量的字符)和日期/時間戳。

最容易令人感到迷惑的是顯示用戶追隨關系的數據庫表。這裡需要某種方式記錄用戶 ID 和追隨者 ID,使應用程序能夠快速建立追隨者列表,並輕松地將信息轉發給那些已注冊為要追隨某用戶的其他用戶。

理解這些內容後,現在就可以著手建立這 3 個數據庫表。使用清單 1 中的 SQL 代碼創建第一個表,即 users 表(如果已經有一個 users 表,則可以跳過這一步)。


清單 1. users 表
				
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 8 ) NOT NULL ,
`status` ENUM( 'active', 'inactive' ) NOT NULL
) ENGINE = MYISAM ;


下面是第二個表,即 posts 表。


清單 2. posts 表
				
CREATE TABLE `posts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user_id` INT NOT NULL ,
`body` VARCHAR( 140 ) NOT NULL ,
`stamp` DATETIME NOT NULL
) ENGINE = MYISAM ;

清單 3 顯示了最後一個表,即 following 表。注意這個表有兩個主鍵。


清單 3. following 表
				
CREATE TABLE `following` (
`user_id` INT NOT NULL ,
`follower_id` INT NOT NULL ,
PRIMARY KEY ( `user_id` , `follower_id` )
) ENGINE = MYISAM ;

然後,先創建一個名為 header.php 的文件,將所有用於 MySQL 的連接字符串放到該文件中。如果已經有一個這樣的文件,可以跳過這一步。請務必在各處都包括這個文件,因為將來需要用到它。清單 4 展示了這個文件的內容。


清單 4. 樣例 header.php 文件
				
$SERVER = 'localhost';
$USER = 'username';
$PASS = 'password';
$DATABASE = 'microblogger';


if (!($mylink = mysql_connect( $SERVER, $USER, $PASS))){
echo "<h3>Sorry, could not connect to database.</h3><br/>
Please contact your system's admin for more help\n";
exit;
}

mysql_select_db( $DATABASE );

請記住,還可以隨意將任何其他類型的安全檢查添加到這個 header.php 文件中。例如,可以檢查一個會話變量中是否設置了一個用戶 ID(表明該用戶已經登錄)。如果用戶沒有登錄,那麼可以將用戶重定向到登錄頁面。本文不會深入討論這一點,不過需要時可以很容易地添加安全檢查。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved