Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для knuthamsun
0 / 0 / 0
Регистрация: 16.08.2014
Сообщений: 78

Авторизация и аутентификация

11.02.2016, 20:01. Показов 2359. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Ребят нужна помощь. Я сам очень новичок, но таки элементарную регистрацию и авторизацию сделал.
Вот код:регистрации:

PHP/HTML
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
<?
include("blocks/header.php");
    include("my_conn.php");
?>
 
<?
 
    if(isset($_POST['submit'])) { //ЕСЛИ НАЖАТА кнопка SUBMIT
        $username = $_POST['username']; 
        $login = $_POST['login'];
        $password = $_POST['password'];
        $r_password = $_POST['r_password']; //со всеми этими данными
        if ($password == $r_password) {
            $password = md5($password); //с паролем зашифрованым по md5
            $query = mysql_query("INSERT INTO users VALUES ('','$username','$login','$password')") or die(mysql_error()); // тогда делаем ЗАПРОС в БД
        }
        else {  
            die('Password dont match');
        }
    }
    
    
    if ($check == true) {
        echo ("Вы залогинились, Вам это показывается");
    }
    else { echo ("Залогиньтесь для просмотра сообщения"); //отображение контента для залогинившихся пользователей
    }
?>
 
<center>
 
<form method="post" action="my_register.php">
 
    <input type="text" name="username" placeholder="Username" required /><br>
    <input type="text" name="login" placeholder="login" required /><br>
    <input type="password" name="password" placeholder="password" required /><br>
    <input type="password" name="r_password" placeholder="repeat password" required /><br>
    <input type="submit" name="submit" value="Register"  />
 
</form>
 
</center>
Вот код авторизации:

PHP/HTML
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
<?
session_start();
session_register("e_login");
$_SESSION['e_login'] = $e_login;
?>
 
 
<?
 
include("my_conn.php");
include("blocks/header.php");
 
 
 
    
    if(isset($_POST['enter'])) {
        $e_login = $_POST['e_login'];
        $e_password = md5($_POST['e_password']);
        
        $query = mysql_query("SELECT * FROM users WHERE login = '$e_login'"); //Делаем запрос в БД и БЕРЁМ только из юзеров  ГДЕ логин СОВПАДАЕТ с введённым Создали запрос. Теперь надо его обработать                                                                       
        $user_data = mysql_fetch_array($query);//Теперь создаём массивчик
        //Теперь проверяем
        if ($user_data['password'] == $e_password) { //Если пароль в базе данных совпадает с тем, который ввёл пользователь
            echo "Ok";
            $check = true; //Проверка, означает, что человек залогинился (для дальнейшего отображения или не отображения контента)
            
        }
                else {
                    echo "Wrong password or login";
                }
    
    }
    
    if ($check == true) {
        echo ("Вы залогинились, Вам это показывается");
 
 
session_start();
session_register('e_login');
 
    }
    else { echo ("Залогиньтесь для просмотра сообщения"); //отображение контента для залогинившихся пользователей
    }
?>
 
 
 
 
 
<form method="post" action="my_login.php">
 
 
    <input type="text" name="e_login" placeholder="login" required /><br>
    <input type="password" name="e_password" placeholder="password" required /><br>
    <input type="submit" name="enter" value="Enter"  />
    <input type="submit" value="logout" />
 
</form>
 
<?
session_start();
$_SESSION["name"] = "$e_login";
?>
 
<a href="test.php">Test</a>


Там я уже сразу добавил сессии, как написано и на форумах, и в книжках, впереди всего кода. И подобавлял session_start() на страницу, где мне нужно потом отобразить "Привет $username!"

Но ничего не получается... В чем ошибка?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2016, 20:01
Ответы с готовыми решениями:

двухфакторная аутентификация
Здравствуйте. Наслышан про двухфакторную аутентификацию от гугл. Можете рассказать что это такое и сложно ли это реализовать? Спасибо.

HTTP-аутентификация
На php.net дан пример HTTP-аутентификации. Как переписать его, чтобы значения логина и пароля сравнивались со значениями в БД и только,...

http аутентификация
всем привет подскажите как реализовать http аутентификацию из скрипта попробую объяснить: доступ к папке на сервере через http...

4
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
11.02.2016, 20:13
Цитата Сообщение от knuthamsun Посмотреть сообщение
Но ничего не получается
Ничего это как? Белый лист?
0
 Аватар для knuthamsun
0 / 0 / 0
Регистрация: 16.08.2014
Сообщений: 78
11.02.2016, 20:15  [ТС]
Не не.. не белый лист. Всё выводится как было ,только пишет либо "Привет username" либо просто "Привет". Либо ещё как-то, но только не тот логин ,который я ввёл на предыдущей странице..(
0
 Аватар для ASKazin
7 / 7 / 3
Регистрация: 03.02.2016
Сообщений: 52
Записей в блоге: 3
14.02.2016, 11:48
Лучший ответ Сообщение было отмечено knuthamsun как решение

Решение

Подключение к БД:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
//Подключение к базе данных mySQL с помощью PDO
try {
    $db = new PDO('mysql:host=localhost;dbname=test_base', 'root', '', array(
        PDO::ATTR_PERSISTENT => true
    ));
 
} catch (PDOException $e) {
    print "Ошибка соединения!: " . $e->getMessage() . "<br/>";
    die();
}
?>

Форма регистрации:
Кликните здесь для просмотра всего текста
HTML5
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
<form class="form-horizontal" action="" method="POST">
    <div class="form-group">
        <label for="email" class="col-sm-2 control-label">E-mail</label>
        <div class="col-sm-10">
            <input class="form-control" type="email" id="email" name="email" placeholder="E-mail">
        </div>
    </div>
    <div class="form-group">
        <label for="pass" class="col-sm-2 control-label">Пароль</label>
        <div class="col-sm-10">
            <input class="form-control" type="password" id="pass" name="pass" placeholder="Пароль">
        </div>
    </div>
    <div class="form-group">
        <label for="pass2" class="col-sm-2 control-label">Пароль</label>
        <div class="col-sm-10">
            <input class="form-control" type="password" id="pass2" name="pass2" placeholder="Пароль">
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" name="submit" class="btn btn-default">Зарегистроваться</button>
        </div>
    </div>
</form>

Обработчик формы регистрации:
Кликните здесь для просмотра всего текста
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
/* Если нажата кнопка на регистрацию,
начинаем проверку */
if (isset($_POST['submit'])) {
    // Утюжим пришедшие данные
    if (empty($_POST['email']))
        $err[] = '<div class="alert alert-danger" role="alert">Поле Email не может быть пустым!</div>';
    else {
        if (emailValid($_POST['email']) === false)
            $err[] = '<div class="alert alert-danger" role="alert">Не правильно введен E-mail</div>' . "\n";
    }
 
    if (empty($_POST['pass']))
        $err[] = '<div class="alert alert-danger" role="alert">Поле Пароль не может быть пустым</div>';
 
    if (empty($_POST['pass2']))
        $err[] = '<div class="alert alert-danger" role="alert">Поле Подтверждения пароля не может быть пустым</div>';
 
    // Проверяем наличие ошибок и выводим пользователю
    if (count($err) > 0)
        echo showErrorMessage($err);
    else {
        /* Продолжаем проверять введенные данные
        Проверяем на совпадение пароли */
        if ($_POST['pass'] != $_POST['pass2'])
            $err[] = '<div class="alert alert-danger" role="alert">Пароли не совпадают</div>';
 
        // Проверяем наличие ошибок и выводим пользователю
        if (count($err) > 0)
            echo showErrorMessage($err);
        else {
            /* Проверяем существует ли у нас
            такой пользователь в БД */
            $sql = 'SELECT `login`
                    FROM `' . DBPREFIX . 'reg`
                    WHERE `login` = :login';
            // Подготавливаем PDO выражение для SQL запроса
            $stmt = $db->prepare($sql);
            $stmt->bindValue(':login', $_POST['email'], PDO::PARAM_STR);
            $stmt->execute();
            $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
 
            if (count($rows) > 0)
                $err[] = '<div class="alert alert-danger" role="alert">К сожалению Логин: <b>' . $_POST['email'] . '</b> занят!</div>';
 
            // Проверяем наличие ошибок и выводим пользователю
            if (count($err) > 0)
                echo showErrorMessage($err);
            else {
                // Получаем ХЕШ соли
                $salt = salt();
 
                // Солим пароль
                $pass = md5(md5($_POST['pass']) . $salt);
 
                /* Если все хорошо, пишем данные в базу */
                $sql = 'INSERT INTO `' . DBPREFIX . 'reg`
                        VALUES(
                                "",
                                :email,
                                :pass,
                                :salt,
                                "' . md5($salt) . '",
                                0,
                                3
                                )';
                // Подготавливаем PDO выражение для SQL запроса
                $stmt = $db->prepare($sql);
                $stmt->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
                $stmt->bindValue(':pass', $pass, PDO::PARAM_STR);
                $stmt->bindValue(':salt', $salt, PDO::PARAM_STR);
                $stmt->execute();
 
                // Сбрасываем параметры
                header('Location:' . HOST . '?mode=reg&status=ok');
                exit;
            }
        }
    }
}

Форма авторизации:
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<form class="form-horizontal" action="" method="POST">
    <div class="form-group">
        <label for="email" class="col-sm-2 control-label">E-mail</label>
        <div class="col-sm-10">
            <input class="form-control" type="email" id="email" name="email" placeholder="E-mail">
        </div>
    </div>
    <div class="form-group">
        <label for="pass" class="col-sm-2 control-label">Пароль</label>
        <div class="col-sm-10">
            <input class="form-control" type="password" id="pass" name="pass" placeholder="Пароль">
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" name="submit" class="btn btn-default">Войти</button>
        </div>
    </div>
</form>

Обработчик формы авторизации:
Кликните здесь для просмотра всего текста
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
// Выход из авторизации
if (isset($_GET['exit']) == true) {
    // Уничтожаем сессию
    session_destroy();
 
    // Делаем редирект
    header('Location:' . HOST . '?mode=auth');
    exit;
}
 
// Если нажата кнопка то обрабатываем данные
if (isset($_POST['submit'])) {
    // Проверяем на пустоту
    if (empty($_POST['email']))
        $err[] = '<div class="alert alert-danger" role="alert">Не введен Логин</div>';
 
    if (empty($_POST['pass']))
        $err[] = '<div class="alert alert-danger" role="alert">Не введен Пароль</div>';
 
    // Проверяем email
    if (emailValid($_POST['email']) === false)
        $err[] = '<div class="alert alert-danger" role="alert">Не корректный E-mail</div>';
 
    // Проверяем наличие ошибок и выводим пользователю
    if (count($err) > 0)
        echo showErrorMessage($err);
    else {
        /* Создаем запрос на выборку из базы
        данных для проверки подлинности пользователя */
        $sql = 'SELECT * FROM `' . DBPREFIX . 'reg` AS `u`
            LEFT JOIN `' . DBPREFIX . 'role` AS `r` ON `u`.`role` = `r`.`id_role`
            WHERE `login` = :email
            AND `status` = 1';
        // Подготавливаем PDO выражение для SQL запроса
        $stmt = $db->prepare($sql);
        $stmt->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
        $stmt->execute();
 
        // Получаем данные SQL запроса
        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
 
        // Если логин совпадает, проверяем пароль
        if (count($rows) > 0) {
 
            // Получаем данные из таблицы
            if (md5(md5($_POST['pass']) . $rows[0]['salt']) == $rows[0]['pass']) {
                $_SESSION['user'] = true;
                $_SESSION['login'] = $rows[0]['login']; /* $_POST['email'] */
                $_SESSION['role'] = $rows[0]['role'];
                $_SESSION['user_name'] = $rows[0]['name'];
                $_SESSION['company'] = $rows[0]['r_company'];
                $_SESSION['user_tel'] = $rows[0]['tel'];
                $_SESSION['avatar'] = 'http://***.ru/uploads/avatars/' . $rows[0]['avatar'];
 
                // Сбрасываем параметры
                header('Location:' . HOST . '?mode=auth');
                exit;
            } else
                echo showErrorMessage('<div class="alert alert-danger" role="alert">Неверный пароль!</div>');
        } else {
            echo showErrorMessage('<div class="alert alert-danger" role="alert">Логин <b>' . $_POST['email'] . '</b> не найден!</div>');
        }
    }
}

Вывод информации после авторизации:
Кликните здесь для просмотра всего текста
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
//Проверяем зашел ли пользователь
if ($user === false) {
    echo '<div class="alert alert-info" role="alert">Привет Гость, доступ закрыт авторизируйтесь!</div>' . "\n";
}
if ($user === true) {
    //Пишем приветствие
    echo '<div class="alert alert-success" role="alert">Добро пожаловать ' . $_SESSION['login'] . '
    Ваш уровень доступа ' . $_SESSION['role'] . '
    <a href="' . HOST . '?mode=auth&exit=true">ВЫЙТИ</a></div>';
 
    //Запрос на выборку контента согласно роли
    $sql = 'SELECT * FROM `' . DBPREFIX . 'content`
            WHERE `role` LIKE "%' . $_SESSION['role'] . '%"';
    $stmt = $db->prepare($sql);
 
    //Выводим контент
    if ($stmt->execute()) {
 
        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
 
        foreach ($rows as $val) {
            echo '# - <strong>' . $val['id_content'] . '</strong><br/>';
            echo $val['content'] . '<br/><br/>';
        }
    }
}
1
 Аватар для knuthamsun
0 / 0 / 0
Регистрация: 16.08.2014
Сообщений: 78
17.02.2016, 22:18  [ТС]
Спасибо за помощь)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2016, 22:18
Помогаю со студенческими работами здесь

Аутентификация и сессии
Как профессионалы делают авторизацию юзеров на своих сайтах и в CMS? Нужны примеры кода (а не просто название какой-нибудь CMS) или...

Аутентификация и создание платежа
Доброго времени суток, дали тестовое задание, необходимо сделать аутентификацию и далее сделать страницу создания платежа, который будет...

Аутентификация, вход на сайт
Привет всем. Недавно запилил регистрацию на сайте, все работает, проверил. Затем начал пилить аутентификацию. При попытке...

Html + php + mysql аутентификация
Доброго времени суток, хотел узнать как можно реализовать на html странице аутентификацию? Попытка гуглить не принесла мне желаемого...

Аутентификация пользователей через VK,TWITTER,FASEBOOK
Здравствуйте. Подскажите как сделать залогиневание пользователей через указанные в названии темы ресурсы. Необходимо не просто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru