public function Login($username, $pass){
if(!empty($username) && !empty($pass)){
$user = $this->link->prepare("SELECT username, pass FROM users WHERE username=? AND pass=?");
$user->bind_param("ss", $username, $pass);
$user->execute();
$row=$user->fetch_assoc();
If($user->num_rows==1){
session_start();
$_SESSION['name']=$row['username'];
$_SESSION['name']=true;
header("Location: admin.php");
}else{
echo "Invalid Username and Password";
}
}else{
echo "Empty Login Details";
}
}
Тест для num_row = 0
потому что результат теперь в ассоциированном массиве,
Когда я использовал Fetch()
, num_rows
было правильно, чтобы быть 1, но я не могу получить доступ к массиву, чтобы назначить $row['username']
Переменная сеанса.
Ваша первая проблема — вы не получаете результат, я имею в виду, что вы пропали без вести mysqli_stmt :: get_result.
Ваш код должен быть
$user->bind_param("ss", $username, $pass);
$user->execute();
$result = $user->get_result();
if($result->num_rows === 1){
$row = $result->fetch_assoc()
$_SESSION['name']=$row['username'];
header("Location: admin.php");
}else{
echo "Invalid Username and Password";
}
Зачем выбирать, если строки не возвращаются правильно?
И вы отменяете сеанс здесь
$_SESSION['name']=$row['username'];
$_SESSION['name']=true;
Последняя сессия $_SESSION['name']
переопределяет первый.
Других решений пока нет …