Не могу войти используя php; всегда движется к другой части

Проблема заключается в том, что всякий раз, когда я пытаюсь войти в систему, он генерирует следующую ошибку:

Ошибка ! Что-то неправильно

Каждый раз, когда он переходит в другую часть. Ниже мой код.

<?php
include_once 'session.php';
include 'database.php';

?>

<?php

class  user{
private $db;

public function __construct(){
$this->db = new database();

}

public function userRegister($data){

$name = $data['name'];
$email = $data['email'];
$password = md5($data['password']);
$chk_email = $this->emailCheck($email);

if($name=="" or $email == "" or $password == "" ) {
echo "Field must not be empty . ";
}
else if(filter_var($email,FILTER_VALIDATE_EMAIL)=== false){
$msg = "<div class ='alert alert-danger'><strong>Error ! </strong>Email address is not valid</div>";
return $msg;

}

if ($chk_email==true){

$msg = "<div class ='alert alert-danger'><strong>Error ! </strong>This email is already exist</div>";
return $msg;

}

$sql= "INSERT INTO info_tbl(name,email,password)VALUES(:name,:email,:password)";
$query = $this->db->pdo->prepare($sql);

$query -> bindValue(':name',$name);
$query -> bindValue(':email',$email);
$query -> bindValue(':password',$password);

$result=$query->execute();
if($result) {
$msg = "<div class = 'alert alert-success'><strong>Success !</strong> Registration have been successfully.</div>";
return $msg;
}

}public function emailCheck($email){
$sql = "SELECT email FROM info_tbl WHERE email = :email ";
$query = $this->db->pdo->prepare($sql ); // prepare() is the method of PDO class;
$query->bindValue(':email',$email);  //bindValue() is the method of PDO class;
$query->execute();
if($query->rowCount()>0){
return true;
}else{
return false;
}
}

public function getLoginuser($email, $password){
$sql = "SELECT * FROM info_tbl WHERE email = :email AND password = :password LIMIT  1";
$query = $this->db->pdo->prepare($sql);
$query -> bindValue(':email',$email);
$query -> bindValue(':password',$password);
$query -> execute();

$result = $query->fetch(PDO::FETCH_OBJ);

}public function userLogin($data){

$email = $data['email'];
$password = md5($data['password']);
$chk_email = $this->emailCheck($email);

if($email == "" or $password == "" ) {
echo "Field must not be empty . ";
}
else if(filter_var($email,FILTER_VALIDATE_EMAIL)=== false){  // email validate
$msg = "<div class ='alert alert-danger'><strong>Error ! </strong>Email address is not valid</div>";
return $msg;

}
if ($chk_email==false){

$msg = "<div class ='alert alert-danger'><strong>Error ! </strong>This email  is not valid</div>";
return $msg;

}
$res =  $this->getLoginuser($email,$password);
if($res){
session::init();
session::set("login",true);
session::set("id",$result->id);
session::set("name",$result->name);
//session::set("email",$result->email);
session::set("loginmsg","<div class = 'alert alert-success'><strong>success ! </strong> you are successfully login </div>");
return "user login success";
header(" Location :index.php");
}
else{
$msg = "<div class = 'alert alert-danger'><strong>Error ! </strong> Some thing is not right </div>";
return $msg;

}
}

}
?>

Пожалуйста, помогите мне решить эту проблему. Благодарю.

-1

Решение

Ответ на ваш вопрос прост: вы ничего не возвращаете из getLoginuser() метод так $res всегда буду оценивать false,

тем не мение вам не следует использовать несоленный хэш md5 в качестве пароля, поэтому вы должны изменить свою логику, чтобы использовать более современный метод для хранения и проверки ваших паролей. Вы можете начать здесь: Как я могу безопасно хранить пароли моих пользователей?

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector