За последние 24 часа нас посетили 49880 программистов и 1757 роботов. Сейчас ищут 912 программистов ...

Проблема со скриптом входа.

Тема в разделе "PHP для новичков", создана пользователем jonathan-grinn, 10 фев 2016.

  1. jonathan-grinn

    jonathan-grinn Новичок

    С нами с:
    6 фев 2016
    Сообщения:
    71
    Симпатии:
    0
    mkramer,
    Код (PHP):
    1. $query =mysql_query("SELECT * FROM users WHERE login = '{$_POST['login']}' and password = '{$_POST['password']}'");
    2.    while ($row=mysql_fetch_assoc($query)){
    3.      
    4.   if($row['login'] === $_POST['login'] && $row['password'] === $_POST['password']) {
    5.     echo "Вы вошли успешно!";
    6.     }
    7.   else {
    8.   header('Location: login.php');
    9.   };
    10.  
    Почему не работает else?
    p.s. mysqli начну использовать чуть позже, когда разберусь с этим
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Про SQL-инъекции читать не стали, а я вам ссылку давал. Про хеширование пароля - тоже. Потом, у вас логика работает хоть немного? Ну реально, надо же хоть чуть-чуть подумать, прежде чем делать хоть что-нибудь. Если вам выдался результат по вашему запросу, то условие уже гарантировано выполнено при том, как у вас составлен запрос. Поэтому else и не бывает. Зачем вам здесь цикл while, если у запроса только два варианта результата: 1 строка, если такой пользователь найден, или 0 строк, если не найден. Ещё куча всего, но даже обсуждать не хочется. Начинайте головой думать.
     
  3. jonathan-grinn

    jonathan-grinn Новичок

    С нами с:
    6 фев 2016
    Сообщения:
    71
    Симпатии:
    0
    mkramer, да, знаю, что у меня с логикой проблемы и не только с ней:) Я просто не понимаю, как мне поставить условие "если эта строка в БД существует"
     
  4. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А с чтением документации русской проблемы тоже? Как там её, https://php.net/mysql_num_rows. Как у вас условие составлено в селекте, он вернёт 0 строк, если такого пользователя не существует или пароль не верный

    Добавлено спустя 2 минуты 37 секунд:
    А ещё я на ваш сайтик сделаю логин типа
    Код (PHP):
    1. '; delete from users; #
    И всё, снесу вам нафиг таблицу пользователей. Поскольку вы про sql-инъекции читать не хотите.

    Добавлено спустя 1 минуту 46 секунд:
    Если с логикой проблемы, нечего делать в программировании.