1 Востаннє редагувалося alex-kugay (03.12.2018 19:54:12)

Тема: Не працює форма авторизації!

Проблема в чому. Розроблено форму реєстрації яка записує дані в БД (логін,пароль) а от уже увійти по даним не виходить не пропрацьовуэться код в if(mysqli_num_rows($data) == 0) не можу зрозуміти причини.

<?php
$dbc = mysqli_connect('localhost', 'root', '', 'db_nato');
if(!isset($_COOKIE['user_id'])) {
    if(isset($_POST['submit'])) {
        $user_username = mysqli_real_escape_string($dbc, trim($_POST['username']));
        $user_password = mysqli_real_escape_string($dbc, trim($_POST['password']));
        if(!empty($user_username) && !empty($user_password)) {
            $query = "SELECT `user_id` , `username` FROM `signup` WHERE username = '$user_username' AND password = SHA('$user_password')";
            $data = mysqli_query($dbc,$query);
            if(mysqli_num_rows($data) == 1) {
                $row = mysqli_fetch_assoc($data);
                setcookie('user_id', $row['user_id'], time() + (60*60*24*30));
                setcookie('username', $row['username'], time() + (60*60*24*30));
                $home_url = 'http://' . $_SERVER['HTTP_HOST'];
                header('Location: '. $home_url);
            }
            else
                echo 'Ви ввели невірний логін або пароль!';
        
            
        }
        else {
            echo 'Введіть будь ласка дані';
        }
    }
}
?>

можливо хтось побачить тут неточності

2

Re: Не працює форма авторизації!

А ви впевнені що sha від того що ви вводите дорівнює тому що у вас в базі?

3

Re: Не працює форма авторизації!

Vo_Vik написав:

А ви впевнені що sha від того що ви вводите дорівнює тому що у вас в базі?

Я і без шифрування пробував всеодно нуль реакції

4 Востаннє редагувалося NagarD (03.12.2018 21:54:08)

Re: Не працює форма авторизації!

О Боги. А користувач був створений?)

Спочатку зробіть таке, може у вас в формі поля по іншому названі.

var_dump($user_username);
var_dump($user_password);
exit;

Якщо дані ті, що і вводилися, робимо:

exit($query);

Дивимося чи все ок з запитом, копіюємо його в phpmyadmin чи workbench і виконуємо.

Має бути знайдено запис нашого користувача, якщо його немає, значить щось не так з запитом.

Тоді шукаємо нашого користувача так.

SELECT * FROM `signup` WHERE username = 'USER_NAME'

Якщо його немає - тре його створити. Якщо є, звертаємо увагу на password, можливо при реєстрації пароль хешується не через sha1() або INSERT INTO signup (username, password) VALUES('username', SHA1('password'));

український веб-довідник - css.in.ua

5 Востаннє редагувалося WD (14.12.2018 23:52:59)

Re: Не працює форма авторизації!

alex-kugay написав:

            $query = "SELECT `user_id` , `username` FROM `signup` WHERE username = '$user_username' AND password = SHA('$user_password')";

може я аж занадто "правильний", але роблю завжди ось так:

$query = "SELECT `user_id` , `username` FROM `signup` WHERE `username` = '".$user_username."' AND `password` = SHA('".$user_password."')";

а взагалі правий NagarD - потрібно провести покроковий дебаг коду, починаючи із самого запиту, перевірки наявності підключення до бази, наявності самої таблиці і записів у ній, а також подивитись помилки у відповіді на ваш запит:

echo mysqli_error ( $dbc );

6 Востаннє редагувалося WD (15.12.2018 00:02:40)

Re: Не працює форма авторизації!

а взагалі перед оцим:

            if(mysqli_num_rows($data) == 1) {

потрібно вставити оце:

if (!$data) {
    echo "Помилка: ".mysqli_error($dbc);
}else{
    // основний код
}

лінк