@ibragim_2008

Почему не работает регистрация?

Для регистрации на своем сайте я код взял с чужого сайта. Но ошибка
mysql_fetch_array() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/myemojii/myemojii(ru)/save_user.php on line 112.

код:
<?php
    if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
    if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
 if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    {
    exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
    }
    //если логин и пароль введены, то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
    $login = stripslashes($login);
    $login = htmlspecialchars($login);
 $password = stripslashes($password);
    $password = htmlspecialchars($password);
 //удаляем лишние пробелы
    $login = trim($login);
    $password = trim($password);
 //добавляем проверку на длину логина и пароля
 if    (strlen($login) < 3 or strlen($login) > 15) {
   exit    ("Логин должен состоять не менее чем из 3 символов и не более чем из    15.");
   }
   if    (strlen($password) < 3 or strlen($password) > 15) {
   exit    ("Пароль должен состоять не менее чем из 3 символов и не более чем из    15.");
   }          
  
if    (!empty($_POST['fupload'])) //проверяем, отправил    ли пользователь изображение
   {
   $fupload=$_POST['fupload'];    $fupload = trim($fupload); 
     if ($fupload =='' or empty($fupload)) {
                        unset($fupload);// если переменная $fupload пуста, то удаляем ее
                                                   }
   }          
if    (!isset($fupload) or empty($fupload) or $fupload =='')
   {
   //если переменной не существует (пользователь не отправил    изображение),то присваиваем ему заранее приготовленную картинку с надписью    "нет аватара"
   $avatar    = "avatars/net-avatara.jpg"; //можете    нарисовать net-avatara.jpg или взять в исходниках
   }          
else 
   {

   //иначе - загружаем изображение пользователя
   $path_to_90_directory    = 'avatars/';//папка,    куда будет загружаться начальная картинка и ее сжатая копия          

   if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
             {                 
                      $filename =    $_FILES['fupload']['name'];
                      $source =    $_FILES['fupload']['tmp_name']; 
                      $target =    $path_to_90_directory . $filename;
                      move_uploaded_file($source,    $target);//загрузка оригинала в папку $path_to_90_directory           
if(preg_match('/[.](GIF)|(gif)$/',    $filename)) {
            $im    = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем    изображение в этом же формате. Необходимо для последующего сжатия
            }
            if(preg_match('/[.](PNG)|(png)$/',    $filename)) {
            $im =    imagecreatefrompng($path_to_90_directory.$filename) ;//если    оригинал был в формате png, то создаем изображение в этом же формате.    Необходимо для последующего сжатия
            }
            
            if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/',    $filename)) {
                      $im =    imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же    формате. Необходимо для последующего сжатия
            }           
//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ    ВЗЯТО С САЙТА www.codenet.ru           
// Создание квадрата 90x90
   // dest - результирующее изображение 
   // w - ширина изображения 
   // ratio - коэффициент пропорциональности           
$w    = 90;  //    квадратная 90x90. Можно поставить и другой размер.          
// создаём исходное изображение на основе 
   // исходного файла и определяем его размеры 
   $w_src    = imagesx($im); //вычисляем ширину
   $h_src    = imagesy($im); //вычисляем высоту изображения
            // создаём    пустую квадратную картинку 
            // важно именно    truecolor!, иначе будем иметь 8-битный результат 
            $dest = imagecreatetruecolor($w,$w);           
//    вырезаем квадратную серединку по x, если фото горизонтальное 
            if    ($w_src>$h_src) 
            imagecopyresampled($dest, $im, 0, 0,
                                round((max($w_src,$h_src)-min($w_src,$h_src))/2),
                             0, $w, $w,    min($w_src,$h_src), min($w_src,$h_src));           
// вырезаем    квадратную верхушку по y, 
            // если фото    вертикальное (хотя можно тоже серединку) 
            if    ($w_src<$h_src) 
            imagecopyresampled($dest, $im, 0, 0,    0, 0, $w, $w,
                             min($w_src,$h_src),    min($w_src,$h_src));           
// квадратная картинка    масштабируется без вырезок 
            if ($w_src==$h_src) 
            imagecopyresampled($dest,    $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);           
$date=time();    //вычисляем время в настоящий момент.
   imagejpeg($dest,    $path_to_90_directory.$date.".jpg");//сохраняем    изображение формата jpg в нужную папку, именем будет текущее время. Сделано,    чтобы у аватаров не было одинаковых имен.          
//почему именно jpg? Он занимает очень мало места + уничтожается    анимирование gif изображения, которое отвлекает пользователя. Не очень    приятно читать его комментарий, когда краем глаза замечаешь какое-то    движение.          
$avatar    = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара. 

$delfull    = $path_to_90_directory.$filename; 
   unlink    ($delfull);//удаляем оригинал загруженного    изображения, он нам больше не нужен. Задачей было - получить миниатюру.
   }
   else 
            {
                       //в случае    несоответствия формата, выдаем соответствующее сообщение
            exit ("Аватар должен быть в    формате <strong>JPG,GIF или PNG</strong>");
                    }
   //конец процесса загрузки и присвоения переменной $avatar адреса    загруженной авы
   }          
$password    = md5($password);//шифруем пароль          
$password    = strrev($password);// для надежности добавим реверс          
$password    = $password."b3p6f";

   //можно добавить несколько своих символов по вкусу, например,    вписав "b3p6f". Если этот пароль будут взламывать методом подбора у    себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую    ставить другие символы, можно в начале строки или в середине.          
//При этом необходимо увеличить длину поля password в базе.    Зашифрованный пароль может получится гораздо большего размера.          
// дописали новое********************************************          
// Далее идет все из первой части статьи,но необходимо    дописать изменение в запрос к базе. 
   //подключаемся к базе
   include ("bd.php");// файл bd.php должен быть в той    же папке, что и все остальные, если это не так, то просто измените путь
   // проверка на существование пользователя с таким же логином
   $result = mysql_query("SELECT id FROM users WHERE    login='$login'",$db);
   $myrow = mysql_fetch_array($result);
   if (!empty($myrow['id'])) {
   exit ("Извините, введённый вами логин уже    зарегистрирован. Введите другой логин.");
   }          
// если такого нет, то сохраняем данные
   $result2 = mysql_query ("INSERT INTO users (login,password,avatar)    VALUES('$login','$password','$avatar')");
   // Проверяем, есть ли ошибки
   if ($result2=='TRUE')
   {

   echo "Вы успешно зарегистрированы! Теперь вы можете зайти    на сайт. <a href='index.php'>Главная страница</a>";

   }          
else {
   echo "Ошибка! Вы не зарегистрированы.";
        }

   ?>
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
@FanatPHP
Чебуратор тега PHP
Скажи, а кто писал эти комментарии? Кто этот гений, который советует ставить символы "в начале строки или в середине"?
Я думаю, это без шуток, самый важный вопрос, без ответа на который твою проблему не решить
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
27 окт. 2020, в 00:22
2000 руб./за проект
26 окт. 2020, в 23:49
1500 руб./за проект
26 окт. 2020, в 23:46
3000 руб./за проект