0

Скрипт входа на сайт отлично работал на Mysql, как только я его перевел на Mysqli он тут же перестал работать корректно. Скрипт выбивает "Wrong username or password".

Вот собственно сам скрипт:

        if (isset($_POST['username']) && isset($_POST['password']) && isset($_POST['captcha']))
        {
            if ($_POST['captcha'] === $_SESSION["captcha"])
            {
                $username = clean($_POST['username']);
                $password = md5(clean($_POST['password']));
                $sql = "SELECT * FROM " . $config['table_users'] . " WHERE username='$username' AND password='$password'";
                $result = mysqli_query($data_sql, $sql);
                if (!$result)
                {
                    echo sql_error();
                } else
                {
                    $count = mysqli_num_rows($result);
                    if ($count == 1)
                    {
                        session_start();
                        $user = mysqli_fetch_assoc($result);
                        $userId = $user["userId"];
                        $regDate = $user["regDate"];
                        $userType = $user["typeId"];
                        $_SESSION["userId"] = $userId;
                        $_SESSION["username"] = $username;
                        $_SESSION["regDate"] = $regDate;
                        $_SESSION["userType"] = $userType;
                        header("location: index.php");
                    } else
                    {
                        $respond[type] = "danger";
                        $respond[text] = "Wrong username or password";
                    }
                }
                @mysqli_free_result($result);
            } else
            {
                $respond[type] = "danger";
                $respond[text] = 'Wrong captcha';
            }
        }
itmxr
  • 161
  • session_start нужно запускать в самом начале скрипта, а вы запускаете его внутри блоков, причем сверху у вас есть условие $_POST['captcha'] === $_SESSION["captcha"] не кажется ли вам это странным? А вообще, проще recaptcha 2.0 поставить и да - isset поддерживает оператор and so on - и так далее, это значит, что можно писать так: isset($_POST['username'], $_POST['password'], $_POST['captcha']) и у вас sql-injection на ровном месте. Плохой код, следует переписать, полностью. – And Apr 30 '18 at 01:25
  • К сожалению для меня это темный лес" на данный момент. Скрипт работал на Mysql А вот на Mysqli нет – itmxr Apr 30 '18 at 01:36

0 Answers0