| Почему выводится аватар того кто зашел под своим логином на всех сообщениях если они были написаны другими пользователями. Как это исправить
<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();
require_once ("../blocks/bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_GET['id'])) {$id =$_GET['id']; } //id "хозяина" странички
else
{ exit("Вы зашил на страницу без параметра!");} //если не указали id, то выдаем ошибку
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку
}
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем, действительны ли они
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow2 = mysql_fetch_array($result2);
if (empty($myrow2['id']))
{
//Если не действительны (может мы удалили этого пользователя из базы за плохое поведение)
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
}
}
else {
//Проверяем, зарегистрирован ли вошедший
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id
if (empty($myrow['login'])) { exit("Пользователя не существует! Возможно он был удален.");} //если такого не существует
?>
<?php
//require_once ("../inc/categories.php");
?>
<?php require_once ("blocks/bd.php");
if (isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}
/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|", $cat)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}
$result = mysql_query("SELECT * FROM categories WHERE id='$cat'",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow55 = mysql_fetch_array($result);
}
else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><? echo $myrow["title"]; ?></title>
<meta name="description" content="<? echo $myrow["meta_d"]; ?>">
<meta name="keywords" content="<? echo $myrow["meta_k"]; ?>">
<![endif]-->
</head>
<h2>Пользователь "<?php echo $myrow['login']; ?>"</h2>
<?php
//print <<<HERE
//|<a href='page.php?id=$myrow[id]'>Моя страница</a>|<a href='index.php'>Главная страница</a>|<a href='all_users.php'>Список пользователей</a>|<a href='exit.php'>Выход</a><br><br>
//HERE;
//выше вывели меню
if ($myrow['login'] == $login) {
//Если страничка принадлежит вошедшему, то предлагаем изменить данные и выводим личные сообщения
print <<<HERE
<form action='update_user.php' method='post'>
Ваш логин <strong>$myrow[login]</strong>. Изменить логин:<br>
<input name='login' type='text'>
<input type='submit' name='submit' value='изменить'>
</form>
<br>
<form action='update_user.php' method='post'>
Изменить пароль:<br>
<input name='password' type='password'>
<input type='submit' name='submit' value='изменить'>
</form>
<br>
<form action='update_user.php' method='post' enctype='multipart/form-data'>
Изображение должно быть формата jpg, gif или png. Изменить аватар:<br>
<input type="FILE" name="fupload">
<input type='submit' name='submit' value='изменить'><br>
Ваш аватар:<br>
<img alt='аватар' src='$myrow[avatar]'>
</form>
<br>
<form action='post.php' method='post'>
<br>
<h2>Отправить Ваше сообщение:</h2>
<textarea cols='43' rows='4' name='text'></textarea><br>
<input type='hidden' name='poluchatel' value='$myrow[login]'>
<input type='hidden' name='id' value='$myrow[id]'>
<input type='submit' name='submit' value='Отправить'>
</form>
<h1>сообщение</h1>
HERE;
// ORDER BY id DESC",$db);
$tmp = mysql_query("SELECT * FROM messages WHERE poluchatel='$login'ORDER BY id DESC",$db);
$messages = mysql_fetch_array($tmp);//извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, т.е. самые новые сообщения будут вверху
if (!empty($messages['id'])) {
do //выводим все сообщения в цикле
{
$author = $messages['author'];
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
$myrow4 = mysql_fetch_array($result4);
if (!empty($myrow4['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
$avatar = $myrow4['avatar'];
}
else {$avatar = "../avatars/net-avatara.jpg";}
printf("
<table>
<tr>
<td><a href='page.php?id=%s'><img alt='аватар' src='%s'></a></td>
<td>Автор: <a href='page.php?id=%s'>%s</a><br>
Дата: %s<br>
Сообщение:<br>
%s<br>
<a href='drop_post.php?id=%s'>Удалить</a>
</td>
</tr>
</table><br>
",$myrow4['id'],$avatar,$myrow4['id'],$author,$messages['date'],$messages['text'],$messages['id']);
//выводим само сообщение
}
while($messages = mysql_fetch_array($tmp));
}
else {
//если сообщений не найдено
echo "Сообщений нет";
}
}
else
{
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$tmp = mysql_query("SELECT * FROM messages WHERE poluchatel='$login'ORDER BY id DESC",$db);
$messages = mysql_fetch_array($tmp);//извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, т.е. самые новые сообщения будут вверху
$author = $messages['author'];
//если страничка чужая, то выводим только некторые данные и форму для отправки личных сообщений
$result1 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
$myrow1 = mysql_fetch_array($result1);
if (!empty($myrow1['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
$avatar1 = $myrow1['avatar'];
}
else {$avatar = "../avatars/net-avatara.jpg";}
print <<<HERE
<img alt='аватар' src='$myrow[avatar]'><br>
<form action='post.php' method='post'>
<br>
<h2>Отправить Ваше сообщение:</h2>
<textarea cols='43' rows='4' name='text'></textarea><br>
<input type='hidden' name='poluchatel' value='$myrow[login]'>
<input type='hidden' name='id' value='$myrow[id]'>
<input type='submit' name='submit' value='Отправить'>
</form>
HERE;
$result3 = mysql_query ("SELECT * FROM messages WHERE post='$id'ORDER BY id DESC",$db);
if (mysql_num_rows($result3) > 0)
{
$myrow3 = mysql_fetch_array($result3);
do
{
printf ("<div class='post_div'><p class='post_comment_add'></a>Комментарий добавил(а): <strong><a href='page.php?id=%s'>%s</a></strong> <br>Дата: <strong>%s</strong></p><a href='page.php?id=%s'><img alt='аватар' src='%s'></a>
<p>%s</p></div>",$myrow1['id'],$myrow3["author"], $myrow3["date"], $myrow1['id'], $avatar1, $myrow3["text"]);
}
while ($myrow3 = mysql_fetch_array($result3));
}
}
?>
</body>
</html>
<?php require_once ("../blocks/footer.php");?>
|
Базы
Структура таблицы `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(15) NOT NULL DEFAULT '',
`password` varchar(255) NOT NULL DEFAULT '',
`avatar` varchar(255) NOT NULL DEFAULT '',
`email` varchar(255) NOT NULL DEFAULT '',
`activation` int(1) NOT NULL DEFAULT '0',
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=71 ;
|
- Структура таблицы `messages`
--
CREATE TABLE IF NOT EXISTS `messages` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`post` varchar(5) CHARACTER SET cp1250 NOT NULL,
`author` varchar(15) NOT NULL DEFAULT '',
`poluchatel` varchar(15) NOT NULL DEFAULT '',
`date` date NOT NULL DEFAULT '0000-00-00',
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=154 ;
|
| |