Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: не работает метод GET
Форумы портала PHP.SU » » Вопросы новичков » не работает метод GET

Страниц (1): [1]
 

1. Backer - 09 Мая, 2016 - 23:46:15 - перейти к сообщению
не могу понять в чем ошибка.
перехожу из главной страницы в профиль. вот код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. header("Content-Type: text/html; charset=utf-8");
  4.             //    вся процедура работает на сессиях. Именно в ней хранятся данные пользователя,    пока он находится на сайте. Очень важно запустить их в самом начале    странички!!!
  5.             session_start();
  6.                 include ("bd.php");// файл bd.php должен быть в той же папке, что и все    остальные, если это не так, то просто измените путь
  7.                 //print_r($_SESSION);
  8.                
  9.                
  10.             if (isset($_GET['id']))
  11.                         {
  12.                                
  13.                                 $id =$_GET['id'];
  14.                         }
  15.                         //id "хозяина" странички
  16.             else
  17.             {
  18.                                 exit("Вы зашли на    страницу без параметра!");
  19.                         }
  20.                         //если не    указали id, то выдаем ошибку
  21.                                 if (!preg_match("|^[\d]+$|", $id))    
  22.                                 {
  23.                                 exit("<p>Неверный    формат запроса! Проверьте URL</p>");//если id не число, то выдаем    ошибку
  24.                                 }
  25. if (!empty($_SESSION['login']) and    !empty($_SESSION['password']))
  26.             {
  27.             //если    существует логин и пароль в сессиях, то проверяем, действительны ли они
  28.             $login = $_SESSION['login'];
  29.             $password = $_SESSION['password'];
  30.             $result2 = mysql_query("SELECT id FROM    users WHERE login='$login' AND password='$password'");
  31.             $myrow2 = mysql_fetch_array($result2);
  32.             if (empty($myrow2['id']))
  33.  
  34.                {
  35.                //Если не действительны (может мы удалили    этого пользователя из базы за плохое поведение)
  36.  
  37.                 exit("Вход на эту страницу разрешен    только зарегистрированным пользователям!");
  38.                }
  39.             }
  40.             else {
  41.             //Проверяем,    зарегистрирован ли вошедший
  42.             exit("Вход на эту    страницу разрешен только зарегистрированным пользователям!"); }
  43.             $result = mysql_query("SELECT * FROM    users WHERE id='$id'");
  44.             $myrow =    mysql_fetch_array($result);//Извлекаем все данные    пользователя с данным id
  45. if (empty($myrow['login'])) {    exit("Пользователя не существует! Возможно он был удален.");} //если такого не существует
  46. ?>
  47.             <html>
  48.             <head>
  49.             <title><?PHP echo $myrow['login'];    ?></title>
  50.             </head>
  51.             <body>
  52.  
  53.             <h2>Пользователь "<?PHP echo    $myrow['login']; ?>"</h2>
  54.  
  55. <?PHP
  56.            
  57.             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>";
  58.            
  59.             //выше вывели меню
  60. if ($myrow['login'] == $login)
  61. {
  62.             //Если    страничка принадлежит вошедшему, то предлагаем изменить данные и выводим    личные сообщения
  63. print <<<HERE
  64. <form action='update_user.php'    method='post'>
  65.             Ваш логин    <strong>$myrow[login]</strong>. Изменить логин:<br>
  66.             <input name='login' type='text'>
  67.             <input type='submit' name='submit' value='изменить'>
  68.             </form>
  69.             <br>
  70. <form action='update_user.php'    method='post'>
  71.             Изменить пароль:<br>
  72.             <input name='password' type='password'>
  73.             <input type='submit' name='submit' value='изменить'>
  74.             </form>
  75.             <br>
  76. <form action='update_user.php'    method='post' enctype='multipart/form-data'>
  77.             Ваш аватар:<br>
  78.             <img alt='аватар' src='$myrow[avatar]'><br>
  79.             Изображение должно быть    формата jpg, gif или png. Изменить аватар:<br>
  80.             <input type="FILE"    name="fupload">
  81.             <input type='submit' name='submit' value='изменить'>
  82.             </form>
  83.             <br>
  84. <h2>Личные    сообщения:</h2>
  85. HERE;
  86. $tmp = mysql_query("SELECT * FROM    messages WHERE poluchatel='$login' ORDER BY id DESC");
  87.             $messages =    mysql_fetch_array($tmp);//извлекаем сообщения    пользователя, сортируем по идентификатору в обратном порядке, т.е. самые    новые сообщения будут вверху
  88. if (!empty($messages['id'])) {
  89.             do //выводим    все сообщения в цикле
  90.               {
  91.             $author = $messages['author'];
  92.             $result4 = mysql_query("SELECT avatar,id    FROM users WHERE login='$author'"); //извлекаем аватар автора
  93.             $myrow4 = mysql_fetch_array($result4);
  94. if (!empty($myrow4['avatar']))    {//если такового нет, то выводим стандартный (может    этого пользователя уже давно удалили)
  95.             $avatar = $myrow4['avatar'];
  96.             }
  97.             else {$avatar =    "avatars/net-avatara.jpg";}
  98.      printf("
  99.                 <table>
  100.                 <tr>
  101.  
  102.                 <td><a href='page.php?id=%s'><img alt='аватар'    src='%s'></a></td>
  103.              
  104.                 <td>Автор:    <a href='page.php?id=%s'>%s</a><br>
  105.                  Дата:    %s<br>
  106.                                 Сообщение:<br>
  107.  
  108.                             %s<br>
  109.                             <a href='drop_post.php?id=%s'>Удалить</a>
  110.  
  111.              
  112.                 </td>  
  113.                 </tr>
  114.                 </table><br>
  115.                 ",$myrow4['id'],$avatar,$myrow4['id'],$author,$messages['date'],$messages['text'],$messages['id']);
  116.               //выводим само сообщение
  117.               }
  118.                  while($messages = mysql_fetch_array($tmp));
  119.                     }
  120.                                                                                           else    {
  121.                                                                                           //если сообщений не найдено
  122.                                                                                           echo    "Сообщений нет";
  123.                                                                                           }
  124.                                                                                          
  125.  
  126.             }
  127. else
  128.             {
  129.             //если    страничка чужая, то выводим только некторые данные и форму для отправки    личных сообщений
  130. print <<<HERE
  131.             <img alt='аватар' src='$myrow[avatar]'><br>
  132.             <form action='post.php' method='post'>
  133.             <br>
  134.             <h2>Отправить Ваше    сообщение:</h2>
  135.             <textarea cols='43' rows='4'    name='text'></textarea><br>
  136.             <input type='hidden' name='poluchatel'    value='$myrow[login]'>
  137.             <input type='hidden' name='id'    value='$myrow[id]'>
  138.             <input type='submit' name='submit' value='Отправить'>
  139.  
  140.             </form>
  141. HERE;
  142.             }
  143. ?>
  144.             </body>
  145.             </html>
  146.  
  147. Выдает сообщение "Неверный формат запроса! Проверьте URL"
  148.  
2. 3d_killer - 09 Мая, 2016 - 23:55:10 - перейти к сообщению
значит то что в урл удовлетворяет условию
3. Backer - 09 Мая, 2016 - 23:57:30 - перейти к сообщению
ну это я тоже поняла уже
4. kuller - 10 Мая, 2016 - 01:19:42 - перейти к сообщению
для фильтрации хотя бы такую функцию используйте

PHP:
скопировать код в буфер обмена
  1.  
  2. function check($msg)
  3. {
  4.         if (is_array($msg))
  5.         {
  6.                 foreach($msg as $key => $val)
  7.                 {
  8.                         $msg[$key] = check($val);
  9.                 }
  10.         }else{
  11.                 $msg = trim(strip_tags($msg));
  12.                 $search = array('|', '\'', '$', '\\', '^', '%', '`', "\0", "\x00", "\x1A", "??????");
  13.                 $replace = array('|', '&#39;', '$', '\', '^', '%', '`', '', '', '', '');
  14.                 $msg = str_replace($search, $replace, $msg);
  15.                 $msg = stripslashes($msg);
  16.         }
  17.         return $msg;
  18. }
  19.  
  20. $id = check($_GET['id']);
  21.  
5. Backer - 10 Мая, 2016 - 08:00:25 - перейти к сообщению
Спасибо! Но ошибка заключается другом
6. kuller - 10 Мая, 2016 - 11:19:26 - перейти к сообщению
понятно что в другом.

За место isset проверяйте просто на пустоту т.е. это



заменить на это

PHP:
скопировать код в буфер обмена
  1. if($_GET['id'] != '')


c isset такой адрес будет true index.php?id=

дальше...
Backer пишет:
if (empty($myrow['login'])) {


я бы здесь лучше сделал проверку на совпадения логина и пароля находящие в сессиях
7. ytrewq123 - 10 Мая, 2016 - 15:38:55 - перейти к сообщению
Может быть проблема в том что вы ждёте ГЕТ, а в форме прописано ПОСТ.
Если же нет. То смотрите чему равна или даже в адресной строке видно что ГЕТом идёт. Это то что вы ожидаете. Может прогоните trim($_GET[‘’]); бывают всякие пробелы. А у вас в регулярке строго, начало конец цифра.

 

Powered by ExBB FM 1.0 RC1