PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
Backer
Отправлено: 09 Мая, 2016 - 23:46:15
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2016
Помог: 0 раз(а)
не могу понять в чем ошибка.
перехожу из главной страницы в профиль. вот код:
PHP:
скопировать код в буфер обмена
<?PHP
header ( "Content-Type: text/html; charset=utf-8" ) ; // вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
include ( "bd.php" ) ; // файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
//print_r($_SESSION);
{
$id = $_GET [ 'id' ] ;
}
//id "хозяина" странички
else
{
exit ( "Вы зашли на страницу без параметра!" ) ; }
//если не указали 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 '" ) ; if ( empty ( $myrow2 [ 'id' ] ) )
{
//Если не действительны (может мы удалили этого пользователя из базы за плохое поведение)
exit ( "Вход на эту страницу разрешен только зарегистрированным пользователям!" ) ; }
}
else {
//Проверяем, зарегистрирован ли вошедший
exit ( "Вход на эту страницу разрешен только зарегистрированным пользователям!" ) ; } $result = mysql_query ( "SELECT * FROM users WHERE id='$id '" ) ; if ( empty ( $myrow [ 'login' ] ) ) { exit ( "Пользователя не существует! Возможно он был удален." ) ; } //если такого не существует ?>
<html>
<head>
<title><?PHP echo $myrow [ 'login' ] ; ?> </title>
</head>
<body>
<h2>Пользователь "<?PHP echo $myrow [ 'login' ] ; ?> "</h2>
<?PHP
echo "|<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>" ;
//выше вывели меню
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'>
Ваш аватар:<br>
<img alt='аватар' src='$myrow[avatar]'><br>
Изображение должно быть формата jpg, gif или png. Изменить аватар:<br>
<input type="FILE" name="fupload">
<input type='submit' name='submit' value='изменить'>
</form>
<br>
<h2>Личные сообщения:</h2>
HERE ;
$tmp = mysql_query ( "SELECT * FROM messages WHERE poluchatel='$login ' ORDER BY id DESC" ) ; $messages = mysql_fetch_array ( $tmp ) ; //извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, т.е. самые новые сообщения будут вверху if ( ! empty ( $messages [ 'id' ] ) ) { do //выводим все сообщения в цикле
{
$author = $messages [ 'author' ] ;
$result4 = mysql_query ( "SELECT avatar,id FROM users WHERE login='$author '" ) ; //извлекаем аватар автора if ( ! empty ( $myrow4 [ 'avatar' ] ) ) { //если такового нет, то выводим стандартный (может этого пользователя уже давно удалили) $avatar = $myrow4 [ 'avatar' ] ;
}
else { $avatar = "avatars/net-avatara.jpg" ; }
<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' ] ) ;
//выводим само сообщение
}
}
else {
//если сообщений не найдено
echo "Сообщений нет" ;
}
}
else
{
//если страничка чужая, то выводим только некторые данные и форму для отправки личных сообщений
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 ;
}
?>
</body>
</html>
Выдает сообщение "Неверный формат запроса! Проверьте URL"
kuller
Отправлено: 10 Мая, 2016 - 01:19:42
Частый посетитель
Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009
Помог: 2 раз(а)
для фильтрации хотя бы такую функцию используйте
PHP:
скопировать код в буфер обмена
function check( $msg )
{
{
foreach ( $msg as $key => $val )
{
$msg [ $key ] = check( $val ) ;
}
} else {
$search = array ( '|' , '\'' , '$' , '\\' , '^' , '%' , '`' , "\0 " , "\x00 " , "\x1A " , "??????" ) ; $replace = array ( '|' , ''' , '$' , '\', ' ^
', ' % ', ' `
', ' ', ' ', ' ', ' '); $msg = str_replace($search, $replace, $msg);
$msg = stripslashes($msg);
}
return $msg;
}
$id = check($_GET[' id']);
kuller
Отправлено: 10 Мая, 2016 - 11:19:26
Частый посетитель
Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009
Помог: 2 раз(а)
понятно что в другом.
За место isset проверяйте просто на пустоту т.е. это
заменить на это
c isset такой адрес будет true index.php?id=
дальше...
Backer пишет: if (empty($myrow['login'])) {
я бы здесь лучше сделал проверку на совпадения логина и пароля находящие в сессиях(Отредактировано автором: 10 Мая, 2016 - 12:12:21)
ytrewq123
Отправлено: 10 Мая, 2016 - 15:38:55
Посетитель
Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2014
Помог: 0 раз(а)
Может быть проблема в том что вы ждёте ГЕТ, а в форме прописано ПОСТ.
Если же нет. То смотрите чему равна или даже в адресной строке видно что ГЕТом идёт. Это то что вы ожидаете. Может прогоните trim($_GET[‘’]); бывают всякие пробелы. А у вас в регулярке строго, начало конец цифра.
(Отредактировано автором: 10 Мая, 2016 - 15:43:19)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB