Скрипт входа на сайт отлично работал на 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';
}
}
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