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 :: Проблема с авторизацией

 PHP.SU

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


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

> Без описания
etoYA
Отправлено: 27 Октября, 2011 - 20:55:26
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




Блин, вообще ничего не могу понять, есть авторизация(ну как бы только набросок) и немогу авторизироватся... Хотя пароль и логин правильные.

PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT * FROM `users` WHERE login='{$login}' AND password='{$password}' LIMIT 1";
  3. $sql = mysql_query($query) or die(mysql_error());
  4.  
  5.  
  6. if (mysql_num_rows($sql) == 1) {
  7.     $row = mysql_fetch_assoc($sql);
  8.     $_SESSION['user_id'] = $row['id'];
  9.         echo 'ok';
  10. }
  11. else {
  12.         echo 'Не правельный логин или пароль';
  13. }
  14.  
 
 Top
EuGen Администратор
Отправлено: 27 Октября, 2011 - 21:04:01
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Так в чем вопрос?
Что выводится, что видите и т.п. Что var_dump показывает к примеру.
Сделайте в случае удачной проверки вместо echo('ok') например, такое:

А в checker.php напишите собственно проверку:
PHP:
скопировать код в буфер обмена
  1. if($_SESSION['user_id'])
  2. {
  3.    echo('Authorized');
  4. }
  5. else
  6. {
  7.    header('Location: auth.php');
  8. }

Где auth.php - тот скрипт, который у Вас в топике приведен. А так получается что Вы всего лишь делаете выборку, но существование сессии у Вас нигде не проверяется.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
etoYA
Отправлено: 27 Октября, 2011 - 21:07:18
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




Выводится не правильный логин или пароль, а зачем чекер то? Ведь есть echo 'ok'; при успешной авторизации...
 
 Top
EuGen Администратор
Отправлено: 27 Октября, 2011 - 21:09:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




checker - он затем, чтобы потом проверять пользователя уже по сессии.
А если у Вас не происходит выборка, то через mysql_error посмотрите что возвращает, ну и текст запроса сам посмотрите с помощью var_dump.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
etoYA
Отправлено: 27 Октября, 2011 - 21:20:28
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




Хм..

Логин test
Пароль test

результат вардампа

string(4) "test" string(0) ""

Почему не вводится пароль?
(Добавление)
Полный код
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. require_once('config.php');
  4.  
  5. // Поля формы входа
  6.  
  7. $login = mysql_real_escape_string($_POST['login']);
  8. $password = md5($_POST['password']);
  9.  
  10. // Проверка на нажатие кнопки сабмит
  11.  
  12. if (isset($_POST['submit'])) {
  13.  
  14. // Проверка на заполнение полей
  15. if ($login == '' OR $password = '') {
  16.         echo "Все поля обязательны к заполнению <br />";
  17. }
  18.  
  19. // Сверяем логин и пароль
  20.  
  21. $query = "SELECT * FROM `users` WHERE login='{$login}' AND password='{$password}' LIMIT 1";
  22. $sql = mysql_query($query) or die(mysql_error());
  23.  
  24.  
  25. if (mysql_num_rows($sql) == 1) {
  26.     $row = mysql_fetch_assoc($sql);
  27.     $_SESSION['user_id'] = $row['id'];
  28. }
  29. else {
  30.         echo 'Не правельный логин или пароль';
  31. }
  32. }
  33. auth();
  34. echo '<br>';
  35. var_dump($login, $password);
  36. // Функция формы входа
  37.  
  38. function auth() {
  39. echo <<<HERE
  40.         <form method="post">
  41.         <input type="text" name="login" />      <input type="text" name="password" />   <input type="submit" name="submit"  />
  42.         </form>
  43.         <a href="http://localhost/index.php?act=profile">Profile</a>
  44.         <a href="http://localhost/index.php?act=profile&id=1">Profile id</a>
  45. HERE;
  46. }
  47. ?>
  48.  
 
 Top
EuGen Администратор
Отправлено: 27 Октября, 2011 - 21:34:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Потому что Вы его сделали пустым вот этой строкой:

if ($login == '' OR $password = '')

- присваивание вместо сравнения


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
etoYA
Отправлено: 27 Октября, 2011 - 21:47:25
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




Вот блин, в очередной раз спасибо. Весь код просмотрел, но именно это место не смотрелНедовольство, огорчение
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB