Прошу прощения, если заголовок запутан, но когда я запустил страницу с кодом ниже и введите электронное письмо, которое не найдено в базе данных, на веб-странице я получаю Notice: Trying to get property of non-object in C:\xampp\htdocs\Testing\login.php on line 72
. Вместо того, чтобы говорить это, я хочу, чтобы он дал ошибку, что электронное письмо не зарегистрировано.PHP Неверный результат запроса
<?php
session_start();//session starts here
if(isset($_SESSION['adminName'])||isset($_SESSION['email'])){
header("Location: welcome.php");//redirect to login page to secure the welcome page without login access.
}
?>
<html>
<head lang="en">
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="bootstrap-3.2.0-dist\css\bootstrap.css">
<title>Login</title>
</head>
<style>
.login-panel {
margin-top: 150px;
</style>
<body>
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="login-panel panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">Sign In</h3>
</div>
<div class="panel-body">
<form role="form" method="post" action="login.php">
<fieldset>
<div class="form-group" >
<input class="form-control" placeholder="E-Mail" name="email" type="email" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="pass" type="password" value="">
</div>
<input class="btn btn-lg btn-success btn-block" type="submit" value="login" name="login" >
<!-- Change this to a button or input when using this as a form -->
<!-- <a href="index.html" class="btn btn-lg btn-success btn-block">Login</a> -->
</fieldset>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
<?php
include("database/db_conection.php");
if(isset($_POST['login'])){
$user_email=mysqli_real_escape_string($dbcon, $_POST['email']);
$user_pass=mysqli_real_escape_string($dbcon, $_POST['pass']);
$encrypted_password = password_hash($user_pass, PASSWORD_BCRYPT);
$query = $dbcon->query("SELECT user_pass FROM users WHERE user_email='$user_email'");
$passwordValue=$query->fetch_object()->user_pass;
if (password_verify($user_pass,$passwordValue)){
echo "Success!";
}else{
echo $encrypted_password;
echo "<div class='alert alert-danger'><a href='#' class='close' data-dismiss='alert' aria-label='close'>×</a><strong>Error!</strong> Email or password entered was incorrect!</div>";
}
/*$check_user="select * from users WHERE user_email='$encrypted_email' AND user_pass='$user_pass'";
$run=mysqli_query($dbcon,$check_user);
if(mysqli_num_rows($run))
{
echo "<script>window.open('welcome.php','_self')</script>";
$_SESSION['email']=$user_email;//here session is used and value of $user_email store in $_SESSION.
}
else
{
echo "<script>alert('Email or password is incorrect!')</script>";
}*/
}
?>
Это код, указанный в моем файле login.php. PHP-код в комментарии не является частью веб-страницы, и я удалю его позже.
Что такое линия 72? '' '$ dbcon-> query''' вернет' '' FALSE''', если запрос по какой-то причине не будет выполнен (что приведет к тому, что последующая строка выведет ошибку). Может использовать '' '$ dbcon-> error''', чтобы выяснить, что пошло не так. – MasterOdin
Строка 72 - '$ passwordValue = $ query-> fetch_object() -> user_pass;' –
Тогда да, у вас есть ошибка в вашем запросе. Используйте '' 'print $ dbcon-> ошибку,' '', чтобы распечатать, что происходит не так. – MasterOdin