Пытаюсь авторизовать пользователя после добавления его в базу данных(без лишних проверок и хранения хешей вместо реальных паролей). При это пользователь успешно регистрируется и отдельно авторизация работает отлично, но если ее вызывать после регистрации - выдает следующие ошибки:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in D:\web\OpenServer\domains\testbox\db\db.php on line 31
Warning: session_name(): Cannot change session name when headers already sent in D:\web\OpenServer\domains\testbox\db\db.php on line 32
Warning: session_start(): Cannot start session when headers already sent in D:\web\OpenServer\domains\testbox\db\db.php on line 33
Warning: Cannot modify header information - headers already sent by (output started at D:\web\OpenServer\domains\testbox\db\db.php:31) in D:\web\OpenServer\domains\testbox\db\db.php on line 34
Warning: Cannot modify header information - headers already sent by (output started at D:\web\OpenServer\domains\testbox\db\db.php:31) in D:\web\OpenServer\domains\testbox\db\db.php on line 41
31 строка - это
$row = mysqli_fetch_assoc($result);
в функции authorization.
var_export(mysqli_error($link));
после 31 строки выдает: 'Commands out of sync; you can\'t run this command now'
function authorization($login, $password) {
global $link;
if (empty($login)) {
$error = 1;
header("Refresh: 1; url=http://testbox/route/?error=$error");
} elseif (empty($password)) {
$error = 2;
header("Refresh: 1; url=http://testbox/route/?error=$error");
} else {
$sql = "SELECT u.*, GROUP_CONCAT(r.id) as roles_id, GROUP_CONCAT(r.role) as role,
GROUP_CONCAT(r.description) as description FROM users as u
JOIN user_role as ur ON ur.user_id = u.id
JOIN roles as r ON r.id = ur.role_id
WHERE login='" . $login . "' AND password='". $password ."'
GROUP BY u.id";
$result = mysqli_query($link, $sql);
if ($result->num_rows !== 0 || $result !== false) {
$row = mysqli_fetch_assoc($result);
session_name('session_id');
session_start();
setcookie(session_name(), session_id(), time()+3600, '/');
$_SESSION['full_name'] = $row['full_name'];
$_SESSION['email'] = $row['email'];
$_SESSION['login'] = $row['login'];
$_SESSION['role'] = $row['role'];
$_SESSION['description'] = $row['description'];
header("Refresh: 1; url=http://testbox/route/user/profile.php");
} else {
// echo 'Введен неверный логин или пароль';
header("Refresh: 1; url=http://testbox/route");
}
}
}
function userRegistration($full_name, $login, $password, $email) {
if (empty($login) || empty($password) || empty($email)) {
// echo 'Вы заполнили не все поля';
header("Refresh: 1; url=http://testbox/route/registration.php");
} else {
global $link;
$sql = "INSERT INTO users (full_name, email, login, password)
VALUES ('". $full_name ."', '". $email ."', '". $login ."','". $password ."');
INSERT INTO user_role (user_id, role_id) VALUES (LAST_INSERT_ID(), '3')";
$res = mysqli_multi_query($link, $sql);
if ($res === true) {
authorization($login, $password);
} else {
// echo 'Что-то пошло не так при добавлении в базу данных.';
header("Refresh: 1; url=http://testbox/route/registration.php");
}
}
}