<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();
$db=mysql_connect("localhost","regdaemon","qwaszx");
$dbs=mysql_select_db(test,$db);
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'}",$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("Пользователя не существует! Возможно он был удален.");} //если такого не существует
?>
<html>
<head>
<title><?php echo $myrow['login'];?></title>
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="style2.css">
</head>
<body>
<h2>Пользователь <?php echo $myrow['login']; ?></h2>
<?php
print <<<HERE
|<a href='page.php?id=$myrow2[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' size="15" maxlenght="15">
<input type='submit' name='submit' value='изменить'>
</form>
<br>
<form action='update_user.php' method='post'>
Изменить пароль:<br>
<input name='password' type='password' size="15" maxlenght="15">
<input type='submit' name='submit' value='изменить'>
</form>
<br>
Спустя 4 минуты, 12 секунд (29.07.2010 - 14:46) Ice написал(а):
Покажите 51 строку.
Всё понял. HERE должно стоять с самого начала строки
Всё понял. HERE должно стоять с самого начала строки
Спустя 1 минута, 28 секунд (29.07.2010 - 14:47) ThExEnD написал(а):
if ($myrow['login'] == $login) {
Спустя 28 секунд (29.07.2010 - 14:48) Семён написал(а):
print <<<HERE
|<a href='page.php?id=$myrow2[id]'>Моя страница</a>|
<a href='index.php'>Главная страница</a>|
<a href='all_users.php'>Список пользователей</a>|
<a href='exit.php'>Выход</a><br><br>
HERE;
Дело в этом куске.
Спустя 1 минута, 33 секунды (29.07.2010 - 14:49) Self написал(а):
heredoc
HERE; - c начала строки, после ; не должно быть пробелов.
HERE; - c начала строки, после ; не должно быть пробелов.
Спустя 52 секунды (29.07.2010 - 14:50) Ice написал(а):
print <<<HERE
|<a href='page.php?id=$myrow2[id]'>Моя страница</a>|
<a href='index.php'>Главная страница</a>|
<a href='all_users.php'>Список пользователей</a>|
<a href='exit.php'>Выход</a><br><br>
HERE;
Должно быть так. И во втором куске тоже.
Спустя 51 секунда (29.07.2010 - 14:51) ThExEnD написал(а):
А епт пробелы =) Извиняйте я нубеер =)
Спустя 30 секунд ThExEnD написал(а):
Обещаю исправлюсь!
Спустя 30 секунд ThExEnD написал(а):
Обещаю исправлюсь!
Спустя 5 минут, 50 секунд (29.07.2010 - 14:57) ThExEnD написал(а):
<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();
$db=mysql_connect("localhost","regdaemon","qwaszx");
$dbs=mysql_select_db(test,$db);
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'",$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("Пользователя не существует! Возможно он был удален.");} //если такого не существует
?>
<html>
<head>
<title><?php echo $myrow['login'];?></title>
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="style2.css">
</head>
<body>
<h2>Пользователь <?php echo $myrow['login']; ?></h2>
<?php
print <<<HERE
|<a href='page.php?id=$myrow2[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' size="15" maxlenght="15">
<input type='submit' name='submit' value='изменить'>
</form>
<br>
<form action='update_user.php' method='post'>
Изменить пароль:<br>
<input name='password' type='password' size="15" maxlenght="15">
<input type='submit' name='submit' value='изменить'>
</form>
<br>
<h2>Личные сообщения:</h2>
HERE;
$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);
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'],$myrow4['id'],$author,$messages['date'],$messages['text'],$messages['id']);
//выводим само сообщение
}
while($messages = mysql_fetch_array($tmp));
}
else {
//если сообщений не найдено
echo "Сообщений нет";
}
}
else
{
//если страничка чужая, то выводим только некторые данные и форму для отправки личных сообщений
print <<<HERE
<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;
}
?>
</body>
</html>
Вроде все исправил теперь Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/PHP/page.php on line 54
Спустя 5 минут, 23 секунды (29.07.2010 - 15:02) Michael написал(а):
Обрами вот это:
$myrow['login']
скобочками:
{$myrow['login']}
.....
Вот это:
$myrow2[id]
также вызывает подозрения
$myrow['login']
скобочками:
{$myrow['login']}
.....
Вот это:
$myrow2[id]
также вызывает подозрения
Спустя 2 минуты, 44 секунды (29.07.2010 - 15:05) ThExEnD написал(а):
Чтоб я без вас делал господа =) СПАСИБА!
Спустя 44 секунды (29.07.2010 - 15:06) DedMorozzz написал(а):
|<a href='page.php?id=$myrow2[id]'.>- это не будет работать
|<a href='page.php?id='.(int)$myrow2[id].'>- а так будет. (Если у тя айди это число...кто ж тя нает)
Спустя 7 минут, 59 секунд (29.07.2010 - 15:14) ThExEnD написал(а):
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/PHP/page.php:1) in /var/www/PHP/page.php on line 3
Теперь всё выходит =) как нужно но вверху страницы =) ошибка =)
Теперь всё выходит =) как нужно но вверху страницы =) ошибка =)
Спустя 31 секунда (29.07.2010 - 15:14) ThExEnD написал(а):
Мне это начинает уже казаться странным
Спустя 57 секунд (29.07.2010 - 15:15) DedMorozzz написал(а):
скопипасти эту ошибку. без номера строки и путей в гугл и тут же найдёшь ответ
Спустя 8 минут, 40 секунд (29.07.2010 - 15:24) Семён написал(а):
Всё дело в BOM (подсказка UTF-8 BOM)
Спустя 7 минут, 6 секунд (29.07.2010 - 15:31) ThExEnD написал(а):
Семен а по подробнее =) я просто нуб ваще
Спустя 1 минута, 26 секунд (29.07.2010 - 15:32) Семён написал(а):
ThExEnD
Подробнее http://ru.wikipedia.org/wiki/UTF-8#.D0.9F.....D1.80.D0.B0.29
Порядок байтов (BOM, сигнатура)
Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). Чтобы при сохранении избавиться от добавления сигнатуры, используйте, например, Notepad++ или более простой Notepad2. Так же текстовый редактор Bred при сохранении предлагает опцию, управляющую наличием сигнутуры в UTF файле.
Подробнее http://ru.wikipedia.org/wiki/UTF-8#.D0.9F.....D1.80.D0.B0.29
Порядок байтов (BOM, сигнатура)
Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). Чтобы при сохранении избавиться от добавления сигнатуры, используйте, например, Notepad++ или более простой Notepad2. Так же текстовый редактор Bred при сохранении предлагает опцию, управляющую наличием сигнутуры в UTF файле.
Спустя 2 минуты, 32 секунды (29.07.2010 - 15:35) ThExEnD написал(а):
Спасибо ща попробую
Спустя 4 минуты, 42 секунды (29.07.2010 - 15:40) ThExEnD написал(а):
Чел СПАСИБО!!!!! не знаю как тебя благодарить =) надеюсь когда нить буду знать такие тонкости! СПАСИБО
Спустя 38 секунд (29.07.2010 - 15:40) Семён написал(а):
ThExEnD
Бывай.
Бывай.