За последние 24 часа нас посетили 18480 программистов и 1613 роботов. Сейчас ищут 2013 программистов ...

Помогите мне. Сломал голову.

Тема в разделе "Сделайте за меня", создана пользователем pafka998, 25 апр 2018.

  1. pafka998

    pafka998 Новичок

    С нами с:
    25 апр 2018
    Сообщения:
    1
    Симпатии:
    0
    Приветствую всех! кому не сложно помогите с проблемой. Суть проблемы в том, что когда я пишу (Правильный логин и пароль) у меня пишет Неверный логин или пароль. Помогите исправить ошибку ибо я уже просто не понимаю что к чему.
    Исходник кода
    <?php
    include 'globals.php';

    //if ($_POST['login'] == null || $_POST['password'] == null || $_POST['hwid'] == null)
    if (isset($_POST['login']) == null || isset($_POST['password']) == null || isset($_POST['hwid']) == null)
    die();

    $u_login = $_POST['login'];
    $u_password = $_POST['password'];
    $u_hwid = $_POST['hwid'];

    $controller = new mysqli(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME);
    $rsp = $controller -> query("SELECT * FROM `users` WHERE login = `$u_login` AND password = `$u_password`");
    if($rsp -> num_rows == 0)
    {
    $controller -> close();
    die("2");
    }

    $u_data = $rsp->fetch_assoc();
    $id = $u_data['id'];
    $db_hwid = $u_data['hwid'];

    if($db_hwid == null) {
    $controller->query("UPDATE users SET hwid='$u_hwid' WHERE id='$id'");
    $controller -> close();
    die("3");
    }

    if($db_hwid != $u_hwid)
    {
    $controller -> close();
    die("4");
    }

    $controller -> close();
    die("1");[​IMG]
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Улыбнуло)
     
  3. yanuzay

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

    С нами с:
    28 мар 2018
    Сообщения:
    502
    Симпатии:
    58
    наверно потому что здесь `$u_login`, `$u_password` должны быть простые кавычки?
    Код (Text):
    1. SELECT * FROM `users` WHERE login = `$u_login` AND password = `$u_password`
    Фильтруй данные из $_POST, а то тебя когда-нибудь взломают.

    Если я в эту переменную $u_password = $_POST['password']; отправлю
    Код (Text):
    1. ' UNION SELECT * FROM`users` WHERE `login` = 'admin
    , тогда у тебя запрос станет
    Код (Text):
    1. SELECT * FROM `users` WHERE `login` = '$u_login' AND `password` = '' UNION SELECT * FROM`users` WHERE `login` = 'admin'
    , админа проапдейтим не так ли на следующем шаге?
     
    #3 yanuzay, 25 апр 2018
    Последнее редактирование: 25 апр 2018
    AlexandrS нравится это.
  4. laszlopv

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

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    Я бы первую проверку как то так сделал:
    PHP:
    1. $u_login = filter_input(INPUT_POST, 'login' , FILTER_SANITIZE_STRING);
    2. $u_password = filter_input(INPUT_POST, 'password' , FILTER_SANITIZE_STRING);
    3. $u_hwid = filter_input(INPUT_POST, 'hwid' , FILTER_SANITIZE_STRING);
    4.            
    5. if(empty($u_login)){
    6.     die('empty login');
    7. }
    8. elseif(empty ($u_hwid)){
    9.     die('empty hwid');
    10. }
    11. elseif (empty ($u_password)) {
    12.     die('empty password');
    13. }