Может ли кто-нибудь понять, почему я не могу получить данные из базы данных для выполнения входа в систему
Это код формы внутри login.php
<form action="code.php" methos="POST"> <div class="form-group"> <input type="text" name="usernamee" class="form-control form-control-user" placeholder="Enter Email Address..."> </div> <div class="form-group"> <input type="password" name="passwordd" class="form-control form-control-user" placeholder="Password"> </div> <button type="submit" name="login_button" class="btn btn-primary btn-user btn-block">Login</button> <hr> </form>
Это код для извлечения данных из базы данных, которые code.php
<?php if(isset($_POST['login_button'])) { $email_login = $_POST['usernamee']; $password_login = $_POST['passwordd']; $query = "SELECT * FROM register WHERE email='$email_login' AND password='$password_login' "; $query_run = mysqli_query($connection, $query); if(mysqli_fetch_array($query_run)) { $_SESSION['username'] = $email_login; header('Location: index.php'); } else { $_SESSION['status'] = 'Email or password is invalid'; header('Location: login.php'); } } ?>
Это значение находится внутри базы данных
CREATE TABLE `register` ( `id` int(11) NOT NULL, `fname` varchar(50) NOT NULL, `office` varchar(50) NOT NULL, `school` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `image` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `register` (`id`, `fname`, `office`, `school`, `email`, `username`, `password`, `image`) VALUES (1, 'Trial User', 'Office Name', 'National High School', 'trial@sample.com', 'admin', 'password', '');
Начало сеанса();
<?php session_start(); include('database/dbconfig.php'); if($dbconfig) { //echo "Database Connected"; } else { header('Location: database/dbconfig.php'); } if(!$_SESSION['username']) { header('Location: login.php'); } ?>
И подключение к базе данных внутри dbconfig.php
$connection = mysqli_connect("localhost","root","","adminpanel");
Что я уже пробовал:
Это уже вызывает у меня головную боль. Но я надеюсь, что у вас есть все самые лучшие ответы.
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк / интерполяцию для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]
Richard Deeming
Вы также храните пароли в виде обычного текста. Не делай этого.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
PHP даже имеет встроенные функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]
Richard MacCutchan
В дополнение к проблемам, выявленным Ричардом Димингом, вы неправильно написали method
как методическимис