我有一个网站,我正在用两个用户流构建。我有朋友的代码,它只是使用伪代码的情况,否则如果语句在正确的位置。只有它让我绞尽脑汁。
我需要的是,当我user1_id访问您时,user2_ids如果我们不是朋友,它会隐藏表单和流,并告诉我在查看之前添加您。显示您已添加此好友,但好友尚未接受...或者显示表单并直播,如果我们是朋友。
这是所有代码
这是为了确定我的用户及其工作。
<?
$user1_id=$_SESSION['id'];
if($_SESSION['id']==$user1_id){
define('user_isself','2');
}else{
define('user_isself','1');
}
$friends = rawfeeds_user_core::check_active_friends($id,$_SESSION['id']);
define('USER_BEFRIENDED',$friends);
?>
这是我的两个提要的代码,第一个提要来自第一个提要是user1_ids提要,第二个提要是user2_id提要。
<?php if($user2_id==$_SESSION['id']){ ?>
<div id="statusholder">
<div class="divider">
<h2>Post a status</h2>
<form action="insert.php" method="POST" target="ifr1" class="form_statusinput">
<input type="hidden" name="toid" value="<?php echo $user1_id ?>">
<input type="text" name="newmsg" id="newmsg" class="homescreen_status_input" placeholder="Say something" autocomplete="off">
<iframe name="ifr1" id="ifr1" style="display:none;"></iframe>
<input type="submit" target="ifr1" value="Share" >
</form>
</div></div>
<?php
//FRIENDSHIPS
$following_string = $_SESSION['id'];
$sql_follows="SELECT * FROM friends WHERE user1_id=".$_SESSION['id']." AND status=2 OR user2_id=".$_SESSION['id']." AND status=2";
$query_follows=mysql_query($sql_follows) or die("Error finding friendships");
if($query_follows>0){
$friendlist="(".$_SESSION['id'].",";
$t=0;
while ($follow=mysql_fetch_array($query_follows))
{
if($follow['user1_id']==$_SESSION['id']){
if($t>0){
$friendlist=$friendlist.",";
}
$friendlist = $friendlist. $follow['user2_id'];
}else{
if($t>0){
$friendlist=$friendlist.",";
}
$friendlist = $friendlist. $follow['user1_id'];
}
$t=$t+1;
}
$friendlist=$friendlist.")";
}
//STREAMDATA
$badcall = "(".$_SESSION['id'].",)";
if($friendlist==$badcall){
$friendlist="(".$_SESSION['id'].")";
}
//FRIENDSHIPS
$user1_id;
if(isset($data['id'])){
$user2_id = $data['id'];
}else{
$user1_id = $_SESSION['id'];
}
$following_string = $_SESSION['id'];
$sql_follows="SELECT * FROM friends WHERE user1_id=".$user1_id." OR user2_id=".$user2_id;
$query_follows=mysql_query($sql_follows) or die("Error finding friendships");
while ($follow=mysql_fetch_array($query_follows))
{
if($follow['user2_id']==$_SESSION['id']){
$following_string = $following_string. " OR streamitem_creator =" . $follow['user1_id']." OR streamitem_target=".$follow['user1_id'];
}else{
$following_string = $following_string. " OR streamitem_creator =" . $follow['user2_id']." OR streamitem_target=".$follow['user2_id'];
}
}
//STREAMDATA
$call="SELECT * FROM streamdata WHERE streamitem_target = " . $user1_id ." AND streamitem_type_id NOT IN ('2') ORDER BY streamitem_timestamp DESC LIMIT 15";
$chant= mysql_query($call) or die(mysql_error());
$num = mysql_num_rows($chant);
if($num>0){
while($streamitem_data = mysql_fetch_array($chant)){
echo'<div id="statusholder"><div class="divider">';
if($streamitem_data['streamitem_type_id'] == 1||$streamitem_data['streamitem_type_id'] == 3){
echo "<img class='stream_profileimage' style='border:none;padding:0px;display:inline;' src='";rawfeeds_user_core::output_profile_image_url($streamitem_data['streamitem_creator']);echo "' onerror='this.src="/img/no_profile_img.jpeg";'>
";
$poster_name = rawfeeds_user_core::getuser($streamitem_data['streamitem_creator']);
$target_name = rawfeeds_user_core::getuser($streamitem_data['streamitem_target']);
$cont = stripslashes($streamitem_data['streamitem_content']);
if(!($streamitem_data['streamitem_type_id']==2)){
$cont = htmlentities($cont);
$cont = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a class='user_link' href="\0">\0</a>", $cont);
}
if($streamitem_data['streamitem_creator']==$streamitem_data['streamitem_target']){
echo "<a href='/sn-profile.php?user1_id=".$poster_name['id']."'>" . $poster_name['fullusersname']."</a><span class='subtleLink'> said </span>";
}else{
echo "<a href='/sn-profile.php?user1_id=".$poster_name['id']."'>" .$poster_name['fullusersname']."</a>
<span class='subtleLink'>wrote</span>";
}
echo "<br/><a href='#' class='subtleLink' style='font-weight:normal;'>".Agotime($streamitem_data['streamitem_timestamp'])."</a><hr>";
if($streamitem_data['streamitem_type_id']==2){
$cont = nl2br($cont);
echo "<div style='display:inline;'><span class='subtleLink'>".$cont."</span> </div>";
}else{
if($streamitem_data['streamitem_creator']==$streamitem_data['streamitem_target']){
$cont = nl2br($cont);
echo "<div>".$cont."</div>";
}else{
$cont = nl2br($cont);
echo "<div>".$cont."</div>";
}
echo"</div></div>";
}}}
?>
<div class="stream_show_posts" onClick="global_streamcount=global_streamcount+10;refreshstream();">Show More Posts</div>
<?php
}else{
echo "<div class='global_softerror'>No posts yet!</div>";
}
}else{
?>
-----------------------------------------START OF USER2_ID'S STREAM-------
<div id="statusholder">
<div class="divider">
<h2>Post on <?php echo $data['fullusersname']; ?>'s stream</h2>
<form action="insert.php" method="POST" target="ifr2" class="form_statusinput">
<input type="hidden" name="toid" value="<?php echo $user2_id ?>">
<input type="text" name="newmsg" id="newmsg" class="homescreen_status_input" placeholder="Say something" autocomplete="off">
<iframe name="ifr2" id="ifr2" style="display:none;"></iframe>
<input type="submit" target="ifr2" value="Share" >
</form>
</div></div>
<?php
//FRIENDSHIPS
$following_string = $_SESSION['id'];
$sql_follows="SELECT * FROM friends WHERE user2_id=".$_SESSION['id']." AND status=2 OR user1_id=".$_SESSION['id']." AND status=2";
$query_follows=mysql_query($sql_follows) or die("Error finding friendships");
if($query_follows>0){
$friendlist="(".$_SESSION['id'].",";
$t=0;
while ($follow=mysql_fetch_array($query_follows))
{
if($follow['user2_id']==$_SESSION['id']){
if($t>0){
$friendlist=$friendlist.",";
}
$friendlist = $friendlist. $follow['user1_id'];
}else{
if($t>0){
$friendlist=$friendlist.",";
}
$friendlist = $friendlist. $follow['user2_id'];
}
$t=$t+1;
}
$friendlist=$friendlist.")";
}
//STREAMDATA
$badcall = "(".$_SESSION['id'].",)";
if($friendlist==$badcall){
$friendlist="(".$_SESSION['id'].")";
}
date_default_timezone_set("GMT");
//FRIENDSHIPS
$user1_id;
if(isset($data['id'])){
$user2_id = $data['id'];
}else{
$user1_id = $_SESSION['id'];
}
$following_string = $_SESSION['id'];
$sql_follows="SELECT * FROM friends WHERE user2_id=".$user2_id." OR user1_id=".$user1_id;
$query_follows=mysql_query($sql_follows) or die("Error finding friendships");
while ($follow=mysql_fetch_array($query_follows))
{
if($follow['user1_id']==$_SESSION['id']){
$following_string = $following_string. " OR streamitem_creator =" . $follow['user2_id']." OR streamitem_target=".$follow['user2_id'];
}else{
$following_string = $following_string. " OR streamitem_creator =" . $follow['user1_id']." OR streamitem_target=".$follow['user1_id'];
}
}
//STREAMDATA
$call="SELECT * FROM streamdata WHERE streamitem_target = " . $user2_id ." AND streamitem_type_id NOT IN ('2') ORDER BY streamitem_timestamp DESC LIMIT 15";
$chant= mysql_query($call) or die(mysql_error());
$num = mysql_num_rows($chant);
if($num>0){
while($streamitem_data = mysql_fetch_array($chant)){
echo'<div id="statusholder">
<div class="divider">';
if($streamitem_data['streamitem_type_id'] == 1||$streamitem_data['streamitem_type_id'] == 3){
echo "<img class='stream_profileimage' style='border:none;padding:0px;display:inline;' src='";rawfeeds_user_core::output_profile_image_url($streamitem_data['streamitem_creator']);echo "' onerror='this.src="/img/no_profile_img.jpeg";'>
";
$poster_name = rawfeeds_user_core::getuser($streamitem_data['streamitem_creator']);
$target_name = rawfeeds_user_core::getuser($streamitem_data['streamitem_target']);
$cont = stripslashes($streamitem_data['streamitem_content']);
if(!($streamitem_data['streamitem_type_id']==2)){
$cont = htmlentities($cont);
$cont = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a class='user_link' href="\0">\0</a>", $cont);
}
if($streamitem_data['streamitem_creator']==$streamitem_data['streamitem_target']){
echo "<a href='/profile.php?username=".$poster_name['username']."'>" . $poster_name['fullusersname']."</a><span class='subtleLink'> said </span>";
}else{
echo "<a href='/profile.php?username=".$poster_name['username']."'>" .$poster_name['fullusersname']."</a>
<span class='subtleLink'>wrote</span>";
}
echo "<br/><a href='#' class='subtleLink' style='font-weight:normal;'>".Agotime($streamitem_data['streamitem_timestamp'])."</a><hr>";
if($streamitem_data['streamitem_type_id']==2){
$cont = nl2br($cont);
echo "<div style='display:inline;'><span class='subtleLink'>".$cont."</span> </div>";
}else{
if($streamitem_data['streamitem_creator']==$streamitem_data['streamitem_target']){
$cont = nl2br($cont);
echo "<div>".$cont."</div>";
}else{
$cont = nl2br($cont);
echo "<div>".$cont."</div>";
}
echo'</div>';
}}
}
}else{
echo "<div class='global_softerror'>No posts yet!</div>";
}
echo'<div class="stream_show_posts" onClick="global_streamcount=global_streamcount+10;refreshstream();">Show More Posts</div>';
}
}
?>
这是我需要插入的代码。
<?php if(USER_BEFRIENDED==0){ ?>
Add <?php echo $data['fullusersname']; ?> as a friend to see posts and information.
<?php }
if(USER_BEFRIENDED==1){
?>
You've added <?php echo $data['fullusersname']; ?> as a friend, but he hasn't accepted yet. Check back later!
<?php } }?>
如果我想一想..我会在编码user2_id的流之前将其放入代码中。而且我现在不会这么泡菜了。
希望有人能帮忙。
谢谢。
查看您的代码,我假设您想从数据库中驱动友谊。我不太明白发布的许多代码的相关性,但我可以提出一些建议:
编写函数返回友情"状态"
我猜你会想在其他地方做类似的事情(内容隐藏/原始隐私),所以希望这会很有用。显然我无法测试这个,但像这样:
function checkUserFriendship($user1,$user2)
{
$sql = "SELECT status FROM friends WHERE user1_id = $user1 AND user2_id = $user2 OR user1_id = $user2 AND user2_id = $user1";
$query = mysql_query($sql);
$data = mysql_fetch_array($query);
return $data['status'];
}
现在,我非常怀疑这是否会立即起作用,但它(希望)实现的是返回您在"朋友"表中的"状态"字段。然后,您可以在输出时使用它。例如:
$friendshipStatus = checkUserFriendship($user1,$user2);
switch($friendshipStatus){
case "accepted":
//Show something
break;
case "pending":
//Show "pending" message
break;
case 0:
//Show nothing (or an error message)
break;
}
这可能不是你要找的,但这就是我处理这种情况的方式。看起来您可能已经对包含以下内容的行执行此操作
rawfeeds_user_core::check_active_friends
但是你发布了很多代码,我不完全确定它们是如何拼凑在一起的。
全局变量的使用
这是一个旁注,但我会避免使用定义的全局变量。看起来它们在这里没有用处。
不必要的代码 (?)
在您的用户流中(让我们这样称呼它们),您有一个巨大的代码块来构造 SQL 的"IN (n,n,n,n)"部分,以仅选择某些朋友。我想这在网站的全球/公共/"新闻提要"部分是必要的,但我看不到你在哪里使用它。(这可能是我的疏忽/只是愚蠢!
在不阅读所有代码的情况下,我推荐一个简单的多维数组:
$friends_of_users["user1"] = array("user3", "user9");
$friends_of_users["user2"] = array("user5", "user6");
$friends_of_users["user3"] = array("user1", "user7");
这是伪代码,当然,您应该使用 ID 而不是"userX"。到目前为止,这不是最性感的解决方案,但它会解决您的问题。