Как добавить пользователя в базу данных - PullRequest
0 голосов
/ 28 сентября 2019

Я очень новичок в PHP, я создал сайт на PHP (с функцией входа в систему), размещал его с помощью cPanel, и все работает нормально, но сейчас в базе данных я пытаюсь добавить пользователя, который может войти в системусайт.

Вот моя функция входа в систему:

require_once('config/conf.php');


    echo password_hash("00101100", PASSWORD_DEFAULT);
    if(isset($_POST['submit'])) {
        $email = $_POST['email'];
        $pwd = $_POST['pwd'];
        $role = $_POST['role'];

        $check = mysqli_query($con, "SELECT * FROM `admin` WHERE `email`='$email' AND `role`='$role'");
        if(mysqli_num_rows($check)>0) {
            $row = mysqli_fetch_array($check, MYSQLI_ASSOC);
            $hash = $row['pwd'];
            if(password_verify($pwd, $hash)) {
                $_SESSION['login'] = 1;
                $_SESSION['admin_id'] = $row['admin_id'];
                $_SESSION['role'] = $row['role'];
                $_SESSION['email'] = $row['email'];
                $_SESSION['name'] = $row['name'];

                $_SESSION['margin'] = $row['margin'];

                if($row['role'] == 7)
                {
                header('location: ../');
                }
                else{
                header('location: index.php');

                }
            } else {
                $error = "Incorrect Password";
            }
        } else {
            $error = "No such user exists";
        }
    }
?>

В базе данных я создал новую таблицу с именем "admin", добавил две колонки "электронная почта"и "role" добавил письмо как "admin@admin.com" и добавил роль как 1, пароль по умолчанию, но когда я пытаюсь войти, он говорит "Неверный пароль".Я что-то здесь упускаю?

Вот моя структура БД:

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Вы можете использовать запрос INSERT MySql, например SELECT.

Например, простой запрос INSERT:

INSERT INTO table_name (column1, column2, column3, ...) 
VALUES (value1, value2, value3, ...); 

Добавить столбец password всвою таблицу и используйте LONGTEXT для обработки хешированных данных пароля.Таким образом, вы можете создать HTML-форму, которая требует адрес электронной почты или имя пользователя, а также пароль, а затем:

// always validate your input data from forms
$email = validate_email($_POST['email']);

// check if user/email already exists
$exists = mysqli_query($con, "SELECT 1 FROM `admin` WHERE `email`='$email' AND `role`='$role'");

// if num_rows is true ( greater than 0 ) it already exists
if($exists->num_rows)
    return;

// validate password and ALWAYS hash passwords! BCRYPT is a great hash method.
$password = password_hash(validate_password($_POST['password']), PASSWORD_BCRYPT);

// execute the INSERT query
$register = mysqli_query($con, "INSERT INTO `admin` (`email`,`password`) VALUES (`$email`,`$password`)");

// check for errors 
if(!$register)
    return;

// other logic, redirect to " Check Your Email", etc...
0 голосов
/ 28 сентября 2019

В вашей базе данных в таблице ADMIN нет столбца с именем pwd.Вы пытаетесь подтвердить пароль, используя данные из несуществующего столбца pwd:

$hash = $row['pwd'];
        if(password_verify($pwd, $hash)) {

Вы должны изменить таблицу ADMIN, добавив столбец pwd.Затем вы должны вставить правильные данные в таблицу.Столбец pwd должен содержать хешированный пароль для возможности входа в систему.

Я предполагаю, что вы делаете это только для тестирования, так как вы выводите хешированный пароль.Вы должны сохранить это напечатанное (hashded) значение как pwd в базе данных, и вы сможете войти в систему, используя простой пароль ("00101100").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...