设为首页收藏本站
查看: 72|回复: 0

[PHP] PHP实例教程(1):构建基于PHP的微博客服务

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2013-6-23 23:11:00 | 显示全部楼层 |阅读模式
     如果您曾经留意过,就会知道 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  "Sorry, could not connect to database.


    Please contact your system's admin for more help\n";
    exit;
    }


    mysql_select_db( $DATABASE );
      



      


        请记住,还可以随意将任何其他类型的安全检查添加到这个 header.php 文件中。例如,可以检查一个会话变量中是否设置了一个用户
    ID(表明该用户已经登录)。如果用户没有登录,那么可以将用户重定向到登录页面。本文不会深入讨论这一点,不过需要时可以很容易地添加安全检查。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表