За последние 24 часа нас посетили 55595 программистов и 1720 роботов. Сейчас ищут 905 программистов ...

Выдает ошибку при вытягивании информации с БД.

Тема в разделе "PHP для новичков", создана пользователем prokuror_89, 2 фев 2011.

  1. prokuror_89

    prokuror_89 Активный пользователь

    С нами с:
    13 янв 2011
    Сообщения:
    26
    Симпатии:
    0
    Друзья у меня есть код:
    PHP:
    1.  
    2. ?php
    3. if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
    4. if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    5. //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
    6.  
    7. if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    8. {
    9. exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
    10. }
    11. //если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
    12. $login = stripslashes($login);
    13. $login = htmlspecialchars($login);
    14.  
    15. $password = stripslashes($password);
    16. $password = htmlspecialchars($password);
    17.  
    18. //удаляем лишние пробелы
    19. $login = trim($login);
    20. $password = trim($password);
    21.  
    22.  
    23.  
    24. // дописываем новое********************************************
    25.  
    26. //добавляем проверку на длину логина и пароля
    27. if (strlen($login) < 3 or strlen($login) > 15) {
    28. exit ("Логин должен состоять не менее чем из 3 символов и не более чем из 15.");
    29. }
    30. if (strlen($password) < 3 or strlen($password) > 15) {
    31. exit ("Пароль должен состоять не менее чем из 3 символов и не более чем из 15.");
    32. }
    33.  
    34.  
    35. if (!empty($_POST['fupload'])) //проверяем, отправил ли пользователь изображение
    36. {
    37. $fupload=$_POST['fupload']; $fupload = trim($fupload);
    38.   if ($fupload =='' or empty($fupload)) {
    39.                      unset($fupload);// если переменная $fupload пуста, то удаляем ее
    40.                      }
    41. }
    42.  
    43. if (!isset($fupload) or empty($fupload) or $fupload =='')
    44. {
    45. //если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
    46. $avatar = "avatars/net-avatara.jpg"; //можете нарисовать net-avatara.jpg или взять в исходниках
    47. }
    48.  
    49. else
    50. {
    51. //иначе - загружаем изображение пользователя
    52. $path_to_90_directory = 'avatars/';//папка, куда будет загружаться начальная картинка и ее сжатая копия
    53.  
    54.    
    55. if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
    56.      { 
    57.            
    58.         $filename = $_FILES['fupload']['name'];
    59.         $source = $_FILES['fupload']['tmp_name'];  
    60.         $target = $path_to_90_directory . $filename;
    61.         move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
    62.  
    63.     if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
    64.     $im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    65.     }
    66.     if(preg_match('/[.](PNG)|(png)$/', $filename)) {
    67.     $im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    68.     }
    69.    
    70.     if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
    71.         $im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    72.     }
    73.    
    74. //СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА [url=http://www.codenet.ru]www.codenet.ru[/url]
    75.  
    76. // Создание квадрата 90x90
    77. // dest - результирующее изображение
    78. // w - ширина изображения
    79. // ratio - коэффициент пропорциональности
    80.  
    81. $w = 90;  // квадратная 90x90. Можно поставить и другой размер.
    82.  
    83. // создаём исходное изображение на основе
    84. // исходного файла и определяем его размеры
    85. $w_src = imagesx($im); //вычисляем ширину
    86. $h_src = imagesy($im); //вычисляем высоту изображения
    87.  
    88.          // создаём пустую квадратную картинку
    89.          // важно именно truecolor!, иначе будем иметь 8-битный результат
    90.          $dest = imagecreatetruecolor($w,$w);
    91.  
    92.          // вырезаем квадратную серединку по x, если фото горизонтальное
    93.          if ($w_src>$h_src)
    94.          imagecopyresampled($dest, $im, 0, 0,
    95.                           round((max($w_src,$h_src)-min($w_src,$h_src))/2),
    96.                           0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
    97.  
    98.          // вырезаем квадратную верхушку по y,
    99.          // если фото вертикальное (хотя можно тоже серединку)
    100.          if ($w_src<$h_src)
    101.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
    102.                           min($w_src,$h_src), min($w_src,$h_src));
    103.  
    104.          // квадратная картинка масштабируется без вырезок
    105.          if ($w_src==$h_src)
    106.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
    107.          
    108.  
    109. $date=time(); //вычисляем время в настоящий момент.
    110. imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
    111.  
    112. //почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.
    113.  
    114. $avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
    115.  
    116. $delfull = $path_to_90_directory.$filename;
    117. unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
    118. }
    119. else
    120.          {
    121.          //в случае несоответствия формата, выдаем соответствующее сообщение
    122.          exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
    123.          }
    124. //конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы
    125. }
    126.  
    127.  
    128. //можно добавить несколько своих символов по вкусу, например, вписав "b3p6f". Если этот пароль будут взламывать метадом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.
    129.  
    130. //При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.
    131.  
    132.  
    133. // дописали новое********************************************
    134.  
    135. // Далее идет все из первой части статьи,но необходимо дописать изменение в запрос к базе.
    136.  
    137. // подключаемся к базе
    138. include ("blocks/bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
    139.  
    140. // проверка на существование пользователя с таким же логином
    141. $result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
    142. $myrow = mysql_fetch_array($result);
    143. if (!empty($myrow['id'])) {
    144. exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
    145. }
    146.  
    147. // если такого нет, то сохраняем данные
    148. $result2 = mysql_query ("INSERT INTO users (login,password,avatar) VALUES('$login','$password','$avatar')");
    149. // Проверяем, есть ли ошибки
    150. if ($result2=='TRUE')
    151. {
    152. echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";
    153. }
    154.  
    155. else {
    156. echo "Ошибка! Вы не зарегистрированы.";
    157.      }
    158. ?>
    159.  
    Почемуто мне выбивает такую ошибку:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in w:\home\localhost\www\kurs\save_user.php on line 141
    Ошибка! Вы не зарегистрированы.

    Помогите пожалуйста потому что я уже не знаю что делать. Зарание спасибо.
     
  2. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    PHP:
    1.  
    2.  
    3. <?php
    4.   if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
    5.   if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    6.   //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
    7.  ?>
    Форматируй, а то глаза поламают=)
     
  3. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    PHP:
    1. mysql_query("SELECT id FROM users WHERE login='$login'",$db);
    отрабатывает с ошибкой. Скрипт этого не проверяет и ты пытаешься запихать то что вернулось в mysql_fetch_array(). Возможно, нет коннекта к базе.