Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с соединением с базой данных.

Александр Лукьянов Ученик (99), на голосовании 2 дня назад
Добрый день, я учусь создавать сайты и сейчас пытаюсь сделать простую систему регистрации и авторизации. Сайт у меня на хостинге рег.ру и бд от туда же. Вот код страницы регистрации: https://github.com/LyKaS1/super-duper-octo-palm-tree/blob/main/regist.php. И код соединения с бд: https://github.com/LyKaS1/super-duper-octo-palm-tree/blob/main/connect.php. Если в файле с кодом в DBNAME я пишу название самой базы данных из рег.ру, то мне выдаёт следующую ошибку: Fatal error: Uncaught mysqli_sql_exception: Table '***.users' doesn't exist in /путь/registr.php:22 Stack trace: #0 /путь/registr.php(22): mysqli->prepare('SELECT * FROM u...') #1 {main} thrown in /путь/registr.php on line 22. А если я меняю в параметре DBNAME название бд на название таблицы в этой бд, то мне выдаёт следующую ошибку: Fatal error: Uncaught mysqli_sql_exception: Access denied for user '***'@'localhostt' to database 'usertbl' in /путь/connect.php:8 Stack trace: #0 /путь/connect.php(8): mysqli_connect('localhostt', '***...', Object(SensitiveParameterValue), 'usertbl') #1 /путь/registr.php(4): require_once('/var/www/u29133...') #2 {main} thrown in /путь/connect.php on line 8. Помогите пожалуйста решить эту проблему!
Голосование за лучший ответ
Андрей Высший разум (466148) 1 месяц назад
Чтобы что-то получить из таблицы users, сначала эту таблицу надо создать - в той самой базе, к которой ты пытаешься обратиться.

А если таблица уже создана, правильно написать её название. А то у тебя в одном случае users, а в другом случае usertbl.
Александр ЛукьяновУченик (99) 1 месяц назад
Таблицу я создал в MySQL со всеми нужными столбцами
Андрей Высший разум (466148) Александр Лукьянов, И как именно называется созданная тобой таблица: users, как в первом сообщении об ошибке, или usertbl, как во втором сообщении?
Александр ЛукьяновУченик (99) 1 месяц назад
usertbl
Андрей Высший разум (466148) Александр Лукьянов, А в 'SELECT * FROM ...' ты написал users. Вот тебе и пишет, что таблица не существует.
Анонимус Просветленный (22859) 1 месяц назад
Обновленный код для регистрации (regist.php)
 <?php 
require_once 'connect.php';

// Проверяем, отправлена ли форма
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = trim($_POST['email']);
$password = trim($_POST['password']);

// Валидация email
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("Неверный формат email.");
}

// Проверка уникальности email
$stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
die("Пользователь с таким email уже зарегистрирован.");
}

// Хеширование пароля
$hashed_password = password_hash($password, PASSWORD_DEFAULT);

// Вставка нового пользователя в базу данных
$stmt = $conn->prepare("INSERT INTO users (email, password) VALUES (?, ?)");
$stmt->bind_param("ss", $email, $hashed_password);

if ($stmt->execute()) {
echo "Регистрация успешна!";

// Отправка подтверждения по email (псевдокод, требует настройки SMTP)
$to = $email;
$subject = "Подтверждение регистрации";
$message = "Спасибо за регистрацию! Пожалуйста, подтвердите ваш email.";
mail($to, $subject, $message);
} else {
echo "Ошибка регистрации: " . $stmt->error;
}

$stmt->close();
}
?>
Обновленный код для авторизации (login.php)
 <?php 
session_start();
require_once 'connect.php';

// Проверяем, отправлена ли форма
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = trim($_POST['email']);
$password = trim($_POST['password']);

// Проверка существования пользователя
$stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows === 1) {
$user = $result->fetch_assoc();

// Проверка пароля
if (password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id']; // Устанавливаем сессию
echo "Авторизация успешна!";
} else {
echo "Неверный пароль.";
}
} else {
echo "Пользователь не найден.";
}

$stmt->close();
}
?>
Похожие вопросы