技术开发 频道

使用 PHP 在站点上构建类似 Twitter 的系统

  设计应用程序的后端

  简言之,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(表明该用户已经登录)。如果用户没有登录,那么可以将用户重定向到登录页面。本文不会深入讨论这一点,不过需要时可以很容易地添加安全检查。

0
相关文章