Обновления на стене видят только друзья

Я создаю настенную систему, в которой вы можете публиковать обновления на странице индекса, и я хотел, чтобы сообщения могли видеть только друзья пользователя, я почти заставил свой код работать, но у меня все еще есть проблема, но прежде чем я упомяну свою проблему если есть лучший способ сделать это, пожалуйста, поделитесь им со мной, я покажу вам мой код

Сначала у меня есть две таблицы для кода

‘my_friends’: ‘id’, ‘username’, ‘friend’

‘statues’: ‘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" />

код не работает правильно, он показывает фид поста только одному другу, первому добавленному другу пользователя, другими словами, sql $result = mysql_query("SELECT *,
UNIX_TIMESTAMP() - date_created AS TimeSpent FROM
статуиWHEREf_name= '".mysql_real_escape_string(strip_tags($get_users_friends["friend"]))."' "); выбрать все статуи только одного друга, когда я напишу echo mysql_real_escape_string(strip_tags($get_users_friends["friend"])),'<br>'; до SQL это показывает всех друзей, но когда я использую его в SQL это не так, пожалуйста, помогите

-3

Решение

Вот некоторые мысли, которые, возможно, могут помочь вам

  1. Не использовать mysql_* функции, которые они устарели использовать PDO класс вместо
  2. Не запрашивайте *, если вам не нужна вся информация из таблицы
  3. Имя таблицы statues
  4. После завершения first, в то время как ваша переменная $ result будет содержать только последний запрос данных друга, потому что он перезаписывается на следующем шаге итерации (используйте $result[] = )
  5. Соберите информацию из $ get_users_friends, чтобы переписать ваш запрос в SELECT p_id, post, f_name, UNIX_TIMESTAMP() - date_created AS TimeSpent FROM statues WHERE f_name IN '.implode(',', $firends_name),
  6. Не вижу, используете ли вы переменную $ comments вообще
  7. $ 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. Потому что сейчас он очень уязвим для инъекций.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]