`

小型 Twitter 的系统 源碼+註釋,PHP

    博客分类:
  • PHP
阅读更多

 

今天重新吧 小型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" );
?>



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics