ʹÓÃ
PHP ÇáËɵؽ«ÀàËÆ Twitter µÄ΢²©¿Í¹¦ÄÜÌí¼Óµ½Ó¦ÓóÌÐòÖÐ
ѧϰÈçºÎʹÓà PHP ΪӦÓóÌÐòÌí¼ÓÀàËÆ Twitter µÄ½çÃæ¡£¾ßÌåÀ´½²£¬ÎÒÃǽ«Õ¹Ê¾ÈçºÎÔÊÐíÓû§·¢Ìù£¬½«Ìù×Óת·¢¸øÏ£Íû½ÓÊյįäËûÓû§£¬ÒÔ¼°ÔÊÐíÓû§Ñ¡Ôñ×·ËæÆäËûÓû§µÄÌù×Ó¡£
Èç¹ûÄúÔø¾ÁôÒâ¹ý£¬¾Í»áÖªµÀ Twitter ÊÇ Web 2.0 ÊÀ½ç×î´óµÄºä¶¯Ê¼þÖ®Ò»¡£¼òµ¥À´Ëµ£¬Twitter£¨Twitter.com
ÉÏÌṩµÄÒ»¸ö·þÎñ£©ÊÇÒ»¸ö¼òµ¥µÄ΢²©¿Í·þÎñ£¬Óû§¿ÉÒÔ·¢×î¶à 140 ¸ö×Ö·ûµÄÌù×Ó£¨³Æ×÷ tweet£©£¬»Ø´ð
¡°ÄãÏÖÔÚÔÚ×öʲô?¡± Ö®ÀàµÄÎÊÌâ¡£Óû§¿ÉÒÔ×·ËæËûÃǸÐÐËȤµÄÈË£¬Ò²ÓÐ×Ô¼ºµÄ×·ËæÕß¡£Í¨¹ýÕâÖÖ·½Ê½£¬¿ÉÒÔ½«ÐÅÏ¢·¢²¼¸ø×·ËæÕß»òÊǹ㷺µØ×ª·¢¡£
ËæÒâä¯ÀÀÒ»ÏÂij¸ö Twitter ÕË»§¿ÉÒÔ·¢ÏÖ£¬Óû§³£³£·¢²¼¹ØÓںܶ಻ͬ»°ÌâµÄ
tweet£¬´ÓÈÕ³£Éú»î£¨ÀýÈç ¡°ÎÒÔÚ³ÔÈýÃ÷ÖΡ±£©µ½¸ü²»Æ½·²µÄ»°Ìâ¡£ÆäÖг£³£Ç¶ÈëÁËͼÏñ¡¢Ã½ÌåÎļþºÍÈÕÖ¾µÄÁ´½Ó¡£ÕâЩ
URL ³£³£±» TinyURL Ö®ÀàµÄ·þÎñËõ¶Ì£¬Ö÷ÒªÊÇΪÁËʹÌù×ÓµÄ×Ü×Ö·ûÊý²»³¬¹ý 140 ¸ö×Ö·û¡£
ºÜ¶àÈËϲ»¶ÉÏÁË Twitter£¬Ê¹³¬¶Ì¸ñʽ³ÉÁËÒ»ÖÖÒÕÊõÐÎʽ£¬ÉõÖÁ½«Ö®ÓÃÓÚÓëÆäËûÓû§½»Ì¸£¨ÀýÈ罫ËûÃÇµÄÆÀÂÛ¶¨Ïòµ½
@user£©¡£´ÓÕâ¸ö¼òµ¥µÄÆðµã¿ªÊ¼£¬Ó¿ÏÖÁË´óÁ¿Ö§³Ö Twitter µÄÒÆ¶¯Ó¦ÓóÌÐòºÍÆäËû¹¤¾ß¡£ÏÖÔÚÉõÖÁ»¹ÓÐרÃÅΪ×îÓÐȤ¡¢×î׿ԽºÍ×îÏêʵµÄ
tweet ¶øÉèÖõĽ±ÏÁíÍ⻹Óиú×Ù²»Í¬ Twitter Ó¦ÓóÌÐòµÄ״̬µÄÔÚÏßÓ¦ÓóÌÐò¡£
ºÜ¶àÆäËûÕ¾µãºÍ·þÎñ£¬ÀýÈç LinkedIn ºÍ Facebook ÏÖÔÚÔÊÐíÓû§Ó÷ÂÕÕ
Twitter µÄ·½Ê½¸üÐÂËûÃǵĵ±Ç°×´Ì¬¡£»»¾ä»°Ëµ£¬ÔÚ Facebook ¸üÐÂ״̬ÐèҪʹÓöÌÏûÏ¢£¬µ±È»£¬×´Ì¬Í¨³£Êǻشð
¡°ÄãÏÖÔÚÔÚ¸Éʲô¡± Ö®ÀàµÄÎÊÌâ¡£
ΪÄú×Ô¼ºµÄÕ¾µãÌí¼Ó΢²©¿Í»ò״̬¸üй¤¾ß²»ÐèÒª×öºÜ¶à¹¤×÷£¬µ«ÊÇÈ´¿ÉÒÔΪÓû§´øÀ´ÀÖȤºÍ¼òµ¥µÄ½»Á÷·½Ê½¡£±¾ÎĵÄÄ¿±êÊÇչʾÈçºÎʵÏÖÕâ¸öÄ¿µÄ¡£µ«ÊÇ£¬Ê×ÏÈÐèÒª¶ÔÄú×÷һЩ¼ÙÉè¡£
Ê×ÏÈ£¬¼ÙÉèÄú¶Ô PHP ºÍ MySQL ÓÐËùÁ˽⡣ͬʱ¼ÙÉèÄú¿ÉÒÔ·ÃÎÊij¸öÔËÐÐ
PHP ºÍ MySQL µÄ±¾µØ Apache Web ·þÎñÆ÷¡£¶ÔÓÚ±¾ÎÄ£¬ÎÒÔÚʹÓà Macintosh¡¢Apache¡¢MySQL
ºÍ PHP£¨MAMP£©µÄ MacBook Products ÉϽøÐпª·¢£¬Õâ¸öÃâ·Ñ³ÌÐò½«Õû¸ö¿ª·¢»·¾³´ò°üµ½Ò»¸ö°üÖС£µ«ÊÇ£¬ÄúÓ¦¸ÃÄܹ»ºÁÎÞÀ§ÄѵØÔÚ
Microsoft? Windows? »ò Linux? ÉϽøÐпª·¢¡£×îºó£¬¼ÙÉèÄúÒѾÓÐÒ»¸ö¿ÉÒÔÁ¢¼´ÔËÐеÄÓ¦ÓóÌÐò£¬¸ÃÓ¦ÓóÌÐòÏÖÔÚÓÐһЩÓû§£¬Äú´òËãÒÔijÖÖ·½Ê½½«Î¢²©¿Í»ò
tweeting Ìí¼Óµ½¸ÃÓ¦ÓóÌÐòÖС£Îª´Ë£¬ÎÒ¼ò»¯Ó¦ÓóÌÐòÖвàÖØÓû§µÄһЩ·½Ã棨ÀýÈçµÇ¼¡¢¹ÜÀí¸öÈËÎļþµÈ£©£¬¶ø²àÖØÓÚÌù×Ó¡£
Éè¼ÆÓ¦ÓóÌÐòµÄºó¶Ë
¼òÑÔÖ®£¬Twitter ·þÎñÒÔÁ½¸öÃû´ÊΪÖÐÐÄ£ºÓû§ºÍÏûÏ¢¡£Èç¹ûÄúÒѾ¹¹½¨ÁËÒ»¸öÓ¦ÓóÌÐò£¬²¢ÇÒÏ£Íû½«ÀàËÆ
Twitter µÄ·þÎñÌí¼Óµ½Ó¦ÓóÌÐòÖУ¬ÄÇôºÜ¿ÉÄÜÒѾÓÐÁËÓû§¹ÜÀí¹¦ÄÜ¡£Èç¹û»¹Ã»ÓУ¬ÄÇôÐèÒª²ÉÓÃijÖÖ·½Ê½Ê¹ÓÃÒ»¸öÊý¾Ý¿â±í£¨Ò»¸öÖ÷¼ü£¬Í¨³£ÊÇÒ»¸öÕûÊý£©¡¢Ò»¸öÓû§Ãû£¨Ò²ÊÇΩһµÄ£©¡¢Ò»¸öµç×ÓÓʼþµØÖ·ºÍÃÜÂëµÈ±êʶÿ¸öÓû§¡£
tweet£¨¼´Ìù×Ó£©´æ´¢ÔÚÒ»¸ö posts ±íÖУ¬Ã¿¸öÌù×ÓÓÐÒ»¸öÖ÷¼ü£¨Ä³ÖÖÁ¬ÐøÕûÊý£©¡¢Ò»¸öÖ¸Ïò·¢³ö¸ÃÌùµÄÓû§µÄÍâ¼ü¹ØÏµ¡¢Ìù×Ó±¾Éí£¨ÏÞÖÆÎªÒ»¶¨ÊýÁ¿µÄ×Ö·û£©ºÍÈÕÆÚ/ʱ¼ä´Á¡£
×îÈÝÒ×ÁîÈ˸е½ÃÔ»óµÄÊÇÏÔʾÓû§×·Ëæ¹ØÏµµÄÊý¾Ý¿â±í¡£ÕâÀïÐèҪijÖÖ·½Ê½¼Ç¼Óû§
ID ºÍ×·ËæÕß ID£¬Ê¹Ó¦ÓóÌÐòÄܹ»¿ìËÙ½¨Á¢×·ËæÕßÁÐ±í£¬²¢ÇáËɵؽ«ÐÅϢת·¢¸øÄÇЩÒÑ×¢²áÎªÒª×·ËæÄ³Óû§µÄÆäËûÓû§¡£
Àí½âÕâЩÄÚÈݺó£¬ÏÖÔھͿÉÒÔ×ÅÊÖ½¨Á¢Õâ 3 ¸öÊý¾Ý¿â±í¡£Ê¹ÓÃÇåµ¥ 1 ÖеÄ
SQL ´úÂë´´½¨µÚÒ»¸ö±í£¬¼´ users ±í£¨Èç¹ûÒѾÓÐÒ»¸ö users ±í£¬Ôò¿ÉÒÔÌø¹ýÕâÒ»²½£©¡£
Çåµ¥ 1. users
CREATE TABLE `users` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `username` VARCHAR( 255 ) NOT NULL , `email` VARCHAR( 255 ) NOT NULL , `password` VARCHAR( 8 ) NOT NULL , `status` ENUM( 'active', 'inactive' ) NOT NULL ) ENGINE = MYISAM ; |
ÏÂÃæÊǵڶþ¸ö±í£¬¼´ posts ±í¡£
Çåµ¥ 2. posts ±í
CREATE TABLE `posts` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `user_id` INT NOT NULL , `body` VARCHAR( 140 ) NOT NULL , `stamp` DATETIME NOT NULL ) ENGINE = MYISAM ; |
Çåµ¥ 3 ÏÔʾÁË×îºóÒ»¸ö±í£¬¼´ following ±í¡£×¢ÒâÕâ¸ö±íÓÐÁ½¸öÖ÷¼ü¡£
Çåµ¥ 3. following ±í
CREATE TABLE `following` ( `user_id` INT NOT NULL , `follower_id` INT NOT NULL , PRIMARY KEY ( `user_id` , `follower_id` ) ) ENGINE = MYISAM ; |
È»ºó£¬ÏÈ´´½¨Ò»¸öÃûΪ header.php µÄÎļþ£¬½«ËùÓÐÓÃÓÚ MySQL
µÄÁ¬½Ó×Ö·û´®·Åµ½¸ÃÎļþÖС£Èç¹ûÒѾÓÐÒ»¸öÕâÑùµÄÎļþ£¬¿ÉÒÔÌø¹ýÕâÒ»²½¡£ÇëÎñ±ØÔÚ¸÷´¦¶¼°üÀ¨Õâ¸öÎļþ£¬ÒòΪ½«À´ÐèÒªÓõ½Ëü¡£Çåµ¥
4 չʾÁËÕâ¸öÎļþµÄÄÚÈÝ¡£
Çåµ¥ 4. ÑùÀý header.php ÎÄ
$SERVER = 'localhost'; $USER = 'username'; $PASS = 'password'; $DATABASE = 'microblogger';
if (!($mylink = mysql_connect( $SERVER, $USER,
$PASS))){
echo "<h3>Sorry, could not connect
to database.</h3><br/>
Please contact your system's admin for more help\n";
exit;
}
mysql_select_db( $DATABASE ); |
Çë¼Çס£¬»¹¿ÉÒÔËæÒ⽫ÈÎºÎÆäËûÀàÐ͵ݲȫ¼ì²éÌí¼Óµ½Õâ¸ö header.php
ÎļþÖС£ÀýÈ磬¿ÉÒÔ¼ì²éÒ»¸ö»á»°±äÁ¿ÖÐÊÇ·ñÉèÖÃÁËÒ»¸öÓû§ ID£¨±íÃ÷¸ÃÓû§ÒѾµÇ¼£©¡£Èç¹ûÓû§Ã»ÓеǼ£¬ÄÇô¿ÉÒÔ½«Óû§Öض¨Ïòµ½µÇÂ¼Ò³Ãæ¡£±¾ÎIJ»»áÉîÈëÌÖÂÛÕâÒ»µã£¬²»¹ýÐèҪʱ¿ÉÒÔºÜÈÝÒ×µØÌí¼Ó°²È«¼ì²é¡£
´´½¨ÊäÈë±íµ¥
ÉèÖúúó¶Ë±íÖ®ºó£¬¾Í¿ÉÒÔ¿¼ÂÇ´¦ÀíÊý¾Ý²åÈëºÍ¸üÐ嵀 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 ÎļþÖУ¬²¢ÔÚÖ÷Ò³ÉÏʹÓÃËü¡£
Ìí¼ÓһϵÁеĸüÐÂ
ÏÖÔÚ¿ÉÒÔ´ò¿ª functions.php Îļþ²¢ÔÚÆäÖÐÌí??ÁíÒ»¸öº¯Êý¡£ÕâÒ»´Î£¬½«º¯ÊýÃüÃûΪ
show_posts()¡£Ëü½«ÏÔÊ¾ÌØ¶¨Óû§ ID µÄËùÓÐÌù×Ó£¬ÈçÏÂÃæµÄÇåµ¥Ëùʾ¡£
Çåµ¥ 8. show_posts() º¯Êý
function show_posts($userid){ $posts = array();
$sql = "select body, stamp from posts
where user_id = '$userid' order by stamp desc";
$result = mysql_query($sql);
while($data = mysql_fetch_object($result)){
$posts[] = array( 'stamp' => $data->stamp,
'userid' => $userid,
'body' => $data->body
);
}
return $posts;
} |
Èç¹ûΪÕâ¸öº¯Êý´«µÝÒ»¸öÓû§ ID£¬Ëü½«ÔÚÒ»¸ö¶àάÊý×éÖа´ÈÕÆÚµ¹ÐòµÄ˳Ðò·µ»ØÄǸöÓû§·¢³öµÄÌù×Ó¡£ÒªÊ¹Óøú¯Êý£¬Ö»ÐèÔÚ
index.php Éϵ÷ÓÃËü£¬²¢¼ìË÷ÄǸöÓû§µÄËùÓÐÌù×Ó¡£ÓÉÓÚ¶ÔÓÚÿ¸ö¼Ç¼ֻÐè´¦ÀíÉÙÁ¿µÄÊý¾Ý£¬ÕâÖÖ²éѯ¿ÉÒԺܺõؽøÐÐÀ©Õ¹¡£
Çåµ¥ 9 ÊÇÌí¼Óµ½ index.php Ò³ÃæµÄ´úÂ룬ÕâЩ´úÂë¾Í·ÅÔÚÇ°ÃæÌí¼ÓµÄ±íµ¥Ö®ºó¡£Í¨¹ýʹÓÃ
show_posts() º¯ÊýºÍ»á»°±äÁ¿£¬¿ÉÒÔ»ñµÃµÇ¼µÄÓû§·¢³öµÄËùÓÐÌù×Ó¡£Èç¹ûûÓÐÌù×Ó£¬ÔòÏÔʾijÖÖ´íÎóÏûÏ¢¡£Èç¹ûÓÐÌù×Ó£¬ÔòÔÚÒ»¸ö±íÖÐÖð¸öÏÔʾËüÃÇ
¡ª »òÕߣ¬Èç¹ûÏë±ðÖÂÒ»µã£¬¿ÉÒÔʹÓÃ×Ô¼ºµÄ¼¶ÁªÑùʽ±í£¨CSS£©¡£
Çåµ¥ 9. ÔÚ index.php Ò³ÃæÉÏÏÔʾÌù×Ó
<?php $posts = show_posts($_SESSION['userid']);
if (count($posts)){
?>
<table border='1' cellspacing='0' cellpadding='5'
width='500'>
<?php
foreach ($posts as $key => $list){
echo "<tr valign='top'>\n";
echo "<td>".$list['userid'] ."</td>\n";
echo "<td>".$list['body'] ."<br/>\n";
echo "<small>".$list['stamp']
."</small></td>\n";
echo "</tr>\n";
}
?>
</table>
<?php
}else{
?>
<p><b>You haven't posted anything
yet!</b></p>
<?php
}
?> |
ͼ 1 ÏÔʾµ½Ä¿Ç°ÎªÖ¹µÄ»ù±¾½çÃæ ¡ª »¹²»´í£¬¼¸·ÖÖÓ¾ÍÓÐÕâÑùµÄ³É¼¨¡£

ͼ 1. »ù±¾½çÃæ
ÈÝÒ׵IJ¿·Ö¾ÍÍê³ÉÁË¡£ÏÖÔÚÓÐÁËÒ»¸ö»ù±¾µÄÓ¦ÓóÌÐò£¬Óû§¿ÉÒÔ·¢²¼×´Ì¬£¬²¢¿´µ½ËüÔÚÒ³ÃæÉÏÏÔʾ¡£µ«ÊÇ£¬»¹È±ÉÙÒ»¸öÖØÒªµÄ²¿·Ö£º³ýÁË·¢²¼×´Ì¬µÄÈËÒÔÍ⣬ûÓÐÈË¿´µ½×´Ì¬¸üС£ÔÚÏÂÒ»½ÚÖУ¬½«´´½¨Ò»¸ö¼òµ¥µÄ½çÃæ£¬ÆäÖÐÁгöϵͳÖеÄËùÓÐÓû§£¬²¢ÇÒÔÊÐíÒѵǼµÄÓû§×·ËæÆäËûÓû§²¢¿´µ½ËûÃǵÄ״̬¸üС£
×·ËæÆäËûÓû§
½ÓÏÂÀ´¿ÉÒÔ½«¸ü¶à¶«Î÷Ìí¼Óµ½ 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'>
<?php
foreach ($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 ÉÏÔËÐÐÕâ¸öº¯Êý£¬¼ì²éij¸öÓû§ ID ÊÇ·ñÔÚ¸ÃÊý×éÖС£Èç¹ûÔÚ£¬ÔòʹÓÃ
unfollow Á´½Ó¡£Èç¹û²»ÔÚ£¬ÔòʹÓÃĬÈ쵀 follow Á´½Ó¡£Çåµ¥ 13 ÏÔʾÐ޸ĺóµÄ´úÂë¡£
Çåµ¥ 13. Ð޸ĺóµÄ users.php Îļþ£¬Ëü½«ÏÔʾ follow
ºÍ unfollow Á´½Ó
<?php $users = show_users(); $following = following($_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 Îļþ
<?php session_start(); include_once("header.php"); include_once("functions.php");
$id = $_GET['id'];
$do = $_GET['do'];
switch ($do){
case "follow":
follow_user($_SESSION['userid'],$id);
$msg = "You have followed a user!";
break;
case "unfollow":
unfollow_user($_SESSION['userid'],$id);
$msg = "You have unfollowed a user!";
break;
}
$_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() º¯Êý
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($_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
}
?> |
Ìí¼ÓÆäËûÓû§?Ìù×Ó
Òª½«ÆäËûÓû§µÄÌù×ÓÌí¼Óµ½Ò»¸öÓû§µÄʱ¼ä±í£¨timeline£©ÉÏ£¬Ö»ÐèÖØÓÃ֮ǰ±àдµÄһЩ´úÂë¡£ÀýÈ磬ÏÖÔÚÒѾ֪µÀÈçºÎ»ñµÃµ±Ç°Óû§ÕýÔÚ×·ËæµÄÓû§µÄÁÐ±í¡£Ò²ÖªµÀÈçºÎ»ñµÃij¸öÓû§·¢³öµÄËùÓÐÌù×Ó¡£Òò´ËÖ»ÐèÉÔ΢Ð޸ĺóÒ»¸öº¯Êý£¬Ê¹Ö®Äܹ»½ÓÊÜÒ»¸öÓû§ÁÐ±í£¬¶ø²»Êǵ¥¸öÓû§¡£
ÏÖÔÚÖ»ÐèÔÚ index.php ÎļþÖн«µÚÒ»¸öº¯ÊýÉÏÒÆÒ»µã£¬ÒÔ±ãÂíÉÏʹÓÃËü£¬È»ºóʹÓÃͨ¹ý¸Ãº¯Êý»ñµÃµÄÓû§
ID ÁÐ±í£¬´ÓËûÃǵÄʱ¼ä±íÖлñȡһ¶¨ÊýÁ¿µÄÌù×Ó ¡ª ÕâÀï²»ÐèÒªËùÓеÄÌù×Ó£¬Ö»Ðè 5 ¸ö×óÓÒ¡£¼Çס£¬Òª°´ÈÕÆÚµ¹Ðò£¨×î½üµÄÔÚÉÏ£©ÅÅÁÐÄÇЩÓû§µÄÌù×Ó¡£
Ê×ÏÈ£¬Îª show_posts() º¯ÊýÔö¼ÓÒ»¸ö limit ²ÎÊý£¬½«ËüµÄֵĬÈÏΪ
0¡£Èç¹û limit ´óÓÚ 0£¬Ôò½«Ò»¸öÏÞÖÆÖµÌí¼Óµ½ÓÃÓÚ¼ìË÷Ìù× SQL Óï¾äÖС£ÁíÍâÒª×öµÄÊǽ« $userid
²ÎÊý·ÅÈëµ½Ò»¸öÊý×éÖУ¬²¢½«¸ÃÊý×é½âÎöµ½Ò»¸öÒÔ¶ººÅ·Ö¸ôµÄ×Ö¶ÎÖУ¬×îºó½«¸Ã×ֶδ«µÝ¸ø SQL Óï¾ä¡£ÕâÐèÒª×öÒ»µã¶îÍ⹤×÷£¬µ«ÊÇ¿ÉÒÔ»ñµÃ·áºñµÄ»Ø±¨£¬ÒòΪÈçÄúËù¼û£¬ËùÓÐÌù×Ó¶¼½«ÒÔµ¹ÐòÏÔʾ¡£
Çåµ¥ 18. ¸üРshow_posts()£¬ÒÔ½ÓÊÜÒ»¸öÓû§Êý×é
function show_posts($userid,$limit=0){ $posts = array();
$user_string = implode(',', $userid);
$extra = " and id in ($user_string)";
if ($limit > 0){
$extra = "limit $limit";
}else{
$extra = '';
}
$sql = "select user_id,body, stamp from
posts
where user_id in ($user_string)
order by stamp desc $extra";
echo $sql;
$result = mysql_query($sql);
while($data = mysql_fetch_object($result)){
$posts[] = array( 'stamp' => $data->stamp,
'userid' => $data->user_id,
'body' => $data->body
);
}
return $posts;
} |
ÏÖÔڻص½ index.php Îļþ£¬½«²»Ö¹Ò»¸öÓû§ ID ´«µÝ¸ø show_posts()£¬ÈçÏÂÃæµÄÇåµ¥Ëùʾ¡£ÕâÆäʵºÜ¼òµ¥£¬ÒòΪÒѾÊÕ¼¯µ½ÁËÕâЩÓû§¡£ÏÖÔÚÖ»ÐèʹÓÃ
array_keys() È¡³ö¼üÖµ£¬½«»á»°±äÁ¿¼Óµ½Êý×éÖС£ÕâÑù£¬´«µÝµÄÊý×é×îÉÙ°üº¬Ò»¸öÖµ£¨ÒѵǼµÄµ±Ç°Óû§µÄ
ID£©£¬×î¶àÔò°üº¬µ±Ç°Óû§ ID ºÍ¸ÃÓû§×·ËæµÄÿ¸öÓû§µÄ ID¡£
Çåµ¥ 19. ½«Ò»¸öÓû§Êý×é´«µÝ¸ø show_posts() º¯Êý
$users = show_users($_SESSION['userid']); if (count($users)){ $myusers = array_keys($users); }else{ $myusers = array(); } $myusers[] = $_SESSION['userid'];
$posts = show_posts($myusers,5); |
½áÊøÓï
ÔÚ±¾ÎÄÖУ¬ÄúѧϰÁËÈçºÎ¹¹½¨Ò»¸ö¼òµ¥µÄ»ùÓÚ PHP µÄ΢²©¿Í·þÎñ£¬¸Ã·þÎñÀàËÆÓÚ
Twitter ºÍ Facebook ״̬¸üй¤¾ß¡£Èç¹ûÒ»ÇÐ˳ÀûµÄ»°£¬Äú¾Í¿ÉÒԵõ½ÏÖÔÚÕâÑùµÄ³É¹û£¬²¢½«ËüÌí¼Óµ½ÄúµÄÓ¦ÓóÌÐòÖУ¬²¢¸ù¾ÝÐèÒª¼ÓÒÔ¶¨ÖÆ¡£
|