Как подключить базу данных в функции?
Я пытаюсь сделать страницу входа в систему с помощью функции. Но, получил следующую ошибку-
Notice: Undefined variable: conn in F:\xampp\htdocs\bcci\admin_panel\class\adminLogin.php on line 7
Что я уже пробовал:
Это и есть adminlogin.php страница.
<?php include('includes/dbconfig.php'); function adminLogin($username, $userpass, $userstatus) { $sql = "SELECT * FROM admin WHERE username='$username'"; $result = $conn->query($sql); $row = $result->fetch_assoc(); if($row['userpass'] == $userpass && $row['userstatus'] == $userstatus){ $_SESSION['username'] = $username; header('Location:home.php'); }else{ $error_msg = ' <div class="alert alert-danger alert-dismissible" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button> Warning! User name and Password does not match. </div> '; } } ?>
Это и есть dbconfig.php страница.
<?php // this will avoid mysql_connect() deprecation error. //error_reporting( ~E_DEPRECATED & ~E_NOTICE ); $dbhost = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "xyz"; $conn= mysqli_connect($dbhost,$dbuser,$dbpass) or die('cannot connect to the server'); mysqli_select_db($conn, $dbname) or die('database selection problem'); session_start(); ?>
Richard Deeming
$sql = "SELECT * FROM admin WHERE username='$username'";
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]
Richard Deeming
if($row['userpass'] == $userpass && ...
Вы храните пароли в виде обычного текста. Не делай этого!
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
PHP даже имеет встроенные функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]