За последние 24 часа нас посетили 17975 программистов и 1596 роботов. Сейчас ищут 962 программиста ...

Авторизация для сайта

Тема в разделе "MySQL", создана пользователем Barclays, 25 июл 2015.

  1. Barclays

    Barclays Новичок

    С нами с:
    25 июл 2015
    Сообщения:
    2
    Симпатии:
    0
    Реализую для сайта своей практики авторизацию и регистрацию.
    Код очень похож, но вот регистрация работает, а авторизация - нет.



    Вот код формы регистрации:
    Код (PHP):
    1. <?php 
    2. include('../bd.php');
    3.  
    4. if (isset($_POST['submit'])) {
    5.  
    6.     $fio = trim($_POST['fio']);
    7.     $login = trim($_POST['login']);
    8.     $password = sha1(trim($_POST['password']));
    9.     $usertype = trim($_POST['usertype']);
    10.  
    11.     $query = "INSERT INTO user (`fio`, `login`, `password`, `usertype`) 
    12.             VALUES ('".$fio."','".$login."','".$password."','".$usertype."')";
    13.     
    14.     $result = mysql_query($query);
    15.     if($result)
    16.     {
    17.         $msg = "Пользователь зарегистрирован";
    18.     }
    19.     else{
    20.         $msg = "Ошибка при регистрации!";
    21.     }
    22. }
    23. ?>
    24.  
    25. <!DOCTYPE html>
    26. <head>
    27.     <meta charset="UTF-8">
    28.     <title>Новый пользователь</title>
    29.     <link rel="stylesheet" href="style.css">
    30.     </head>
    31. <body>
    32.     <div align="center" class="cabinet"><h2>Добавление пользователя</h2>
    33.     <?php if(!empty($msg)) { echo "<p class='msg'>".$msg. "</p>";} ?>
    34.     <form method="post" action="new-user.php">
    35.         <p>Введите ФИО</p>
    36.         <input type="text" name="fio" id="id-fio" size="50">
    37.         <p>Введите логин</p>
    38.         <input type="text" name="login" id="id-login" size="50">
    39.         <p>Введите пароль</p>
    40.         <input type="text" name="password" id="id-password" size="50">
    41.         <p>Ведите тип пользователя (1-3) </p>
    42.         <input type="text" name="usertype" id="id-usertype" size="50">
    43.         <br>
    44.         <div class="button"><input type="submit" name="submit" value="Создать"></div>
    45.     </form>
    46.     [url="userlist.php"]Назад[/url]</div>  
    47. </body>
    48. </html>

    А вот авторизации:

    Код (PHP):
    1. <?php 
    2. include('bd.php');
    3.  
    4. if (isset($_POST['submit'])) {
    5.  
    6.     $login = trim($_POST['login']);
    7.     $password = sha1(trim($_POST['password']));
    8.  
    9.     $query = "SELECT id, login FROM user WHERE login = '".$login."' AND password = '".$password."' LIMIT 1";
    10.     $result = mysql_query($query);
    11.  
    12.     if(mysql_num_rows($result) == 1){
    13.         $found_user = mysql_fetch_array($result);
    14.         header("location:admin/admin.php");
    15.     }
    16.         else{
    17.             $msg = "Не верная пара логин/пароль!";
    18.         }
    19. }
    20. ?>
    21.  
    22. <!DOCTYPE html>
    23. <html>
    24.     <head>
    25.     <meta charset="UTF-8">
    26.     <link rel="stylesheet" href="style.css">
    27.        <title>Авторизация</title>
    28.     </head>
    29.     <body>
    30.         <div align="center" class="block">
    31.                 <h1>Авторизация</h1>
    32.                 <?php if(!empty($msg)) { echo "<p class='msg'>".$msg. "</p>";} ?>
    33.                 <form method="post" action="login_user.php">
    34.                 <div align="center" class="row"> <label for="login-field">Ваш логин </label> </div>
    35.                     <div> <input type="text" name="login" id="login-field"> </div>
    36.                     <div> <label for="password-field">Ваш пароль </label> </div>
    37.                     <div> <input type="password" name="password" id="password-field"> </div>
    38.                     <div class="button"> <input type="submit" name="submit" value="Войти"> </div>
    39.                 </form>
    40.         </div>
    41.     </body>
    42. </html>
    В авторизации, если mysql_num_rows($result) == 1 приравнять нулю, то авторизация проходит. Но очевидно, что это не правильно. В запросе ошибок вроде-как нет. Может быть вы поможете.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Беглый взгляд по коду не нашёл и упоминания о сессиях. Почему? )
     
  3. Barclays

    Barclays Новичок

    С нами с:
    25 июл 2015
    Сообщения:
    2
    Симпатии:
    0
    Сессии были бы следующим шагом, после того как заработала бы авторизация)
    Вопрос не в этом
     
  4. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Попробуйте искать только по логину, а пароль вернуть в выборке и потом уже сравнивать.
    Тогда оба пароля можно будет ещё и вывести на экран, может, они отличаются.
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Выведи свой запрос, т.е. echo $query, скопируй его и попробуй выполнить в phpmyadmin или чем ты там пользуешся для MySQL.

    И, кстати, процесс проверки пароля называется Аутентификация, а Авторизация это предоставление прав на действие.
     
  6. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Поменяй include на require или просто логи посмотри - у тебя подключения к БД наверное нет во втором случае

    Не знаю как у тебя в первом случае чего сработало, но USER - это зарезервированное ключевое слово - его надо брать в апострофы
    Код (Text):
    1. `user`
    а лучше таблицу переименовать в users