За последние 24 часа нас посетили 35616 программистов и 1629 роботов. Сейчас ищут 1024 программиста ...

Авторизация на PHP (Помогите! Опять я...)

Тема в разделе "PHP для новичков", создана пользователем Асаша, 18 июл 2017.

  1. Асаша

    Асаша Новичок

    С нами с:
    15 июл 2017
    Сообщения:
    23
    Симпатии:
    2
    Значит , шёл мой 4-ый день работы в PHP (и я всё больше стал сомневаться в своих умственных способностях) обучаюсь по видео урокам, естественно. Написал тут я код, который должен показывать, когда логин, или пароль неверен. А ОН ВООБЩЕ НИЧЕГО НЕ ВЫВОДИТ. Я полагаю, что возможно это всё из-за такой вот скобки "}". Я смотрел на этот код час, и не смог найти ошибки. ПОМОГИТЕ, ПОЖАЛУЙСТА!
    Код (Text):
    1. <?php
    2. require "db.php";
    3.  
    4. $data = $_POST;
    5. if( isset($data['do_login']) )
    6. {
    7. $errors = array();
    8. $user = R::findOne('users', 'login = ?', array($data['login']));
    9.     if ( $user )
    10.     {
    11.         // логин существует
    12.         if( password_verify($data['password'], $user->password))
    13.         {
    14.             //Всё хорошо
    15.            
    16.             echo '<div style="color: green;">Success</div><hr>';
    17.             } else
    18.             {
    19.                 $errors[] = 'Incorrect Password';
    20.             }
    21.         } else {
    22.             $errors[] = 'Login not found';
    23.         }
    24.  
    25.         if ( ! empty($errors) )
    26.         {
    27. echo '<div style="color:red;">'.array_shift($errors).'</div><hr>';
    28.  
    29.  
    30. }
    31.  
    32. }
    33.  
    34. ?>
    35.  
    36. <form action="login.php" method="POST">
    37. <p>
    38.    
    39. <p><strong>Login</strong></p>
    40. <input type="text" name="login">
    41. </p>
    42.  
    43. <p>
    44.    
    45. <p><strong>Password</strong></p>
    46. <input type="password" name="password">
    47. </p>      
    48.  
    49. <p>
    50.    
    51. <button type="submit" name="do_ligin">on</button>
    52. </p>
    53.  
    54.  
    55. </form>
    56.            
    57.        
    58.    
    59.  
    60.  
    61.  
    62.  
    63.  
    64.  
    65.  
    66.    
     
  2. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Не хватает листинга функции findOne. Если она возвращает значение, сопоставимое с false, то у Вас ничего и не будет выводиться.
     
  3. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Эти клавиши рядом ;) И надо не смотреть , а перечитывать
     
  4. Асаша

    Асаша Новичок

    С нами с:
    15 июл 2017
    Сообщения:
    23
    Симпатии:
    2
    Да,да, да. Я только что хотел "Maputo" ответить, что я там опечатался. А не подскажите, пожалуйста. У меня после этого исправления, пишет, что логин не найден, но он есть в БД.[​IMG][/URL][/IMG] [​IMG][/URL][/IMG] [​IMG][/URL][/IMG] [​IMG] [​IMG]
     
  5. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    var_dump($user)
     
  6. Асаша

    Асаша Новичок

    С нами с:
    15 июл 2017
    Сообщения:
    23
    Симпатии:
    2
    :( Вообще ничего не произошло.
     
  7. Асаша

    Асаша Новичок

    С нами с:
    15 июл 2017
    Сообщения:
    23
    Симпатии:
    2
    Помогите нубасу. Пожалуйста:oops:
     
  8. xaker01

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

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    после
    1. if( isset($data['do_login']) )
    2. {
      вставь.
      может запрос не доходит
      var_dump($data['login']);

      а и еще почему много одинаковых логинов/emai этого не должно быть
      логин емаил уникальны
     
  9. Асаша

    Асаша Новичок

    С нами с:
    15 июл 2017
    Сообщения:
    23
    Симпатии:
    2
    Вставил в код. Там появилась строчка сверху, которая считает кол-во символов в Логине. "Почему так много одинаковых Логинов?" - это ты про таблицу в MySql? Если да, то я просто тестил, смотрел, что получиться. Скрины: [​IMG] [​IMG] Я уже не знаю, что делать...
     
  10. xaker01

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

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    Ну во 1 я вижу что логин отправляется это хорошо.
    Во 2 удали все одинаковые записи.
    Они должны быть уникальны.
    а в твоем случае он ищет логин а их много и ошибка на этом моменте возникает
    и в 3 напомни что за библеотека для команды R::findOne
    в ней еще может быть ошибка
    и в 4 покажи скрин название столбцов.
     
    #10 xaker01, 18 июл 2017
    Последнее редактирование: 18 июл 2017
  11. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Кое где может не хватать одного или пары пробелов:
     
  12. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Хз что за orm у тебя, используй findAll а не findOne. Если all вернёт записи, то проблема в том что выше тебе написали
     
  13. Асаша

    Асаша Новичок

    С нами с:
    15 июл 2017
    Сообщения:
    23
    Симпатии:
    2
    Удалил. Но он так же капризничает.[​IMG] [​IMG]
     
  14. xaker01

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

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    так у тебя таблица называется _login а не login
    --- Добавлено ---
    или переименуй нормально таблицу или
    $user = R::findOne('users', '_login = ?', array($data['login']));
     
    Асаша и Maputo нравится это.
  15. Асаша

    Асаша Новичок

    С нами с:
    15 июл 2017
    Сообщения:
    23
    Симпатии:
    2
    Cпасибо, большое. Чот я слепой стал. Старею наверное. Like:)