Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

mysqli_fetch, авторизация на php.

[РЕШЕНО]
Статус пользователя FruityServer
сообщение 3.8.2015, 13:17
Сообщение #1
Стаж: 10 лет

Сообщений: 202
Благодарностей: 113
Полезность: 142

В общем нужно сделать авторизацию на сайте с помощью php.
Использую MySQLi.
Код
    $User = $mysqli->query('SELECT `id` FROM `admins`  WHERE `login` = '.$login.' AND `password` = '.$password.'');
    $UserID = $mysqli->fetch($User);

При авторизации (когда ввёл верные/ не верны данные, после нажатия на sumbit) выдаёт ошибку
Код
Fatal error: Call to undefined method mysqli::fetch() in /home/frukt/public_html/admin.php on line 66

Help me, срочно ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 3.8.2015, 13:22
Сообщение #2


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

Написано же "Нет такого метода".
Доки по MySQLi:
http://fi2.php.net/manual/ru/mysqli-result.fetch-array.php
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 3.8.2015, 13:22
Сообщение #3
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Я конечно не знаток, но мне кажется надо юзать fetch_row/fetch_array
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя FruityServer
сообщение 3.8.2015, 13:23
Сообщение #4
Стаж: 10 лет

Сообщений: 202
Благодарностей: 113
Полезность: 142

oxoTHuk., читал.
И что получается?
Код
$UserID =  $result = $User->get_result()->fetch($User);

Так что ли?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 3.8.2015, 13:27
Сообщение #5


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

$User->fetch_array(MYSQLI_ASSOC);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя FruityServer
сообщение 3.8.2015, 13:30
Сообщение #6
Стаж: 10 лет

Сообщений: 202
Благодарностей: 113
Полезность: 142

oxoTHuk.,
Код
Fatal error: Call to a member function fetch_array() on a non-object in /home/frukt/public_html/admin.php on line 66

Код
$UserI = $User->fetch_array(MYSQLI_ASSOC);


Отредактировал: FruityServer, - 3.8.2015, 13:30
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 3.8.2015, 13:37
Сообщение #7


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

var_dump($User); Получи строку запроса и проверь в PMA результ.

if(!$User){
mysqli_error();
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя FruityServer
сообщение 3.8.2015, 13:44
Сообщение #8
Стаж: 10 лет

Сообщений: 202
Благодарностей: 113
Полезность: 142

oxoTHuk., ничего не происходит.
Код
Fatal error: Call to a member function fetch_array() on a non-object in /home/frukt/public_html/admin.php on line 66


oxoTHuk., в общем то накосячил я cbf1b2bfde1a.gif
Код
<?php
if (isset($_POST['submit']))
{
$login = htmlspecialchars($_POST['login']);
$login = $mysqli->real_escape_string($login);
$password = htmlspecialchars($_POST['password']);
if(empty($login) || empty($password)) {
    echo $Message->AlertMsg("2", "Вы не ввели логин и/или пароль", "2");
}
else{
    $User = $mysqli->query('SELECT * FROM `admins`  WHERE `login` = '.$login.' AND `password` = '.$password.'');
    $UserI = $User->fetch_array(MYSQLI_ASSOC);
    //$UserID = $mysqli->fetch($User);
    if(empty($UserI['id'])) {
        echo $Message->AlertMsg("1", "Вы успешно вошли, переадресация ...", "1");
    }
}
}
    var_dump($User);
    if(!$User){
mysqli_error();
}
?>

Теперь при вводе не правильных данных - та же ошибка (я знаю что нужно делать num_rows).
При вводе левых - "Вы успешно вошли, переадресация ...".
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 3.8.2015, 13:52
Сообщение #9


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

if(empty($UserI['id'])) {
echo $Message->AlertMsg("1", "Вы успешно вошли, переадресация ...", "1");
}
Правильно, условие - если пустой $UserI['id'] = ввод левых данных приведет к сообщению об успешной авторизации.
if(!empty($UserI['id'])) {
echo $Message->AlertMsg("1", "Вы успешно вошли, переадресация ...", "1");
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя FruityServer
сообщение 3.8.2015, 14:00
Сообщение #10
Стаж: 10 лет

Сообщений: 202
Благодарностей: 113
Полезность: 142

oxoTHuk., Спасибо!!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 4.8.2015, 20:47
Сообщение #11
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

А почему нельзя сделать так?
Код
if(is_object($UserI))


Так даже надежней.... Проверяется не отдельно одни элемент объекта, а вообще, целый объект.

http://www.php.su/functions/?is-object

Отредактировал: Orty_Hart, - 4.8.2015, 20:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: