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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не могу найти ошибку!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Xenox
Отправлено: 27 Марта, 2015 - 13:23:36
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Господа помогите найти ошибку только начал изучать ООП и вот не могу понять
PHP:
скопировать код в буфер обмена
  1. class User{
  2.  
  3.  
  4.   public function auth($login,$pass){
  5.         $db = new mysqli("mysql.hostinger.ru","login","pass","new_db");
  6.     if ($db->connect_errno){
  7.       echo "Ошибка подключения к БД".$db->connect_error;
  8.     }
  9.     $query = $db->query("SELECT password FROM regusers WHERE login = ".$login."");
  10.     $res = $query->fetch_object();
  11.     if ($pass == $res->password){
  12.       return true;
  13.     }else{
  14.       return false;
  15.     }
  16.    
  17.   }
  18.    
  19.  
  20.  
  21. }


при любом вводе выдает false

P.S. В бд таблица существует и заполнена

в в дополнение кусок кода где вызываю функцию
PHP:
скопировать код в буфер обмена
  1. include_once('../classes/auth.php');
  2.         $user = new User;
  3.         if($user->auth($_POST['login'], $_POST['password'])){echo "ОК";
  4. }else{echo "какой то косяк";}
  5.  
  6.  

(Отредактировано автором: 27 Марта, 2015 - 13:28:30)

 
 Top
LIME
Отправлено: 27 Марта, 2015 - 13:49:14
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ООП хоть и корявый но он не виноват
дебажь
http://phpfaq[dot]ru/debug
 
 Top
Panoptik
Отправлено: 27 Марта, 2015 - 13:53:02
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




перед
вставьте


и покажите вывод, или мож сами догадаетесь почему false
(Добавление)
обчыно пароли в базе хранятся в хешированном виде, так что могу предположить что упущен момент хеширования перед проверкой


-----
Just do it
 
 Top
Xenox
Отправлено: 27 Марта, 2015 - 14:29:44
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Спасибо огромное нашел ошибку, всего лишь не правильно составил запрос вместо
PHP:
скопировать код в буфер обмена
  1. $query = $db->query("SELECT password FROM regusers WHERE login = ".$login."");
поставил
PHP:
скопировать код в буфер обмена
  1. $query = $db->query("SELECT password FROM regusers WHERE login = '$login'");

P.S. Не хешировал просто пытаюсь освоить ООП на простых прмерах

(Отредактировано автором: 27 Марта, 2015 - 14:32:28)

 
 Top
GoDr
Отправлено: 27 Марта, 2015 - 21:43:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




а вообще советую отделать мух от .... мух..
лучше сделать так
PHP:
скопировать код в буфер обмена
  1. $query = $db->query("SELECT password FROM regusers WHERE login = '" . $login . "'");

Наглядно, понятно и не мешает ..


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Sail
Отправлено: 27 Марта, 2015 - 23:56:53
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




GoDr, нет предела совершенству Улыбка
Вот так, например:
PHP:
скопировать код в буфер обмена
  1. "some string with quoted variable '{$login}'"
ещё нагляднее...
А если запрос перед использованием сохранить в переменную, то его и отобразить можно будет в случае синтаксической ошибки... Закатив глазки
 
 Top
GoDr
Отправлено: 28 Марта, 2015 - 06:46:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




Sail, я специально вывел PHP-переменную из строки. Переменные бывают разные и строки тоже... Особенно если любитель "каши" вставляет в код HTML+CSS. Просто можно запутаться в скобках и кавычках Улыбка Но хозяин-барин ...


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB