Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Не происходит авторизация sqldb


Автор: nullpoint 12.5.2014, 21:05
Всем привет. Есть веб-интерфейс для создания аудио-конференций. Проблема заключается в том, что не могу залогиниться в админку. Создаю базу данных, создаю таблицы, заношу в таблицу user пользователя-админа. Все как в Readme написано. При попвтке авторизации просто обновляется страница.

 Вызывает сомнение вот эта строчка из lib/sqldb.php:
Код

$query = "SELECT id, admin FROM user WHERE email=? AND password=?";

Собственно вместо знаков вопроса должны стоять какие-то переменные как я понимаю. Или значения переменных, но тогда теряется смысл авторизации, т.к. авторизован сможет быть только один пользователь с указанными здесь данными. Помогите разобраться, пожалуйста, в php и mysql я полный ноль.

Сам веб-интерфейс пришлось загрузить на отдельный хостинг, т.к. тут прикрепить нет возможности.
http://rghost.ru/55114259

Автор: Aliance 13.5.2014, 09:23
Со знаками вопроса все окей, это placeholder`ы для подстановки как раз таки переменных данных. Думается мне, что заносить данные в таблицу (а именно так я и понял ваши действия) - это не гуд, т.к. скорее всего пароль в бд хранится в хешированном виде. То есть должна быть, видимо, система регистрации. В любом случае, это все гадание, т.к. никакой конкретики вы не предоставили (по ссылке левой, естественно, никто переходить не станет и качать ничего тоже).

Автор: nullpoint 13.5.2014, 19:25
Aliance, конечно же я заношу в базу не сам пароль, а его md5-хэш.
Вот функция, котрая собственно делает выборку из базы.
Код

<?php

function authsql ($user, $password)
{

    global $db;

    $xuser = strtolower($user);
    $password = md5($password);
    $data = array( $xuser, $password);
    $query = "SELECT id, admin FROM user WHERE email=? AND password=?";
    $result = $db->query($query, $data);
    if($result->numRows())
    {
        $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
        $_SESSION['privilege'] = $row['admin'];
            return $row['id'];
    }
    else
    {
            return false;
    }
}
?>


Если закомментировать строчку
Код

$result = $db->query($query, $data);

и написать
Код

return 20;

где 20 - это id полльзователя, то авторизация успешно проходит.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)