Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
4 / 4 / 1
Регистрация: 06.03.2013
Сообщений: 187

Вывод сообщения после авторизации

19.11.2016, 18:07. Показов 5848. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день есть такой код авторизации пользователя, авторизация проходит пост запросом, по нему есть 2 вопроса.
1)как сделать так что бы после авторизации пользователя показывало ключ который ввели(userkey), и дату(userday), а не всю форму авторизации и надпись вы успешно вошли в систему.
2) как сделать так что бы при вводе на сайте test.ru/login.php была пуская страница или ошибка что доступ закрыт

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
66
67
68
69
70
71
72
73
74
75
76
77
78
 <?php
session_start();
?>
 
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <title>Вход на сайт</title>
</head>
<body>
 
<form action="login.php" method="POST" />
    <table>
        <tr>
            <td>Введите логин:</td>
            <td><input type="text" name="login" /></td>
        </tr>
        <tr>
            <td>Введите пароль:</td>
            <td><input type="password" name="password" /></td>
        </tr>
        <tr>
            <td>Введите Ключ:</td>
            <td><input type="text" name="userkey" /></td>
        </tr>
        <tr>
            <td colspan="2"><input class="button" type="submit" value="Войти" name="submit" /></td> 
        </tr>
    </table>
</form>
 
<?php
$connection = mysqli_connect('localhost', 'root', '1234', 'test') or die(mysqli_error());
 
if (isset($_POST['submit'])) 
{
    if (empty($_POST['login'])) 
    {
        $info_input = 'Вы не ввели логин';
    }
    elseif (empty($_POST['password'])) 
    {
        $info_input = 'Вы не ввели пароль';
    }
    elseif (empty($_POST['userkey'])) 
    {
        $info_input = 'Вы не ввели ключ';
    }
    else 
    {    
        $login = $_POST['login'];
        $password = $_POST['password'];
        $userkey = $_POST['userkey'];       
        $user = mysqli_query($connection, "SELECT `id` FROM `users` WHERE `login` = '$login' AND `password` = '$password' AND `userkey` = '$userkey'");
        $id_user = mysqli_fetch_array($user);
                
        if (empty($id_user['id'])) 
        {
            $info_input = 'Введенные данные не верны';
        }
        else 
        {
           
            $info_input = 'Вы успешно вошли в систему';         
        } 
if (isset($_SESSION['login']) && isset($_SESSION['id'])) 
{
#Здесь все, что может видеть авторизованный пользователь.
}       
    }
}
        
$info_input = isset($info_input) ? $info_input : NULL;
echo $info_input;
?>
 
</body>
</html>
Добавлено через 29 минут
и что нужно изменить чтобы данные из бд находились не в login.php а например db.php
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2016, 18:07
Ответы с готовыми решениями:

Вывод сообщения при авторизации
нужно что-бы при неверном вводе выводило сообщение с ошибкой. проблема заключается в том что в моем коде сообщение выводится помимо...

Вывод сообщения после редиректа
Здравствуйте. При выборе одного из пунктов меню (index.php?id=3) грузится вот такой контент: &lt;form name=&quot;form1&quot;...

Вывод уведомления после отправки сообщения
Всем привет! Имеется форма для отправки сообщений на эл. почту. Она работает. Но после отправки мне надо сделать, чтобы на странице...

16
0 / 0 / 4
Регистрация: 18.11.2016
Сообщений: 19
19.11.2016, 19:22
Лучший ответ Сообщение было отмечено matrixkot как решение

Решение

Я вот тут тебе наговнокодил рабочий примерчик, думаю разберёшься. А вообще юзай MVC это в разы удобнее и проще.
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
<?php
session_start();
$connection = mysqli_connect('localhost', 'root', '1234', 'test') or die(mysqli_error()); //подсоединяемся к БД
 
$content = "<html><head><meta http-equiv='content-type' content='text/html; charset=UTF-8' /><title>Вход на сайт</title></head><body>"; //объявляем заголовки HTML
if (isset($_POST['submit'])) { //если форма отправленна
    $login = $_POST['login'];
    $password = $_POST['password'];
    $userkey = $_POST['userkey'];       
    $user = mysqli_query($connection, "SELECT `id` FROM `users` WHERE `login` = '$login' AND `password` = '$password' AND `userkey` = '$userkey'");
    $id_user = mysqli_fetch_array($user);
            
    if (empty($id_user['id'])) //Если БД не вернула результат
    {
        showForm('Введенные данные не верны'); //показываем форму авторизации с сообщением
    }
    if (isset($_SESSION['login']) && isset($_SESSION['id']))  
    {
        echo "Здесь все, что может видеть авторизованный пользователь.";
    }       
}   
else showForm(); //если форма не отправлялась, просто выводим её без сообщения
 
function showForm($info_input=''){ //если не установенно иначе, сообщения нет
//обрати внимание, что поля для ввода имеют атрибут required - обязательное, поэтому не зачем проверять через PHP все ли поля заполненны
echo "   
    <form action='ask.php' method='POST' />
        $info_input
        <table>
            <tr>
                <td>Введите логин:</td>
                <td><input type='text' name='login' required='required'/></td>
            </tr>
            <tr>
                <td>Введите пароль:</td>
                <td><input type='password' name='password' required='required'/></td>
            </tr>
            <tr>
                <td>Введите Ключ:</td>
                <td><input type='text' name='userkey' required='required'/></td>
            </tr>
            <tr>
                <td colspan='2'><input class='button' type='submit' value='Войти' name='submit' /></td> 
            </tr>
        </table>
    </form>";
}
?>
 
</body>
</html>
0
4 / 4 / 1
Регистрация: 06.03.2013
Сообщений: 187
19.11.2016, 19:52  [ТС]
ты сделал перенаправление на ask.php а мне это не нужно
мне нужно что бы пользователю открывалась таже страница только что бы было написано ключ который он вводил (userkey) и дата которая есть в базе (userday)
0
0 / 0 / 4
Регистрация: 18.11.2016
Сообщений: 19
19.11.2016, 19:56
верни как у тебя был экшен login.php, это я для себя правил, у меня так называлась страница с обработчиком
0
4 / 4 / 1
Регистрация: 06.03.2013
Сообщений: 187
19.11.2016, 21:08  [ТС]
кстати ты подкинул хорошую идею сделать сразу пост запрос на ask.php
реализовал таким методом и она теперь выводит только сообщение что вы вошли в систему
остался только один вопрос как сделать так что бы при авторизации выдавало Ключ (userkey) и дату (userday) из бд вмместо текста что вошли в систему
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
<?php
$connection = mysqli_connect('localhost', 'root', '1234', 'test') or die(mysqli_error());
 
if (isset($_POST['submit'])) 
{
    if (empty($_POST['login'])) 
    {
        $info_input = 'Вы не ввели логин';
    }
    elseif (empty($_POST['password'])) 
    {
        $info_input = 'Вы не ввели пароль';
    }
    elseif (empty($_POST['userkey'])) 
    {
        $info_input = 'Вы не ввели ключ';
    }
    else 
    {    
        $login = $_POST['login'];
        $password = $_POST['password'];
        $userkey = $_POST['userkey'];       
        $user = mysqli_query($connection, "SELECT `id` FROM `users` WHERE `login` = '$login' AND `password` = '$password' AND `userkey` = '$userkey'");
        $id_user = mysqli_fetch_array($user);
                
        if (empty($id_user['id'])) 
        {
            $info_input = 'Введенные данные не верны';
        }
        else 
        {
           
            $info_input = 'Вы успешно вошли в систему';         
        } 
if (isset($_SESSION['login']) && isset($_SESSION['id'])) 
{
#Здесь все, что может видеть авторизованный пользователь.
}       
    }
}
        
$info_input = isset($info_input) ? $info_input : NULL;
echo $info_input;
?>
0
46 / 38 / 26
Регистрация: 11.08.2016
Сообщений: 139
19.11.2016, 21:24
У вас строка из бд есть, я так понял, нужные вам поля - $id_user['userkey'] и $id_user['userday']? Если так, не вижу никакой проблемы в info_input занести их вместо строчки об успешном входе
0
4 / 4 / 1
Регистрация: 06.03.2013
Сообщений: 187
19.11.2016, 21:54  [ТС]
вношу их так выдает синтаксическую ошибку
PHP
1
$info_input = $id_user['userkey'], $id_user['userday'];
0
46 / 38 / 26
Регистрация: 11.08.2016
Сообщений: 139
19.11.2016, 22:18
PHP
1
$info_input = $id_user['userkey'].", ".$id_user['userday'];
0
4 / 4 / 1
Регистрация: 06.03.2013
Сообщений: 187
20.11.2016, 02:56  [ТС]
PHP
1
$info_input = $id_user['userkey'].", ".$id_user['userday'];
при таком коде он выводит только запятую которая стоит между значениями
0
0 / 0 / 4
Регистрация: 18.11.2016
Сообщений: 19
20.11.2016, 06:08
В квадратных скобках указывай соответствующие поля в БД, синтаксис тут правильный, значит вопросы к БД
0
4 / 4 / 1
Регистрация: 06.03.2013
Сообщений: 187
20.11.2016, 11:27  [ТС]
поля тоже правильные, даже userkey берется из авторизации с этим проблем не должно быть, почему то выводит информацию только из " " двойных скобок а которая за ними и перед нет

Добавлено через 11 минут
реализовал это немножко по другому
PHP
1
2
3
4
5
6
$_SESSION['password'] = $password; // Заносим в сессию  пароль
         $_SESSION['login'] = $login; // Заносим в сессию  логин
         $_SESSION['userkey'] = $userkey;  // Заносим в сессию  ключ
         $_SESSION['userkey'] = $userday;  // Заносим в сессию  дни
         $_SESSION['id'] = $result['id']; // Заносим в сессию  id
         echo '<div align="center">Вы успешно вощли в систему: '.$_SESSION['userkey'].', '.$_SESSION['userday'].',</div>'; // Выводим сообщение что пользователь авторизирован
только она выдает переменные которые вводят при аторизации, а вот данные по дате не хочет вытаскивать
0
20.11.2016, 13:53

Не по теме:

Цитата Сообщение от dron817 Посмотреть сообщение
поля для ввода имеют атрибут required - обязательное, поэтому не зачем проверять через PHP все ли поля заполненны
Не нужно путать: required нужен для того, чтобы пользователь не пропустил это поле и заполнил его, а не для того, чтобы не проверять на стороне сервера заполненность поля.

1
0 / 0 / 4
Регистрация: 18.11.2016
Сообщений: 19
20.11.2016, 15:39
Лучший ответ Сообщение было отмечено matrixkot как решение

Решение

Kerry_Jr, Ни в коем случае не путаю, ты можешь заметить, что в изначальном примере, была проверка заполненности полей на стороне сервера, но её необходимость отпадает, если форма не сможет быть отправлена с пустыми полями. Если ошибаюсь поправьте

matrixkot, Такой запрос используешь?
PHP
1
  $user = mysqli_query($connection, "SELECT `id` FROM `users` WHERE `login` = '$login' AND `password` = '$password' AND `userkey` = '$userkey'");
Если да, попробуй такой:
PHP
1
  $user = mysqli_query($connection, "SELECT * FROM `users` WHERE `login` = '$login' AND `password` = '$password' AND `userkey` = '$userkey'");
0
4 / 4 / 1
Регистрация: 06.03.2013
Сообщений: 187
20.11.2016, 15:57  [ТС]
воо теперь сработало все пашет на ура

Добавлено через 12 минут
таким образом переменные с бд идет через запятую, а как сделать так что бы они выводились с новой строки?
логин
дата
PHP
1
$info_input = $id_user['userkey'].", ".$id_user['userday'];
Добавлено через 3 минуты
пробовал таким образом но код выводит только последнюю переменную
PHP
1
2
$info_input = $id_user['userkey'];
         $info_input = $id_user['userday'];
0
20.11.2016, 16:32

Не по теме:

Цитата Сообщение от dron817 Посмотреть сообщение
но её необходимость отпадает, если форма не сможет быть отправлена с пустыми полями
Есть такая библиотека, cURL называется. Так вот, с ее помощью можно отправлять запросы. А есть нерадивые недохакеры, которых хлебом не корми, дай поискать уязвимости на сайтах. К чему я все это: отправляем неполный POST-запрос(без одного или более параметра или вообще пустой) и получаем ошибку с полным путем скрипта на сервере. Именно поэтому всегда нужно все проверять на сервере, даже если на клиенте уже есть проверка.

0
0 / 0 / 4
Регистрация: 18.11.2016
Сообщений: 19
20.11.2016, 20:35
Лучший ответ Сообщение было отмечено matrixkot как решение

Решение

matrixkot, добавь html тег переноса строки: "</br>"
PHP
1
$info_input = $id_user['userkey']."</br>".$id_user['userday'];
а в твоём примере, конечно будет выводиться только последнее, ведь ты заменяешь предыдущее значение новым
PHP
1
2
$info_input = $id_user['userkey'];
$info_input = $id_user['userday'];
для того, чтоб обеднить (слепить) значения с предыдущим, используй ".="
PHP
1
2
$info_input = $id_user['userkey'];
$info_input .= $id_user['userday'];
0
4 / 4 / 1
Регистрация: 06.03.2013
Сообщений: 187
20.11.2016, 22:43  [ТС]
спс выручил

Добавлено через 2 часа 4 минуты
есть одна небольшая проблема если указываю </br> то в проге он отображается и не возвращается должный ответ
а если использую такой ".=" то данные идут в одну строку а не в 2 как нужно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2016, 22:43
Помогаю со студенческими работами здесь

Перенаправление / вывод сообщения после обработки формы
Как вывести сообщение с информацией после обработки введенных пользователем данных? Сейчас используется редирект на страницу...

После авторизации повторно перекидывает обратно на страницу авторизации
Так, у меня есть проблема. Как только авторизируюсь, перекидывает обратно на авторизацию. Вот код, login.php: &lt;? ...

Вывод скрытого блоки либо информации после авторизации либо регистрации пользователя на сайте
Ув. знатоки, такой вопрос, есть сайт, нужно чтобы после авторизации &quot;Блок &lt;div&gt; с регистрацией&quot; заменялся на другой блок, как это...

Перенаправление после авторизации
Здравствуйте. Будьте добры, подскажите, как сделать перенаправление на главную страницу сайта, после авторизации. &lt;?php require...

Редирект после авторизации
Всем добрый вечер. Собственно нужен совет знающих. У меня есть подобие сайта, с авторизацией\регистрацией, мне нужно теперь сделать так,...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru