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

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

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

$id = 

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

function check_count($first, $second){	$sql = "select count(*) from following 			where user_id="$second" and follower_id="$first"";	$result = mysql_query($sql);

$row = mysql_fetch_row($result);	return $row[0];

}

function follow_user($me,$them){	$count = check_count($me,$them);

if ($count == 0){		$sql = "insert into following (user_id, follower_id) 				values ($them,$me)";

$result = mysql_query($sql);	}}

function unfollow_user($me,$them){	$count = check_count($me,$them);

if ($count != 0){		$sql = "delete from following 				where user_id="$them" and follower_id="$me"				limit 1";

$result = mysql_query($sql);	}}

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

function show_users($user_id=0){

if ($user_id > 0){		$follow = array();		$fsql = "select user_id from following				where follower_id="$user_id"";		$fresult = mysql_query($fsql);

while($f = mysql_fetch_object($fresult)){			array_push($follow, $f->user_id);		}

if (count($follow)){			$id_string = implode(",", $follow);			$extra =  " and id in ($id_string)";

}else{			return array();		}

}

$users = array();	$sql = "select id, username from users 		where status="active" 		$extra order by username";

$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

<h2>Users you"re following</h2>

<?php$users = show_users(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

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

$id = 

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

function check_count($first, $second){	$sql = "select count(*) from following 			where user_id="$second" and follower_id="$first"";	$result = mysql_query($sql);

$row = mysql_fetch_row($result);	return $row[0];

}

function follow_user($me,$them){	$count = check_count($me,$them);

if ($count == 0){		$sql = "insert into following (user_id, follower_id) 				values ($them,$me)";

$result = mysql_query($sql);	}}

function unfollow_user($me,$them){	$count = check_count($me,$them);

if ($count != 0){		$sql = "delete from following 				where user_id="$them" and follower_id="$me"				limit 1";

$result = mysql_query($sql);	}}

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

function show_users($user_id=0){

if ($user_id > 0){		$follow = array();		$fsql = "select user_id from following				where follower_id="$user_id"";		$fresult = mysql_query($fsql);

while($f = mysql_fetch_object($fresult)){			array_push($follow, $f->user_id);		}

if (count($follow)){			$id_string = implode(",", $follow);			$extra =  " and id in ($id_string)";

}else{			return array();		}

}

$users = array();	$sql = "select id, username from users 		where status="active" 		$extra order by username";

$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

GET["id"];
$do =
追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

GET["do"];

switch ($do){
case "follow":
follow_user(
追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"],$id);
$msg = "You have followed a user!";
break;

case "unfollow":
unfollow_user(
追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"],$id);
$msg = "You have unfollowed a user!";
break;

}

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["message"] = $msg;

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

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<ul>
<?php
foreach ($users as $key => $value){
echo "<li>".$value."</li>\n";
}
?>
</ul>
<?php
}else{
?>
<p><b>You"re not following anyone yet!</b></p>
<?php
}
?>

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

GET["id"];
$do =
追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

GET["do"];

switch ($do){
case "follow":
follow_user(
追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"],$id);
$msg = "You have followed a user!";
break;

case "unfollow":
unfollow_user(
追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"],$id);
$msg = "You have unfollowed a user!";
break;

}

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

<?php$users = show_users();$following = following(

追随其他用户

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。

清单 10. show_users() 函数

function show_users(){	$users = array();	$sql = "select id, username from users where status="active" order by username";	$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){		$users[$data->id] = $data->username;	}	return $users;}

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。

清单 11. 运行 show_users() 函数的 users.php 文件

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

?><!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 - Users</title></head><body>

<h1>List of Users</h1><?php$users = show_users();

if (count($users)){?><table border="1" cellspacing="0" cellpadding="5" width="500"><?phpforeach ($users as $key => $value){	echo "<tr valign="top">\n";	echo "<td>".$key ."</td>\n";	echo "<td>".$value ." <small><a href="#">follow</a></small></td>\n";	echo "</tr>\n";}?></table><?php}else{?><p><b>There are no users in the system!</b></p><?php}?></body></html>

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:

<p><a href="users.php">see list of users</a></p>

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。

图 2. 用户列表

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。

清单 12. following() 函数

function following($userid){	$users = array();

$sql = "select distinct user_id from following			where follower_id = "$userid"";	$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){		array_push($users, $data->user_id);

}

return $users;

}

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。

清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接

___FCKpd___4

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["message"] = $msg;

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

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

SESSION["userid"]);

if (count($users)){
?>
<table border="1" cellspacing="0" cellpadding="5" width="500">
<?php
foreach ($users as $key => $value){
echo "<tr valign="top">\n";
echo "<td>".$key ."</td>\n";
echo "<td>".$value;
if (in_array($key,$following)){
echo " <small>
<a href="action.php?id=$key&do=unfollow">unfollow</a>
</small>";
}else{
echo " <small>
<a href="action.php?id=$key&do=follow">follow</a>
</small>";
}
echo "</td>\n";
echo "</tr>\n";
}
?>

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。

清单 14. action.php 文件

___FCKpd___5

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。

清单 15. check_count() 函数

___FCKpd___6

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。

清单 16. 重新编写的代码,用于限制通过查询获得的用户列表

___FCKpd___7

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。

清单 17. 修改 index.php 以显示被追随的用户

___FCKpd___8

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 函数
, 链接
, 清单
, 用户
, 一个
, oracle_trunc_函数
, php页面限制
, 文件列表清单
, id()函数
, 检查传入参数
, 链接ID
链接列表
,以便于您获取更多的相关知识。

时间: 2024-09-20 00:54:44

PHP实例教程(3):构建基于PHP的微博客服务的相关文章

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

添加其他用户?贴子 要将其他用户的贴子添加到一个用户的时间表(timeline)上,只需重用之前编写的一些代码.例如,现在已经知道如何获得当前用户正在追随的用户的列表.也知道如何获得某个用户发出的所有贴子.因此只需稍微修改后一个函数,使之能够接受一个用户列表,而不是单个用户. 现在只需在 index.php 文件中将第一个函数上移一点,以便马上使用它,然后使用通过该函数获得的用户 ID 列表,从他们的时间表中获取一定数量的贴子 - 这里不需要所有的贴子,只需 5 个左右.记住,要按日期倒序(最近

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

如果您曾经留意过,就会知道 Twitter 是 Web 2.0 世界最大的轰动事件之一.简单来说,Twitter(Twitter.com 上提供的一个服务)是一个简单的微博客服务,用户可以发最多 140 个字符的贴子(称作 tweet),回答 "你现在在做什么?" 之类的问题.用户可以追随他们感兴趣的人,也有自己的追随者.通过这种方式,可以将信息发布给追随者或是广泛地转发. 随意浏览一下某个 Twitter 账户可以发现,用户常常发布关于很多不同话题的 tweet,从日常生活(例如 &

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

创建输入表单 设置好后端表之后,就可以考虑处理数据插入和更新的 PHP.现在需要的是一些简单的函数,这些函数将: 允许用户登录和添加贴子. 将那些贴子转发给追随那个用户的人. 允许用户追随其他用户. 我通常在模型-视图-控制器(Model-View-Controller,MVC)应用程序框架(例如 CodeIgniter)的上下文中工作,因为它提供了一套工具用于创建这些类型的应用程序.例如,我一般先创建两个模型(一个用于用户,另一个用于贴子),这两个模型使我可以与 users.posts 和 f

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【十】——使用CacheCow和ETag缓存资源

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[十]--使用CacheCow和ETag缓存资源 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 本文将使用一个开源框架CacheCow来实现针对Http请求资源缓存,本文主要介绍服务器端的缓存. 使用缓存技术可以很好的提高Web Api的性能,减小服务器的开销.我们把这种缓存形式称之为:条件化请求(Conditional Requests).具体表现为:客户

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【四】——实现模型工厂,依赖注入以及格式配置

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[四]--实现模型工厂,依赖注入以及格式配置 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 在上一篇中,我们已经初步开始使用Web Api了,但同时出现了一些很多不足之处,本章我们就着重来解决这些不足. 上篇导航:http://www.cnblogs.com/fzrain/p/3510035.html 配置JSON的格式 Web Api提供Xml和JSON作

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【开篇】【持续更新中。。。】

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[开篇][持续更新中...] 最近发现web api很火,园内也有各种大神已经在研究,本人在asp.net官网上看到一个系列教程,原文地址:http://bitoftech.net/2013/11/25/detailed-tutorial-building-asp-net-web-api-restful-service/.于是打算跟着学一下,把学习过程记录在博客园的同时也分享给大家. 每一篇结束后我都会把代码共享 由于

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【三】——Web Api入门

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[三]--Web Api入门 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 经过前2节的介绍,我们已经把数据访问层搭建好了,从本章开始就是Web Api部分了.在正式开始之前,再一次回顾一下Web Api的应用场景:Web Api可以与 MVC,WebForm结合使用,也可以作为一个单独的Web服务.在正式讨论Web Api的配置以及如何构造我们的URI来消

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【外传】——Attribute Routing

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[外传]--Attribute Routing 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 题外话:由于这个技术点是新学的,并不属于原系列,但借助了原系列的项目背景,故命名外传系列,以后也可能在这个系列中附加一些新的技术. 前言 在Web Api 2.0中,提出了一种新的配置路由方式--基于特性的路由(Attribute-based Routing),在我们之前

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【七】——实现资源的分页

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[七]--实现资源的分页 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这篇文章我们将使用不同的方式实现手动分页(关于高端大气上档次的OData本文暂不涉及,但有可能会在系列的后期介绍,还没确定...),对于分页的结果,我们将采用2种不同的方式响应给客户端(1.将分页元数据封装在响应Body中2.在http响应报文头部添加分页信息). 众所周知,在服务器端一