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

Форма авторизации

Тема в разделе "Прочие вопросы по PHP", создана пользователем r06otyaga, 19 окт 2014.

  1. r06otyaga

    r06otyaga Новичок

    С нами с:
    19 окт 2014
    Сообщения:
    6
    Симпатии:
    0
    Есть код для авторизации пользователей
    Код (Text):
    1. <?php
    2. session_start();
    3. if(isset($_POST['login']) && isset($_POST['password'])){
    4. $login = $_POST['login'];
    5. $password = $_POST['password'];
    6. $db = mysql_connect("localhost","root","");
    7. mysql_select_db('kino', $db);
    8. if(mysqli_connect_errno()){
    9.  echo "Не возможно подключение к БД";
    10.  exit;
    11. }
    12. $query = "SELECT login FROM user WHERE login = '$login'";
    13. }
    14. if(empty($_SESSION['login']))
    15. {  
    16.   $_SESSION['login'] = $_POST['login'];
    17.   echo "<form action='' method='post'>";
    18.   echo "Логин: ".'<br>';
    19.   echo "<input type='text' name='login'>".'<br><br>';
    20.   echo "Пароль :".'<br>';
    21.   echo "<input type='password' name='password'>".'<br>';
    22.   echo "<input type='submit' name='submit' value='Вход' align='center'>";
    23.   echo "</form>";
    24.   echo "<a href='registration.php'>Регистрация</a>";
    25. }
    26. else
    27. {
    28.  $result = mysql_query($query, $db);
    29.  $myrow = mysql_fetch_assoc($result);
    30.  foreach($myrow as $v){
    31.   echo "Здраствуйте ".$v;
    32.  }
    33.  echo "<br><a href='inc/exit_user.php'>Выйти</a>";
    34.  }
    35. ?>
    После авторизации на этой же вкладки все нормально выводит из БД логин, когда открываю вкладку ошибка:
    Код (Text):
    1. Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\wpkino\inc\login.php on line 29
    2.  
    3. Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\wpkino\inc\login.php on line 30
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    var_dump($result) покажи.
     
  3. r06otyaga

    r06otyaga Новичок

    С нами с:
    19 окт 2014
    Сообщения:
    6
    Симпатии:
    0
    Выводит bool(false).
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Запрос обломился. Ответа не может быть. Ищи косяк.

    Добавлено спустя 50 секунд:
    Предполагаю, что надо взять поля в кавычки

    Добавлено спустя 6 минут 47 секунд:
    Аналогично
    viewtopic.php?f=9&t=49995
     
  5. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    По одному логину вход, прелестно.

    вместо

    $login = $_POST['login'];
    $password = $_POST['password'];

    юзайте тогда уж extract($_POST) чтоб вытрясти все его переменные
     
  6. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    ну для понятия принципа авторизации достаточно)
    Код (PHP):
    1. if(isset($_POST['login']) & isset($_POST['password'])){ 
    не лучше ли так? не вижу смысла проверки условия дальше если, $_POST['login'] отсутствует
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    за такие советы принято бить по лицу =)
     
  8. r06otyaga

    r06otyaga Новичок

    С нами с:
    19 окт 2014
    Сообщения:
    6
    Симпатии:
    0
    Вот исправил пропала ошибка, но всеравно при открытии новой вкладки не выводит логин
    Код (Text):
    1. <?php
    2. session_start();
    3. if(isset($_POST['login']) & isset($_POST['password'])){
    4. $login = $_POST['login'];
    5. $password = $_POST['password'];
    6. }
    7. $db = mysql_connect("localhost","root","");
    8. mysql_select_db('kino', $db);
    9. $query = mysql_query("SELECT login FROM user WHERE `login` = '$login'");
    10. if(!$db){
    11.  echo "Не возможно соединится с БД";
    12. }  
    13. if(!mysql_select_db('kino', $db)){
    14.  echo "Не возможно выбрать БД";
    15. }
    16. if(mysqli_connect_errno()){
    17.  echo "Не возможно подключение к БД";
    18.  exit;
    19. }
    20. if(empty($_SESSION['login']))
    21. {  
    22.   $_SESSION['login'] = $_POST['login'];
    23.   echo "<form action='' method='post'>";
    24.   echo "Логин: ".'<br>';
    25.   echo "<input type='text' name='login'>".'<br><br>';
    26.   echo "Пароль :".'<br>';
    27.   echo "<input type='password' name='password'>".'<br>';
    28.   echo "<input type='submit' name='submit' value='Вход' align='center'>";
    29.   echo "</form>";
    30.   echo "<a href='registration.php'>Регистрация</a>";
    31. }
    32. else
    33. {
    34.  $myrow = mysql_fetch_array($query);
    35.  echo $myrow['login'];
    36.  echo "<br><a href='inc/exit_user.php'>Выйти</a>";
    37. }
    38. ?>
     
  9. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    это к этому не относится. ))

    Добавлено спустя 6 минут 58 секунд:
    отправил форму, переменные $_POST['login']; $_POST['password']; присутствуют, запрос
    Код (Text):
    1. $query = mysql_query("SELECT login FROM user WHERE `login` = '$login'");
    проходит. Но если просто открывать другую вкладку, то нет отправки формы и не может быть переменных
    Код (Text):
    1. $_POST['login']; $_POST['password'];
    попробуй ручками прописать логин вместо
    Код (Text):
    1. $login
    в запросе

    Добавлено спустя 1 минуту 39 секунд:
    не вижу где ты сохраняешь логин в сессии
     
  10. r06otyaga

    r06otyaga Новичок

    С нами с:
    19 окт 2014
    Сообщения:
    6
    Симпатии:
    0
    Я просто еще нуб в php это мой первый проект). Это мне нужно сделать ?
    Код (Text):
    1. $_SESSION['login'] = $login;
     
  11. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Код (Text):
    1. $query = mysql_query("SELECT login FROM user WHERE `login` = '$login'");
    тут логин пропиши ручками, и проверь что будет
     
  12. r06otyaga

    r06otyaga Новичок

    С нами с:
    19 окт 2014
    Сообщения:
    6
    Симпатии:
    0
    Прописал и теперь все нормально выводит
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Понял где ошибка?
     
  14. r06otyaga

    r06otyaga Новичок

    С нами с:
    19 окт 2014
    Сообщения:
    6
    Симпатии:
    0
    Да, спасибо
     
  15. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    Я тоже не пишу ё, так что кому такой совет дали, тот или догадается прикрутить префикс, или будет подвержен падучей и воде в коленях.
     
  16. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    боюсь, что падучая настингнет тех, кто будет за ним этот код разгребать.