powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблемы с авторизацией php mysql
4 сообщений из 4, страница 1 из 1
Проблемы с авторизацией php mysql
    #40003154
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите ликвидировать "берд" в моем коде.

Задача следующая:
на странице авторизации: нужно чтобы при вводе логина: admin@admin.ru и пароля: adminadmin происходил переход на admin.php
в ином случае происходила проверка наличия в БД users почты и соответствия ей там пароля. И если проверка соответсвия успешно проходит - то происходит переход на главную страницу с диалоговым окном что логин и пароль введены верно.

Никаких лишних ограничений быть не должно то есть - хэширование итд итп. Должна быть только проверка соответствия введенных данных из БД.

Я сделал, но ничего не работает

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
<?php
$desc = 'Главная страницаssssssssss';
$title = 'Авторизация';
$styles = array('style.css');
$ERRS = array();

function M_CNNCT(&$link) {
    global $ERRS;
    if ($link) return 1;
    $link = @mysqli_connect(NULL, 'root', 'q1w2e3r4t5y6u7i8o9p0', 'tks_labaratornaya_4');
    if (!$link) {
        $ERRS[] = 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
        return 0;
    }
    mysqli_set_charset($link, 'utf8');
    return 1;
}

# если подключенние не нужно для чего-то кроме добавления можно его не выполнять иногда
$email =  $_POST['email'];
$password =  $_POST['password'];
if ($email=='' or $password =='' ) {
    echo 'Заполните все необходимые поля!';
}   else    {
    $admin = mysql_result(mysql_query("SELECT COUNT(*) as cnt FROM users WHERE email = '{$_POST['email']}' AND password = '{$_POST['password']}'"), 0);

    if ($admin > 0) {

        if($_POST['submit']){
            $_SESSION['admin'] = $admin;
            header("Location: admin.php");
            exit;
        }
    } else {
        echo 'Пароль не верный';

    }
}
require "menu.php";
?>
<div>
    <form align="center">
        <table cellpadding="0" cellspacing="3" border="0" align="center">
            <tbody align="center">
                <tr>
                    <td>
                        E-mail:
                        

                        <input type="text" class="bginput" name="email" size="50" accesskey="u" tabindex="1" />
                    </td>
                </tr>
                <tr>
                    <td>
                        Пароль:
                        

                        <input type="password" class="bginput" name="password" size="50" tabindex="1" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <span class="smallfont" style="float:right">
                            <a href=recovery.php>Восстановить пароль</a>
                        </span>
                        <span class="smallfont" style="float:right; margin-right: 10px">
                            <a href=registration.php>Регистрация</a>
                        </span>
                        <label for="cb_cookieuser" class="smallfont">
                            <input type="checkbox" name="cookieuser" value="1" id="cb_cookieuser" tabindex="1" checked="checked" />Запомнить?
                        </label>
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        <button id="input" type="submit" class="knopka">Вход</button>
                        <button id="reset" type="submit" class="knopka">Сброс</button>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</div>
<?php
    require "blok_Z.php"; // подключение блока контактов
?>



Вот мой второй вариант - тоже безуспешно.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
<?php
$desc = 'Главная страницаssssssssss';
$title = 'Авторизация';
$styles = array('style.css');
$ERRS = array();

function M_CNNCT(&$link) {
    global $ERRS;
    if ($link) return 1;
    $link = @mysqli_connect(NULL, 'root', 'q1w2e3r4t5y6u7i8o9p0', 'tks_labaratornaya_4');
    if (!$link) {
        $ERRS[] = 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
        return 0;
    }
    mysqli_set_charset($link, 'utf8');
    return 1;
}

# если подключенние не нужно для чего-то кроме добавления можно его не выполнять иногда
if ($_SERVER['REQUEST_METHOD'] == 'POST')
do {
        # проверки
        if (isset($_SESSION['time']) && (time()-$_SESSION['time']) < 10)    {
            $ERRS[] = 'Отправка запроса чаще чем раз в 10 сек';
            break;# Выход из цикла do-while
        }
        $_SESSION['time'] = time();
        if (!isset($_POST['email'],$_POST['password']))
        {
            $ERRS[] = 'Вы должны заполнить и отправить форму';
            break;
        }
        $email = trim($_POST['email']);
        $password = trim($_POST['password']);
        $db_connect = mysql_query("SELECT * FROM users WHERE `email`='$email'") or die(mysql_error());
        $userinfo = mysql_fetch_array($db_connect);
        if(strcmp($pass,md5($userinfo['pass'])) == 0) {// проверка схожести пароля
            $sql="SELECT * FROM users WHERE `email`='$email'";
            $resultat=mysql_query($db_connect);
            $userinfo=mysql_fetch_array($resultat); // в этой переменной будет лежать вся информация о пользователе из БД
            $status = 1;// статус, если 1, тогда пользователь авторизован
        }
        if ($status == 1){
            echo "Лгоин и пароль введены верно!";
            header ('Location: admin.php');
            break;;
        }

        $result = mysqli_query($db, $query);
        if (!$result) {
            $ERRS[] = 'Не удалось выполнить запрос <xmp>'. $query .'</xmp>Ошибка<xmp>'. mysqli_error($db). '</xmp>';
            $ERRS[] = 'таблица:<xmp>'. print_r( @mysqli_fetch_assoc(@mysqli_query($db, 'SHOW CREATE TABLE users')))
            .'</xmp>';
            break;
        }
        $ERRS[] = 'Затронуто строк: '. mysqli_affected_rows($db);
    } while(0);
require "menu.php";
?>
<div>
    <form align="center">
        <table cellpadding="0" cellspacing="3" border="0" align="center">
            <tbody align="center">
                <tr>
                    <td>
                        E-mail:
                        

                        <input type="text" class="bginput" name="email" size="50" accesskey="u" tabindex="1" />
                    </td>
                </tr>
                <tr>
                    <td>
                        Пароль:
                        

                        <input type="password" class="bginput" name="password" size="50" tabindex="1" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <span class="smallfont" style="float:right">
                            <a href=recovery.php>Восстановить пароль</a>
                        </span>
                        <span class="smallfont" style="float:right; margin-right: 10px">
                            <a href=registration.php>Регистрация</a>
                        </span>
                        <label for="cb_cookieuser" class="smallfont">
                            <input type="checkbox" name="cookieuser" value="1" id="cb_cookieuser" tabindex="1" checked="checked" />Запомнить?
                        </label>
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        <button id="input" type="submit" class="knopka">Вход</button>
                        <button id="reset" type="submit" class="knopka">Сброс</button>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
    <?php
    require "blok_Z.php"; // подключение блока контактов
    return 'Вход не выполнен';
    if (isset($_SESSION['logged_in'])) return 0;
    ?>
</div>
...
Рейтинг: 0 / 0
Проблемы с авторизацией php mysql
    #40003156
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25
ничего не работает
"Ex nihilo nihil fit" = "Из ничего и выйдет ничего" © Тит Лукреций Кар.
...
Рейтинг: 0 / 0
Проблемы с авторизацией php mysql
    #40003769
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25,

1. Наверное такое стоит больше постить в форум по Пыху, т.к. тут все-таки вопросы по скулю, ну да ладно.
2. Использовать глобальные переменные в коде - не есть комильфо (минус один балл), и тем более, пробрасывать их в глобальные функции ключом global (ещё минус балл).
3. Вариант работы с mysql выбран, кмк, сильно устаревший, давно уже всем рекомендовано работать через PDO (минус 2 балла вашему преподавателю)
4. Работать напрямую с глобальными массивами (etc $_POST[]) тоже далеко не айс, а тем более принимать в них открытые персональные данные (запрещено законом) .. минус 2 балла вашему преподавателю.
5. Отправлять ответ через echo можно только внутри скобок буферизации вывода, в противном случае нарушается протокол HTTP(S), там первыми должны отдаваться ЗАГОЛОВКИ, их у Вас тут нет (но может это часть чего-то большего) .. условно минус балл.
6. Прямой проброс данных из глобальных массивов в параметры запроса - есть прямой путь стать обладателем мощной sql-иньекции. Минус 2 балла совокупно и Вам и вашему преподу.
7. В первом варианте глобальная функция не используется, или ее использование не очевидно (возможно внутри require), но указанная последовательность исполнения ТРЕБУЕТ ее вызова до выборки из БД (это соединение с БД!). Отсюда - выборка не может вернуть правильный результат "по определению".

По совокупности, смотреть "второй вариант" не стал, тут уже общий итог "отрицателен" .. даже не двойка. ;)
...
Рейтинг: 0 / 0
Проблемы с авторизацией php mysql
    #40004159
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8. Использовать root-доступ к MySQL для выборки пользователей чревато нехорошими последствиями. Нужно изолировать такие транзакции на уровне прав доступа. Не знаю, сколько это минус баллов.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблемы с авторизацией php mysql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]