Помощник
|
Авторизация php mysql |
andrey_94
|
Сообщение
#1
|
||
|
|
||
|
|||
andrey_94
|
Сообщение
#2
|
|
никто не поможет?
|
|
|
Letmetouchyou |
10.11.2009, 17:41;
Ответить: Letmetouchyou
Сообщение
#3
|
|
[PHP]do
{ if ($login == $row['login'] ) { if ($row['pass'] == $password) { //если пароли совпадают, то $_SESSION['login']=$row['login']; $_SESSION['id']=$row['id']; echo "Вы успешно вошли на сайт! <a href='index.php'>Главная страница</a><br>" ; } break; } else { exit ("Извините, введённый вами login или пароль неверный!<br>Вернитесь <a href='enter.php'>назад</a> чтобы повторить попытку."); } } while ($row = mysql_fetch_array ($query)); [/PHP] попробуйте так |
|
|
Letmetouchyou |
10.11.2009, 17:42;
Ответить: Letmetouchyou
Сообщение
#4
|
|
или
[PHP]$query = mysql_query("SELECT login, pass FROM users WHERE 1='1'", $connect); //извлекаем из базы все данные о пользователе с введенным логином do { if ($login != $row["login"]) { //если пользователя с введенным логином не существует exit ("Извините, введённый вами login или пароль неверный!<br>Вернитесь <a href='enter.php'>назад</a> чтобы повторить попытку."); } else { //если существует, то сверяем пароли if ($row['pass'] == $password) { //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел! $_SESSION['login']=$row['login']; $_SESSION['id']=$row['id']; //эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь echo "Вы успешно вошли на сайт! <a href='index.php'>Главная страница</a><br>" ; } else { //если пароли не сошлись exit ("Извините, введённый вами login или пароль неверный."); } } } while($row = mysql_fetch_array($query));[/PHP] |
|
|
andrey_94
|
Сообщение
#5
|
|
первый код
Не работает. Теперь при правильном вводе данных пишет: Извините, введённый вами login или пароль неверный! Вернитесь назад чтобы повторить попытку. |
|
|
andrey_94
|
Сообщение
#6
|
|
Второй код выводит
Вы успешно вошли на сайт! Главная страница Извините, введённый вами login или пароль неверный! Вернитесь назад чтобы повторить попытку. При этом сессия не началась |
|
|
Witu |
10.11.2009, 18:23;
Ответить: Witu
Сообщение
#7
|
|
andrey_94, чо за видео курс такой?)
WHERE login=******** AND pass=*********** это идиотизм селектить все данные и потом сравнивать а если а базе тыщ 5 пользователей? |
|
|
r3ntg3n |
10.11.2009, 19:50;
Ответить: r3ntg3n
Сообщение
#8
|
|
Первое, для ребят, которые предлагали метод с сессией, перед тем, как писать данные в глобальный массив $_SESSION[], надо сессию начать функцией session_start();
Второе, при авторизации через мускул адекватнее сделать так: [php] session_start(); if (!$_SESSION['id']) { // проверяем, не была ли пройдена авторизация раньше, чтобы еще раз не посылать запрос в БД $query = 'SELECT id FROM users WHERE login=\''.$login.'\' AND password=\''.$password; $id_query = mysql_query($query); if (!id_query) { die ('Ошибка выполнения запроса'); } else { if (0 == mysql_num_rows($id_query) { die ('Логин/пароль неверный'); } else { list($id) = mysql_fetch_row($id_query); $_SESSION['id'] = $id; // запись переменной в сессию, для последующей проверки авторизации echo ('Авторизация успешна'); } } } else { echo ('Авторизация успешна'); // если в сессии есть ИД пользователя, значит авторизация была пройдена раньше, выводим сообщение } [/php]Переменные $login и $password конечно же получаете из $_POST, предварительно обработав от слешей и тегов функциями htmlspecialchars(stripslashes($_POST['login'])). не обязательно функции разделять, можно вложить одну в другую. Еще можно в форму в поле hidden писать ИД сессии, повышаете уровень защиты формы от межсайтового скриптинга, а при отправке формы проверять полученное значение из формы с значением, которое вернет обработчик формы. В случае несовпадения - сообщение об ошибке. И еще один совет - пароли не храните в чистом виде в базе, хэшируйте, хотя бы по MD5 алгоритму. Пусть там и говорят, что хэшах от MD5 находят коллизии на 4-8 часов. Можете експоудить строку с паролем, перемешать символы и тогда хешировать, можно даже несколько раз. И результирующий хэш писать в базу в поле пароля. при авторизации введенный пароль захэшировать таким же образом и сравнить с результатом из базы. Совпали - добро пожаловать. Для этой цели удобнее всего написать функцию хэширования, и апдейтить ее по мере того, как придумаете новые алгоритмы. Можно воспользоваться комбинацией из MD5 и SHA1, можно к паролю приписать несколько символов и тогда разбить по-символьно, перемешать и хэшировать. Все уже зависит от Вас, как Вам будет угодно ;) |
|
|
andrey_94
|
Сообщение
#9
|
|
HTMLandPHP
Если вы про это: [php]SELECT login, pass FROM users WHERE 1='1'[/php]Я по разному пытался сделать... изначально такого WHERE 1='1' не было. Я просто подумал что почему-то выбирается только первая запись в таблице... и создал поле 1, для всех записей по умолчанию 1, чтобы скрипт искал по всей таблице |
|
|
andrey_94
|
Сообщение
#10
|
|
r3ntg3n
Не работает |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое | 5 | CULA | 3289 | 19.12.2023, 18:55 автор: CULA |
|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1168 | 24.11.2023, 14:46 автор: alexey |
|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44760 | 19.7.2023, 10:03 автор: qpPeW |
|
Есть спецы по php/laravel? | 3 | Mixatraider | 1856 | 26.5.2023, 20:48 автор: Mixatraider |
|
Опытный PHP\Python разработчик в поиске интересных задач | 6 | daikzlex | 3360 | 25.5.2023, 13:55 автор: daikzlex |
Текстовая версия | Сейчас: 28.3.2024, 16:55 |