PHP MYSQLI подготовил вход в систему и проверил статус пользователя

Привет, ребята, я новичок в создании сайта с php и mysqli. Я изучаю некоторые видеоуроки, основанные на mysqli. Я узнал, что использование подготовленных операторов более безопасно, и я пытаюсь создать систему входа в систему. Вот что я сделал до сих пор.

Этот код помогает мне полностью войти в систему.

<form action ="" method="post"> User Name:<br/> <input type='text' name='username' /> <br/><br/> Password:<br/> <input type='password' name='password' /> <br/><br/> <input type='submit' name='submit' value='login'> </form> <?php if(isset($_POST['submit'])){ $username = $_POST['username']; $password = md5($_POST['password']); $stmt = $con->prepare("SELECT username, password FROM users WHERE username=? AND password=? LIMIT 1"); $stmt->bind_param('ss', $username, $password); $stmt->execute(); $stmt->bind_result($username, $password); $stmt->store_result(); if($stmt->num_rows == 1) //To check if the row exists { while($stmt->fetch()) //fetching the contents of the row {$_SESSION['Logged'] = 1; $_SESSION['username'] = $username; echo 'Success!'; exit(); } } else { echo "INVALID USERNAME/PASSWORD Combination!"; } $stmt->close(); } else { } $con->close(); ?> 

Но мне также нужно проверить, не был ли пользователь активирован или был заблокирован или отключен. Поэтому я сделал еще один код.

И вот код, который я сделал

 <?php if(isset($_POST['submit'])){ $username = $_POST['username']; $password = md5($_POST['password']); $stmt = $con->prepare("SELECT username, password FROM users WHERE username=? AND password=? LIMIT 1"); $stmt->bind_param('ss', $username, $password); $stmt->execute(); $stmt->bind_result($username, $password); $stmt->store_result(); if($stmt->num_rows == 1) //To check if the row exists { $result=$con->query($stmt); $row=$result->fetch_array(MYSQLI_ASSOC); $user_id= $row['user_id']; $status = $row['status']; if($status=='d'){ echo "YOUR account has been DEACTIVATED."; }else{ $_SESSION['Logged'] = 1; $_SESSION['user_id'] = $user_id; $_SESSION['username'] = $username; echo 'Success!'; exit(); } } else { echo "INVALID USERNAME/PASSWORD Combination!"; } $stmt->free_result(); $stmt->close(); } else { } $con->close(); ?> 

Когда я использую это, я получаю следующие ошибки:

Предупреждение: mysqli :: query () ожидает, что параметр 1 является строкой, объект указан в F: \ XAMPP \ htdocs \ login \ login.php в строке 33

Неустранимая ошибка: вызов функции-члена fetch_array () для не-объекта в F: \ XAMPP \ htdocs \ login \ login.php в строке 34

У меня есть столбцы таблицы базы данных

user_id, имя пользователя, пароль (md5), user_level, статус.

В user_level у меня есть следующее

 a = admin m = member 

В статусе

 a = activated n = not activated d = deactivated b = banned 

При входе в систему мне нужно проверить, является ли статус пользователя, и если он активирован, он должен перейти на индексную страницу, или если он должен показать, что пользователь был деактивирован, а также для других.

Может ли кто-нибудь помочь мне сделать это в подготовленных заявлениях.

И у меня это connect.php на всех страницах

 ?php //error_reporting(0); 'session_start'; $con = new mysqli('localhost', 'username', 'password', 'database'); if($con->connect_errno > 0){ die('Sorry, We\'re experiencing some connection problems.'); } ?> 

Спасибо.

Related of "PHP MYSQLI подготовил вход в систему и проверил статус пользователя"

Я думаю, вам нужно взглянуть на то, как работает mysqli_. Это должно помочь вам в правильном направлении.

 if(isset($_POST['submit'])){ $username = $_POST['username']; $password = md5($_POST['password']); $user_id = 0; $status = "" $stmt = $con->prepare("SELECT user_id, username, password, status FROM users WHERE username=? AND password=? LIMIT 1"); $stmt->bind_param('ss', $username, $password); $stmt->execute(); $stmt->bind_result($user_id, $username, $password, $status); $stmt->store_result(); if($stmt->num_rows == 1) //To check if the row exists { if($stmt->fetch()) //fetching the contents of the row { if ($status == 'd') { echo "YOUR account has been DEACTIVATED."; exit(); } else { $_SESSION['Logged'] = 1; $_SESSION['user_id'] = $user_id; $_SESSION['username'] = $username; echo 'Success!'; exit(); } } } else { echo "INVALID USERNAME/PASSWORD Combination!"; } $stmt->close(); } else { } $con->close();