Загрузка...

How to connect the registration + authorization form with entering data into the database?

Thread in Backend created by Вишня Jun 3, 2024. 697 views

  1. Вишня
    Вишня Topic starter Jun 3, 2024 30,236 Jun 29, 2019
    есть у меня 3 файла -
    registration.php

    Code
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Document</title>
    </head>
    <body>

    <form action="register.php" method="post">
    <input type="text" placeholder="Login" name="login">
    <input type="text" placeholder="email" name="email">
    <input type="text" placeholder="pass" name="pass">
    <input type="text" placeholder="repeatpass" name="repeatpass">
    <button class="btn" type="submit">reg</button>
    </form>
    </body>
    </html>
    register.php

    Code
    <?php
    require_once('db.php');
    $login = $_POST ['login'];
    $email = $_POST ['email'];
    $pass = $_POST ['pass'];
    $repeatpass = $_POST ['repeatpass'];


    $sql = "insert into `users` (login,pass,email) VALUES ('$login', '$pass', '$email')";

    $conn -> query($sql);
    db.php

    Code
    <?php

    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "Users"

    $conn = mysqli_connect($servername, $username, $password ,$dbname);

    if(!$conn){
    die ("Connection Failed". mysqli_connect_error());
    } else {
    echo "done";
    }?>
    при успешной регистрации должна выводиться надпись - done с занесением данных в таблицу, но как я понял нет тупо связи с бд, что я делаю не так? может в коде ошибка где-то ? пользователей создавать я пробовал, 0 толку.

    если у вас есть альтернативные варианты - можете их предложить, я сломал себе всю голову, мои нервные клетки уже не восстановятся
     
  2. АвтоВАЗ
    Не используй
    ⁡mysqli_connect()
    ⁡, устаревшая функция. Лучше вызывать соединение так:
    ⁡$conn = new mysqli($servername, $username, $password)
    ⁡, а еще лучше использовать PDO:
    ⁡$conn = new PDO("mysql:host=$servername;dbname=Users", $username, $password)
     
    1. Вишня Topic starter
    2. Bl0rm
    3. Вишня Topic starter
      avatarBl0rm , лучше б помог
  3. Author_inactive4936070
    <?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "Users";

    // Создаем подключение к базе данных
    $conn = mysqli_connect($servername, $username, $password, $dbname);

    // Проверяем подключение
    if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
    }
    ?>
    The post was merged to previous Jun 3, 2024
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Регистрация</title>
    </head>
    <body>
    <form action="register.php" method="post">
    <input type="text" placeholder="Login" name="login" required>
    <input type="email" placeholder="Email" name="email" required>
    <input type="password" placeholder="Password" name="pass" required>
    <input type="password" placeholder="Repeat Password" name="repeatpass" required>
    <button class="btn" type="submit">Register</button>
    </form>
    </body>
    </html>
    The post was merged to previous Jun 3, 2024
    <?php
    require_once('db.php');

    $login = mysqli_real_escape_string($conn, $_POST['login']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $pass = mysqli_real_escape_string($conn, $_POST['pass']);
    $repeatpass = mysqli_real_escape_string($conn, $_POST['repeatpass']);

    if ($pass !== $repeatpass) {
    die("Passwords do not match!");
    }

    $hashed_pass = password_hash($pass, PASSWORD_DEFAULT);

    $sql = "INSERT INTO `users` (login, pass, email) VALUES ('$login', '$hashed_pass', '$email')";

    if ($conn->query($sql) === TRUE) {
    echo "Registration successful!";
    } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();
    ?>
    The post was merged to previous Jun 3, 2024
    Убедись, что у тебя существует база данных с именем Users и таблица users в ней с полями id, login, pass, email.
    The post was merged to previous Jun 3, 2024
    CREATE TABLE `users` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `login` VARCHAR(50) NOT NULL,
    `pass` VARCHAR(255) NOT NULL,
    `email` VARCHAR(100) NOT NULL
    );
    The post was merged to previous Jun 3, 2024
    теперь должно работать
     
    1. Вишня Topic starter
    2. Вишня Topic starter
      avatarAuthor_inactive4936070, 
      указывал это еще при создании бд и таблицы к ней
    3. Вишня Topic starter
      avatarAuthor_inactive4936070, полностью скопировал код, аналогично - 0 эффекта
  4. Author_inactive4936070
    Посмотри ошибки, вставив в начале php файла код
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    The post was merged to previous Jun 4, 2024
    Для отладки и выявления неполадок давай так
    <?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "Users";

    // Создаем подключение к базе данных
    $conn = mysqli_connect($servername, $username, $password, $dbname);

    // Проверяем подключение
    if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
    } else {
    echo "Connected successfully!";
    }
    ?>
    The post was merged to previous Jun 4, 2024
    Этот код поможет тебе убедиться, что соединение с базой данных установлено правильно.
    The post was merged to previous Jun 4, 2024
    <?php
    require_once('db.php');

    $login = mysqli_real_escape_string($conn, $_POST['login']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $pass = mysqli_real_escape_string($conn, $_POST['pass']);
    $repeatpass = mysqli_real_escape_string($conn, $_POST['repeatpass']);

    if ($pass !== $repeatpass) {
    die("Passwords do not match!");
    }

    $hashed_pass = password_hash($pass, PASSWORD_DEFAULT);

    $sql = "INSERT INTO `users` (login, pass, email) VALUES ('$login', '$hashed_pass', '$email')";

    if ($conn->query($sql) === TRUE) {
    echo "Registration successful!";
    } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();
    ?>

    Этот код включает проверку паролей и выводит сообщение об ошибке, если запрос не выполнен успешно.
    The post was merged to previous Jun 4, 2024
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Регистрация</title>
    </head>
    <body>
    <form action="register.php" method="post">
    <input type="text" placeholder="Login" name="login" required>
    <input type="email" placeholder="Email" name="email" required>
    <input type="password" placeholder="Password" name="pass" required>
    <input type="password" placeholder="Repeat Password" name="repeatpass" required>
    <button class="btn" type="submit">Register</button>
    </form>
    </body>
    </html>

    Убедимся, что форма регистрации правильно отправляет данные на сервер:
     
    1. Вишня Topic starter
    2. Вишня Topic starter
      avatarAuthor_inactive4936070, разобрался я с подключением - оно есть все-таки, но данные почему-то не передает
Loading...