Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с авторизацией [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Описание: Не могу сделать авторизацию
BoJlod9I
Отправлено: 25 Февраля, 2011 - 13:23:33
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Февр. 2011  


Помог: 1 раз(а)




сделал авторизацию такую
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. require_once ('db.php');
  4.  
  5.  
  6. $log = $_POST['password'];
  7. $auth = mysql_query("SELECT pass FROM users WHERE name='".$_POST['user']."'");
  8. $aa = mysql_fetch_array($auth);
  9.         if ($log == $aa[pass])
  10.         {
  11.                 header ("location: index.php");
  12.         }
  13.         else
  14.         {
  15.                 echo "Авторизация не прошла!";
  16.         }
  17.  
  18. ?>


и ошибку пишет в 8 строке

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in M:\home\ka4\www\user\start.php on line 8
Авторизация не прошла!

(Добавление)
ALEN а как тогда сделать через сессию?
есть пример?
или расскажи по пунктам
что нужно сделать если есть сессия!
 
 Top
ALEN
Отправлено: 25 Февраля, 2011 - 13:36:45
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Ну для начала отправляй в БД сразу логин и пароль, только обрабатывай через mysqli_real_escape_string , ставь сразу к запросу LIMIT 1, потом проверяй, если число строк равно 1 найденных, то добавляешь сессию, в сессии кидаешь индикатор какой-то чтоб при повторной проверки авторизации, твой скрипт понимал, что все ок, при выходе заменяешь индикатор, который будет говорить, что пользователь не авторизован. Вот и весь процесс .
(Добавление)
И на будущее, никогда таких вещей не делай name='".$_POST['user']."' с такой фигней можно отправить тебе через $_POST['user'] строку кторая будет обрезать тебе хвост твоего запроса, а там дописывать нечто страшное например создаст тебе в БД нового пользователя с правами админа и будет вас двое, только ты про второго можешь сразу и не узнать, а только в последствии.
 
 Top
BoJlod9I
Отправлено: 25 Февраля, 2011 - 13:43:17
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Февр. 2011  


Помог: 1 раз(а)




ALEN А можно всё тоже но по русски =)
я начинающий кодер меня даже кодером нельзя назвать =)
 
 Top
ALEN
Отправлено: 25 Февраля, 2011 - 13:45:55
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




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

Таблица у тебя: users
Колонка: pass

$_POST['password'] - сюда отправляем строку вида "admin'; UPDATE users SET pass='pass' where name='admin'; /*"

Как вариант ))))
(Добавление)
BoJlod9I
Вечером если успею, то выложу свой класс авторизации, уже давно обещал, но руки не доходят.
 
 Top
BoJlod9I
Отправлено: 25 Февраля, 2011 - 13:48:27
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Февр. 2011  


Помог: 1 раз(а)




ALEN Ну расскажи мне просто поочерёжность как через сессию написать!
и желательно функции которыми там использовать
(Добавление)
или скнь мне свою асю в ПМ ПЛЗ
 
 Top
BoJlod9I
Отправлено: 25 Февраля, 2011 - 16:30:21
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Февр. 2011  


Помог: 1 раз(а)




Сделал ВСЕ на сесии но так как я с ними толком ничего не могу понять
расскажите что я делаб тут не так или сделайте так как нужно
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. require_once ('db.php');
  4.  
  5.  
  6. $sp = $_SESSION['password'];
  7. $squ = mysql_query("SELECT pass FROM users WHERE name='".$_SESSION['user']."'");
  8. $auth = mysql_fetch_array($squ);
  9.         if ($sp == $auth['pass'])
  10.     {
  11.         header ("location: index.php");
  12.     }
  13.     else
  14.     {
  15.         echo "Авторизация не прошла!";
  16.     }
  17.  
  18. ?>
 
 Top
ams
Отправлено: 25 Февраля, 2011 - 16:51:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


Помог: 13 раз(а)




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

Таблица у тебя: users
Колонка: pass

$_POST['password'] - сюда отправляем строку вида "admin'; UPDATE users SET pass='pass' where name='admin'; /*"

Как вариант ))))


А если проверять рефер, то будет безопаснее?
(Добавление)
ams пишет:
А если проверять рефер, то будет безопаснее?

Ааа... понял Улыбка
 
 Top
ALEN
Отправлено: 25 Февраля, 2011 - 20:04:55
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




ams
Нет, безопасней не будет, его можно легко подставить, его-то мы от браузера получаем у клиента.

1) Проверяем наличие существующей сессии которая скажет нам, что клиент авторизован.
2) Если авторизован то показываем соответствующую информацию, если нет, то
3) Если не авторизован то проверяем отправлен нам методом GET или POST как устроена авторизация пароль и логин, если да то проверяем наличие пары в БД, если все ок то ставим сессию как подключенную и перезагружаем страницу
4) Если сессии нет, авторизоваться никто не хотел или не вышло, то выводим страницу с авторизацией.
 
 Top
ams
Отправлено: 25 Февраля, 2011 - 22:51:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


Помог: 13 раз(а)




Sps Улыбка
 
 Top
JustUserR
Отправлено: 25 Февраля, 2011 - 23:06:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




BoJlod9I В действительности предполагаемый вариант решения задачи не отвечает базовым требования безопасности web-приложений, в силу использования конструкций слияния разделенных элементов различного исходного уровня трактования в процессе интерполяции, без проведения предшествующих действий по обеспечению коррекции разделяющих и управляющих вложенных объектов и сопоставления кодовой таблицы, которые могут быть произведены на основании использования функции mysql_real_escape_string


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB