今天重新吧 小型twitter系統的源碼 認真研究了一邊 算是熟悉php把
爲今後一個月的畢業設計做打算
下載
http://dl.vmall.com/c0nkwafdqz
index
<?php
session_start ();
include_once ('header.php');
include_once ('functions.php');
$_SESSION ['userid'] = 1;//设置session真正情况是在登录的时候设置
?>
<!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>
<p>
<a href='users.php'>see list of users</a>
</p>
<?php
if (isset ( $_SESSION ['message'] )) {//如果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>
<?php
$users = show_users($_SESSION['userid']);//显示用户follow的用戶
if (count($users)){
$myusers = array_keys($users);//返回數組中所有的key
}else{
$myusers = array();
}
$myusers[] = $_SESSION['userid'];//應該在myusers數據末尾添加用戶自己
$posts = show_posts($myusers,5);//顯示用戶follow用戶的五條post
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
}
?>
<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
}
?>
</form>
</body>
</html>
headers
<?php
$SERVER = 'localhost:3306';
$USER = 'root';
$PASS = 'root';
$DATABASE = 'tweet';
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 );
?>
users
<?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 ();
$following = following(1);
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";//顯示id
echo "<td>" . $value;//顯示id對應的值也就是value
if (in_array ( $key, $following )) {//檢查key是否在following中 然后根据状态显示不同的值显示不同的信息 生成不同的指向action的链接
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";
}
?>
</table>
<?php
} else {
?>
<p>
<b>There are no users in the system!</b>
</p>
<?php
}
?>
</body>
</html>
<?php
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 );
}
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;
}
/**
* 显示用户
* 如果user_id =0,直接显示所有用户
* 如果user id >0,显示改用户follow的用户id
* @param unknown_type $user_id
* @return multitype:|multitype:NULL
*/
function show_users($user_id = 0) {
if ($user_id > 0) {
$follow = array ();
$fsql = "select user_id from following
where follower_id='$user_id'";//從follow中選出該id的follower
$fresult = mysql_query ( $fsql );
while ( $f = mysql_fetch_object ( $fresult ) ) {//把結果作爲一個對象傳入
array_push ( $follow, $f->user_id );//把f中的user_id字段放到follow中
}
if (count ( $follow )) {
$id_string = implode ( ',', $follow );//以","作爲分割符來加工這個字符串,爲了拼接後面的sql
$extra = " and id in ($id_string)";
} else {
return array ();
}
}
$users = array ();
$sql = "select id, username from users
where status='active'
$extra order by username";//從user表中選出follower的 id 和 name
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_object ( $result ) ) {
$users [$data->id] = $data->username;//想user中填入用戶名
}
return $users;
}
/**
* 搜索出用户follow的用户的id
* @param unknown_type $userid
* @return multitype:
*/
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;
}
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 );
}
}
?>
add
<?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" );
?>
<?php
session_start ();
include_once ("header.php");
include_once ("functions.php");
/**
处理follow动作
*/
$id = $_GET ['id'];//获取get 方法传来的值 $_POST是post
$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;//在session中发送信息
header ( "Location:index.php" );
?>