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

[Урок] Авторизация php

11.10.2015, 16:24. Показов 2201. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех,форумчане!
Решил создать гайд для новичков. Может кому-то поможет!

Простенькая авторизация php.

Ну, давайте приступим к делу.

Создадим несколько файликов, а именно:
  • auth.php
  • logout.php
  • config.php

Далее.. берем файлик config.php и вводим данные Базы Данных.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
session_start();
 
/* Подключение к  MySQL */ 
$link = mysqli_connect( 
            'localhost',  /* Хост, к которому мы подключаемся, тестируем на локалхост */ 
            'user',       /* Имя пользователя */ 
            'password',   /* Используемый пароль */ 
            'world');     /* База данных для запросов по умолчанию */ 
 
if (!$link) { 
   printf("Невозможно подключиться к базе данных. Код ошибки: %s\n", mysqli_connect_error()); 
   exit; 
}
auth.php:
PHP
1
2
3
4
<? // Обьявляем PHP код и..
session_start();  // Начинаем сессию.
include('config.php'); // Подключение БД
?> // Завершаем код PHP и начинаем html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
</head>
<body>
<form method="post" action=""> <!-- method="post" - Публикует всё после нажатия кнопки. Action="" - Нужно оставить пустым если надо публиковать в тот-же файл  -->
<input type="text" name="login" placeholder="Логин">
<!-- name="login" и name="password" нужны для определения строки после публикации -->
<input type="password" name="password" placeholder="Пароль">
<button type="submit">Submit</button> <!-- Публикует введённую информацию -->
</form>
</body>
</html>
Когда создали поля и кнопочку опубликовать, мы приступим к авторизации

После введения данных в поля и нажатия кнопки, данные сохраняются в $_POST[''], в кавычки, нужно вводить name, которое мы задавали в полях для ввода. В моём случае это - Login и Password, значит мы будем их принимать с помощью - $_POST['login'] и $_POST['password']. Чтобы облегчить работу, можно заключить их в переменную $login и $password.
Вообщем, так
PHP
1
2
3
4
5
6
<?
session_start();
include('config.php');
$login = $_POST['login'];
$password= $_POST['password']; 
?>
Сделаем SQL-запрос

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
session_start();
include('config.php');
$login = mysql_real_escape_string($_POST['login']);
$password = mysql_real_escape_string($_POST['password']);
 
$query = mysqli_query("SELECT * FROM `users` WHERE `login` ='$login'"); // Вместо users, ваша БД, где находятся аккаунты. Кратко: Выбрать всё из таблици `Пользователи` если строка `логин` равняется введённому в поле логину.
    $ud = mysql_fetch_array($query); // Здесь мы принимаем запрос и суём его в переменную, в моём случае - $ud.
 
if ($ud['password'] == $password){ // И если, поле Пароль, в таблице совпадает с введённым нами паролем, в сессию пишет true.
$_SESSION['status'] = true; 
echo 'Вы успешно авторизовались!';
} else {
echo 'Ошибка авторизации!!';
}
 
?>
Потом, тупо совмещаем код и выйдет:
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
26
27
28
29
<?
session_start();
include('config.php');
$login = mysql_real_escape_string($_POST['login']);
$password = mysql_real_escape_string($_POST['password']);
 
$query = mysqli_query("SELECT * FROM `users` WHERE `login` ='$login'"); // Вместо users, ваша БД, где находятся аккаунты. Кратко: Выбрать всё из таблици `Пользователи` если строка `логин` равняется введённому в поле логину.
    $ud = mysql_fetch_array($query); // Здесь мы принимаем запрос и суём его в переменную, в моём случае - $ud.
 
if ($ud['password'] == $password){ // И если, поле Пароль, в таблице совпадает с введённым нами паролем, в сессию пишет true.
$_SESSION['status'] = true; 
echo 'Вы успешно авторизовались!';
} else { // Если не совпадают пароли, то выдаёт ошибку.
echo 'Ошибка авторизации!'; 
}
 
<html>
<head>
</head>
<body>
<form method="post" action=""> <!-- method="post" - Публикует всё после нажатия кнопки. Action="" - Нужно оставить пустым если надо публиковать в тот-же файл  -->
<input type="text" name="login" placeholder="Логин">
<!-- name="login" и name="password" нужны для определения строки после публикации -->
<input type="password" name="password" placeholder="Пароль">
<button type="submit">Submit</button> <!-- Публикует введённую информацию -->
</form>
</body>
</html>
?>
logout.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
<?
session_start();
if ($_SESSION['status'] == true){
 
echo 'Вы авторизованы!';
 
?> 
 
<meta http-equiv="refresh" content="1;URL=/auth.php" />  <!-- Вместо URL, введите ссылку переадресации. Вместо цифры 1, в content, впишите 0 если хотите убрать задержку  -->
 
<?
 
} else {
 
 
session_destroy();
 
?> 
 
<meta http-equiv="refresh" content="1;URL=/auth.php" />
 
<?
}
Вообщем Всё! Для новичков думаю будет полезно! Многие могут сказать, что MySql устарел и т.п
Но для меня очень удобно.
Спасибо за Внимание!
Будут вопросы, непременно их выслушаю
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2015, 16:24
Ответы с готовыми решениями:

Урок: Контакт форма AJAX+PHP+CSS
Приветствую уважаемые Сайберфорумчане :) В данном уроке я хочу показать вам как создать форму при помощи ajax + php + css. Поехали ;) ...

PHP авторизация
Нашел в инете как заделать php авторизацию, импортировал таблицы в бд, прописал в скриптах данные для соединения с бд, как бы зарегал...

авторизация php
Подскажите пожалуйста, пароль ввожу верный но все равно пишет что &quot;пароль не верный&quot; С чем это может быть связано ? Код выкладывайте...

9
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
11.10.2015, 16:32
balbesenok, не обижайся, но рано тебе других учить, тебе самому еще учиться и учиться.
1
 Аватар для balbesenok
2 / 2 / 0
Регистрация: 22.12.2013
Сообщений: 86
11.10.2015, 16:55  [ТС]
Оцениваешь по количеству сообщений и т.п?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
11.10.2015, 17:13
Цитата Сообщение от balbesenok Посмотреть сообщение
Оцениваешь по количеству сообщений и т.п?
1) код не рабочий.
2) даже если его исправить, написано плохо. Содержит ошибоки, свойственных либо новичкам.
0
 Аватар для balbesenok
2 / 2 / 0
Регистрация: 22.12.2013
Сообщений: 86
11.10.2015, 17:50  [ТС]
Jewbacabra, так поясни мои ошибки тогда уж
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
11.10.2015, 18:28

Не по теме:

Не расстраивайте ТС.

balbesenok, имхо, гайды лучше размещать на habrahabr.ru либо на Вашем персональном блоге который вы можете создать и размещать там что угодно. Как то не принято на кибер форуме писать технические статьи, разные самоучители. Здесь в основном общение вида "Вопрос - Ответы".

ТС решил поделиться своими знаниями, что тут такого?



Добавлено через 28 минут

Не по теме:

balbesenok, есть на форуме раздел Бета-тестирование. Но там выкладывают не свои статьи, справочники, а более-менее завершенные свои собственные проекты, программки, скрипты. Раздел больше для чего то завершенного, а не для блоков кода, модулей. Есть еще возможность создавать свои блоги. Но их наверное никто не смотрит. Мою запись в блоге которая когда то была, за 2 года только 50 раз просмотрели.

Ещё в разделе php для начинающих должна быть закрепленная тема "Обмен готовыми решениями" но её нет. В каком то из разделов форума видел тему с таким названием.

Можете ещё просмотреть раздел Теория и практика программирования

1
 Аватар для balbesenok
2 / 2 / 0
Регистрация: 22.12.2013
Сообщений: 86
11.10.2015, 18:29  [ТС]
tolimadokara, Хорошо спасибо за информацию
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
11.10.2015, 18:36
Цитата Сообщение от balbesenok Посмотреть сообщение
так поясни мои ошибки тогда уж
Если кратко:
Цитата Сообщение от balbesenok Посмотреть сообщение
$query = mysqli_query("SELECT * FROM `users` WHERE `login` ='$login'"); // Вместо users, ваша БД, где находятся аккаунты. Кратко: Выбрать всё из таблици `Пользователи` если строка `логин` равняется введённому в поле логину. $ud = mysql_fetch_array($query); // Здесь мы принимаем запрос и суём его в переменную, в моём случае - $ud.
mysqli и mysql не совместимы между собой. Выбирать что-то одно, лучше первое.

Цитата Сообщение от balbesenok Посмотреть сообщение
$login = mysql_real_escape_string($_POST['login']);
а если в пост запросе не пришел логин?
Функцию mysql_real_escape_string() можно использовать только после того, как установлено соединение с MySQL. В противном случае возникнет ошибка уровня E_WARNING, а функция возвратит FALSE. Если link_identifier не указан, используется последнее открытое соединение.
Где тут установка соединения с использованием mysql_connect??? Опять мешанина из mysql и mysqli

Пароль нельзя хранить в открытом виде

Нет защиты от xss атак

Это были на мой взгляд самые серьезные ошибки. Теперь менее значительные, но тем не менее тоже ошибки
Цитата Сообщение от balbesenok Посмотреть сообщение
$login = $_POST['login']; $password= $_POST['password'];
а если в post запросе нет этих данных?
Цитата Сообщение от balbesenok Посмотреть сообщение
$query = mysqli_query("SELECT * FROM `users` WHERE `login` ='$login'"); // Вместо users, ваша БД, где находятся аккаунты. Кратко: Выбрать всё из таблици `Пользователи` если строка `логин` равняется введённому в поле логину. $ud = mysql_fetch_array($query); // Здесь мы принимаем запрос и суём его в переменную, в моём случае - $ud. if ($ud['password'] == $password){ // И если, поле Пароль, в таблице совпадает с введённым нами паролем, в сессию пишет true.
А если запрос ничего не вернул?

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
Не расстраивайте ТС.
Пусть уж лучше щас растраивается, чем в более ответственные моменты

0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
11.10.2015, 18:43
да, balbesenok, в Вашем коде вам надо обратить внимание на безопасность скрипта авторизации, фильтровать значения переменных поступающих к форме, и ещё оформлять код более наглядней. См. в интернете информацию о стандартах оформления кода.
0
 Аватар для balbesenok
2 / 2 / 0
Регистрация: 22.12.2013
Сообщений: 86
11.10.2015, 19:19  [ТС]
Позже , tolimadokara, хорошо спасибо за наводки. Буду исправлять и учиться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2015, 19:19
Помогаю со студенческими работами здесь

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

Авторизация в PHP
Здравсвуйте, я в php хочу сделать авторизацию, логин прописываю в куки(числовая переменная). Если переменная не пуста, подключаю модуль...

Авторизация на php
Делаю авторизацию на php для своего сайта, но появилась проблема-код не работает :( Сам код &lt;? $db = mysql_connect...

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

Авторизация php
Приветствую. Прошел основы php. Решил написать авторизацию. Штампую по уроку на youtube, но у меня почему-то не работает. Хотя всё 1:1. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru