Application de gestion d'employés ب PHP MVC و PDO الجزء الخامس

imadbelasri PHP
PH

فهاد الجزء الخامس من Application de gestion d'employés ب PHP MVC و PDO غادي نزيدو login system لل projet ديالنا فالمستخدم ميكون عندو حق الولوج ل application حتى يكون connecté.


نظرة سريعة بالفيديو


1- إضافة ل MODEL User.PHP

ف dossier models زيد fichier سميه User.php هادا هو ل model ديالنا لي غادي يكونوا فيه les fonctions لي عندهم علاقة بإضافة مستخدم وإتصال مستخدم.

عندي les fonctions ديال login لي كتحقق واش مستخدم كاين وكترجعونا وعندنا createUser لي كتزيد مستخدم فقاعدة البيانات.

الكود ديال الملف هو :

                                                    
                                                        //
<?php 

class User{

	static public function login($data){
		$username = $data['username'];
		try{
			$query = 'SELECT * FROM users WHERE username=:username';
			$stmt = DB::connect()->prepare($query);
			$stmt->execute(array(":username" => $username));
			$user = $stmt->fetch(PDO::FETCH_OBJ);
			return $user;
		}catch(PDOException $ex){
			echo 'erreur' . $ex->getMessage();
		}
	}

	static public function createUser($data){
		$stmt = DB::connect()->prepare('INSERT INTO users (fullname,username,password)
			VALUES (:fullname,:username,:password)');
		$stmt->bindParam(':fullname',$data['fullname']);
		$stmt->bindParam(':username',$data['username']);
		$stmt->bindParam(':password',$data['password']);

		if($stmt->execute()){
			return 'ok';
		}else{
			return 'error';
		}
		$stmt->close();
		$stmt = null;
	}

}

 ?>
                                                    
                                                

2- إضافة ل CONTROLLER USERSCONTROLLER.PHP

منبعد زيد ف dossier controllers fichier سميه UsersController.php هادا هو ل controller ديالنا لي غادي يكونوا فيه نفس les fonctions لي زدنا فل model User فقط هنا كنستقبلوا المعلومات لي جاونا من الفورم وكنعطيهم ل les fonctions ديال ل model.

عندي les fonctions ديال إضافة مستخدم جديد وأيضا ديال ل connexion لي كتسترجع المستخدم وكتحقق من أن كلمة المرور هي نفسها لي عندنا فقاعدة البيانات وكتزيدنا المعلومات ديالو ف session.

الكود ديال الملف هو :

                                                        
                                                            //
<?php 

class UsersController {

	public function auth(){
		if(isset($_POST['submit'])){
			$data['username'] = $_POST['username'];
			$result = User::login($data);
			if($result->username === $_POST['username'] && password_verify($_POST['password'],$result->password)){

				$_SESSION['logged'] = true;
				$_SESSION['username'] = $result->username;
				Redirect::to('home');

			}else{
				Session::set('error','Pseudo ou mot de passe est incorrect');
				Redirect::to('login');
			}
		}
	}

	public function register(){
		if(isset($_POST['submit'])){
			$options = [
				'cost' => 12
			];
			$password = password_hash($_POST['password'],PASSWORD_BCRYPT,$options);
			$data = array(
				'fullname' => $_POST['fullname'],
				'username' => $_POST['username'],
				'password' => $password,
			);
			$result = User::createUser($data);
			if($result === 'ok'){
				Session::set('success','Compte crée');
				Redirect::to('login');
			}else{
				echo $result;
			}
		}
	}

	static public function logout(){
		session_destroy();
	}


}
                                                        
                                                    

3- إضافة الملف REGISTER.PHP

غادي نمشي ل dossier views غادي نزيد ملف جديد سميه register.php فيه غادي تكون فورم التسجيل ولي غادي نرسلوا المعلومات لي استرجعنا منها ل fonction register لي عندنا ف UsersController.

الكود لي غادي تزيد فل fichier هو :

                                                        
                                                            //
<?php 
	if(isset($_POST['submit'])){
		$createUser = new UsersController();
		$createUser->register();
	}
?>
<div class="container">
	<div class="row my-4">
		<div class="col-md-6 mx-auto">
			<?php include('./views/includes/alerts.php');?>
			<div class="card">
				<div class="card-header">
					<h3 class="text-center">Inscription</h3>
				</div>
				<div class="card-body bg-light">
			      	<form method="post" class="mr-1">
			      		<div class="form-group">
				      		<input type="text" name="fullname" placeholder="Nom & Prénom" class="form-control">
				      	</div>
			      		<div class="form-group">
				      		<input type="text" name="username" placeholder="Pseudo" class="form-control">
				      	</div>
				      	<div class="form-group">
				      		<input type="password" name="password" placeholder="Mot de passe" class="form-control">
				      	</div>
			      		<button name="submit" class="btn btn-sm btn-primary">Inscription</button>
			      	</form>
				</div>
				<div class="card-footer">
					<a href="<?php echo BASE_URL;?>login" class="btn btn-link">Connexion</a>
				</div>
			</div>
		</div>
	</div>
</div>
                                                        
                                                    

4- إضافة الملف LOGIN.PHP

دائما ف dossier views غادي نزيد ملف جديد سميه login.php فيه غادي تكون فورم تسجيل الدخول ولي غادي نرسلوا المعلومات لي استرجعنا منها ل fonction auth لي عندنا ف UsersController.

الكود لي غادي تزيد فل fichier هو :

                                                        
                                                            //
<?php 
	if(isset($_POST['submit'])){
		$loginUser = new UsersController();
		$loginUser->auth();
	}
?>
<div class="container">
	<div class="row my-4">
		<div class="col-md-6 mx-auto">
			<?php include('./views/includes/alerts.php');?>
			<div class="card">
				<div class="card-header">
					<h3 class="text-center">Connexion</h3>
				</div>
				<div class="card-body bg-light">
			      	<form method="post" class="mr-1">
			      		<div class="form-group">
				      		<input type="text" name="username" placeholder="Pseudo" class="form-control">
				      	</div>
				      	<div class="form-group">
				      		<input type="password" name="password" placeholder="Mot de passe" class="form-control">
				      	</div>
			      		<button name="submit" class="btn btn-sm btn-primary">Connexion</button>
			      	</form>
				</div>
				<div class="card-footer">
					<a href="<?php echo BASE_URL;?>register" class="btn btn-link">Inscription</a>
				</div>
			</div>
		</div>
	</div>
</div>
                                                        
                                                    

5- إضافة الملف logout.PHP

دائما ف dossier views غادي نزيد ملف جديد سميه logout.php فيه غادي يكون الكود ديال déconnexion  فقط كنفذ ل fonction logout لي عندنا ف UsersController.

الكود لي غادي تزيد فل fichier هو :

                                                        
                                                            //
<?php 
	UsersController::logout();
	Redirect::to('login');
?>