Php 只有朋友才能看到墙的更新

Php 只有朋友才能看到墙的更新,php,rows,social-networking,friend,Php,Rows,Social Networking,Friend,我正在创建一个墙系统,您可以在索引页上发布更新,我希望这些帖子只能被用户的朋友看到,我几乎让我的代码正常工作了,但我仍然有一个问题,但在我提到我的问题之前,如果有更好的方法,请与我共享,我将向您展示我的代码 首先,我有两个代码表 “我的朋友”:“id”,“用户名”,“朋友” “雕像”:“p_id”,“post”,“f_name”,“userip”,“date_created” 此代码位于post.php中,然后将包含在索引页面中 //Check for user's friends

我正在创建一个墙系统,您可以在索引页上发布更新,我希望这些帖子只能被用户的朋友看到,我几乎让我的代码正常工作了,但我仍然有一个问题,但在我提到我的问题之前,如果有更好的方法,请与我共享,我将向您展示我的代码

首先,我有两个代码表

“我的朋友”:“id”,“用户名”,“朋友”

“雕像”:“p_id”,“post”,“f_name”,“userip”,“date_created”

此代码位于post.php中,然后将包含在索引页面中

    //Check for user's friends
    $check = mysql_query("select * from `my_friends` where `username` = '".$username."' order by `id` desc ");


        //Get users friends
        while($get_users_friends = mysql_fetch_array($check))
        {


            $show_more_button = 1;
            $result = mysql_query("SELECT *,
            UNIX_TIMESTAMP() - date_created AS TimeSpent FROM `statues` WHERE  `f_name` = '".mysql_real_escape_string(strip_tags($get_users_friends["friend"]))."' ");
        }

        while($row = mysql_fetch_array($result))
{


    $comments = mysql_query("SELECT *,
    UNIX_TIMESTAMP() - date_created AS CommentTimeSpent FROM comments where post_id = ".$row['p_id']." order by c_id asc");     ?>
   <div class="friends_area" id="record-<?php  echo $row['p_id']?>">


       <label style="float:left" class="name">

       <b><?php echo $row['f_name'];  ?></b><br>
       <span>

       </span><br>

       <em><?php  echo $row['post'];?></em>
       <br clear="all" />
//检查用户的朋友
$check=mysql\u query(“从'my\u friends'中选择*,其中'username`='”。$username.“'order by`id`desc”);
//获得用户朋友
while($get\u users\u friends=mysql\u fetch\u array($check))
{
$show\u more\u按钮=1;
$result=mysql\u查询(“选择*,
UNIX_TIMESTAMP()-date_创建为timespunt,来源于'status',其中'f_name`='。mysql_real_escape_字符串(strip_标签($get_users_friends[“friends”])。“”;
}
while($row=mysql\u fetch\u数组($result))
{
$comments=mysql\u查询(“选择*,
UNIX_TIMESTAMP()-date_根据注释创建为CommentTimeSpunt,其中post_id=“.$row['p_id']”按c_id asc排序”);?>



代码工作不正常,它只向一个朋友显示post提要,即用户的第一个添加的朋友,换句话说,sql
$result=mysql\u查询(“SELECT*,

UNIX_TIMESTAMP()-date_创建为从
status
WHERE
f_name
=''.mysql_real_escape_string(strip_标签($get_users_friends[“friends”])中花费的时间;
在我编写
echo mysql_real_escape_string(strip_标签($get_users_friends[“friends”])时,只选择一个朋友的所有雕像),“
”;
在sql之前,它会显示所有的朋友,但当我在sql中使用它时,它不会显示,请帮助

  • 不要使用
    mysql.*
    函数,它们不推荐使用
    PDO
  • 如果您不需要表格中的全部信息,请不要查询*
  • 表名为
    status
  • 在完成第一步之后,变量$result将只保存最后一个friend数据查询,因为它会被迭代的下一步覆盖(使用
    $result[]=
  • 从$get_users_friends聚合信息,将查询重写为
    选择p_id、post、f_名称、UNIX_TIMESTAMP()-date_创建为从f_名称所在的状态中花费的时间。内爆(',',$firends_name)
  • 根本不知道是否使用$comments变量
  • $show_more_button=1;根本不看它是否被使用。并且ofc它会被下一个迭代步骤覆盖
  • 您的代码应该如下所示:

    $check = mysql_query("select friend from `my_friends` where `username` = '".$username."' order by `id` desc ");
    
    while($get_users_friends = mysql_fetch_array($check, MYSQL_ASSOC))
    {           
        $result[] = $get_users_friends['friend'];
    }
    $friends_data_query = mysql_query("SELECT p_id, f_name, post,UNIX_TIMESTAMP() - date_created AS TimeSpent FROM `statues` WHERE  `f_name` IN'".implode(',',$result)."'");
    while($friends_data = mysql_fetch_array($friends_data_query,MYSQL_ASSOC)){
    

    但是要确保它被重写到PDO中。因为现在它非常容易被攻击。

    OP询问隐私问题,并且给了这个问题一个这样的标题,它出现在搜索结果的顶部,但它没有给出任何细节,甚至没有在你的回答中给出问题的实质内容。