Top.Mail.Ru
Ответы

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

Добрый день, я учусь создавать сайты и сейчас пытаюсь сделать простую систему регистрации и авторизации. Сайт у меня на хостинге рег.ру и бд от туда же. Вот код страницы регистрации: 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. Помогите пожалуйста решить эту проблему!

По дате
По рейтингу
Аватар пользователя
Новичок
7мес

Чтобы что-то получить из таблицы users, сначала эту таблицу надо создать - в той самой базе, к которой ты пытаешься обратиться.

А если таблица уже создана, правильно написать её название. А то у тебя в одном случае users, а в другом случае usertbl.

Аватар пользователя
Просветленный
7мес

Обновленный код для регистрации (regist.php)

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
 <?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)

1234567891011121314151617181920212223242526272829303132
 <?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(); 
} 
?>