技术开发 频道

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

  创建输入表单

  设置好后端表之后,就可以考虑处理数据插入和更新的 PHP。现在需要的是一些简单的函数,这些函数将:

  1.允许用户登录和添加贴子。

  2.将那些贴子转发给追随那个用户的人。

  3.允许用户追随其他用户。

  我通常在模型-视图-控制器(Model-View-Controller,MVC)应用程序框架(例如 CodeIgniter)的上下文中工作,因为它提供了一套工具用于创建这些类型的应用程序。例如,我一般先创建两个模型(一个用于用户,另一个用于贴子),这两个模型使我可以与 users、posts 和 following 表交互,然后从这两个模型开始继续前进。

  由于您可能已经在使用不同的框架,所以我决定在此不使用上述方法。相反,我选择一种更简单的、独立于框架的方法。对于本文,我们走走捷径,直接将记录添加到 users 表中,以创建一系列测试用户,供应用程序使用。我创建 3 个用户,并将他们的用户名设为 jane、 tommy 和 bill。

  然后,创建一个简单的名为 functions.php 的 PHP 文件,该文件将包含主要的功能。在该文件中要创建少量的函数,以支持微博客应用程序上下文中的动作。

  如清单 5 所示,第一个函数是一个简单的函数,用于将内容添加到 posts 表中。

  清单 5. 用于将内容添加到 posts 表中的函数

function add_post($userid,$body){
    $sql
= "insert into posts (user_id, body, stamp)
            values ($userid, '". mysql_real_escape_string($body). "',now())";

    $result
= mysql_query($sql);
}

  为了测试这个简单的函数,还需要添加另外两个 PHP 文件。一个是 index.php 文件,目前包含一个基本的小表单 — 后面将向页面添加更多内容。另一个 PHP 文件是 add.php,上述表单将被发布到该文件。清单 6 是 index.php 文件的摘录。请注意,在此使用一个 PHP 会话将一个用户 ID 值硬编码为 1,这是我的数据库中的用户 jane。现在这样做完全没有问题,但是在后面显然需要更改。

  清单 6. index.php 文件摘录

<?php
session_start();
include_once(
'header.php');
include_once('functions.php');

$_SESSION[
'userid'] = 1;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    
<title>Microblogging Application</title>
</head>
vbody
>

<?php
if (isset($_SESSION['message'])){
    echo "<b>". $_SESSION['message']."</b>";
    unset($_SESSION['message']);
}
?
>
<form method='post' action='add.php'>
<p>Your status:</p>
<textarea name='body' rows='5' cols='40' wrap=VIRTUAL></textarea>
<p><input type='submit' value='submit'/></p>
</form>

</body>
</html>

  此外还应注意,我在表单上为状态消息留下了空间,这将在 add.php 中动态地设置,如下面的清单所示。

  清单 7. 用 add.php 文件将贴子添加到数据库中

<?php
session_start();
include_once(
"header.php");
include_once(
"functions.php");

$userid
= $_SESSION['userid'];
$body = substr($_POST['body'],0,140);

add_post($userid,$body);
$_SESSION[
'message'] = "Your post has been added!";

header(
"Location:index.php");
?
>

  上述代码应该没有什么特别令人奇怪的东西。它只是接受表单的 body 字段和 PHP 会话中设置的 user ID,然后将它们传递给 functions.php 文件中的 add_post() 函数。然后,设置另一个会话变量(更新消息),并将用户重定向回 index.php 页面。

  如果要测试这个小函数,惟一的方法是检查数据库中的 posts 表。这不太符合用户友好性,不是吗?这里需要的是更新主页上的贴子。为此,需要再将一个函数添加到 functions.php 文件中,并在主页上使用它。

0
相关文章