Site d'annonces ب codeigniter الجزء الرابع

imadbelasri Codeigniter
CO

فهاد الجزء الرابع من Site d'annonces ب codeigniter غادي نكملو الملفات الخاصة بالمستخدم ولي غادي يكون فيها ل controller ول form لي غادي تمكنوا من التسجيل والكونيكسيون وأيضا غادي نشوفو كيفاش نزيدو ونمسحو admin. 


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


1- الملف User.php

ف Application/Controllers غادي تزيد ملف جديد سميه User.php لي غادي يكون فيه ل fonction register لي غادي تمكن من إضافة مستخدم من بعد مكتحقق بلي les champs عامرين من بعد كاين login لي كتكونيكطي مستخدم باستعمال ل email ول mot de passe ديالو ثم كاين logout لي كتديكونيكطي مستخدم  ثم كاين delete لي كتمسح مستخدم وهادشي كلو كيتندار ب les fonctions لي سبق وزدنا فل User_model الكود ديال الملف هو :


                                                    
                                                        <?php
defined('BASEPATH') OR exit('No direct script access allowed');

class User extends CI_Controller {
	public function index()
	{
		
    }
    public function register()
	{
		if($this->session->userdata("logged")){
			redirect(base_url());
		} 
		$this->form_validation->set_rules('nom','Nom','required|trim|min_length[3]');
		$this->form_validation->set_rules('prenom','Prénom','required|trim|min_length[3]');
		$this->form_validation->set_rules('email','Email','required|trim|valid_email|is_unique[users.email]');
		$this->form_validation->set_rules('password','Mot de passe','required|trim|min_length[3]');
		if($this->form_validation->run() == FALSE){
			$data = array(
				'requires' => validation_errors()
			);
			$this->session->set_flashdata($data);
			$this->load->view('users/register',$data);
		}else{
			if($this->User_model->register_user()){
				$this->session->set_flashdata('registred','Compte créé avec succés');
				redirect(base_url());
			}
		}
	}
	public function login(){
		if($this->session->userdata("logged")){
			redirect(base_url());
		} 
		$this->form_validation->set_rules('email','Email','required|trim|valid_email');
		$this->form_validation->set_rules('password','Mot de passe','required|trim|min_length[3]');
		if($this->form_validation->run() == FALSE){
			$data = array(
				'errors' => validation_errors()
			);
			$this->session->set_flashdata($data);
			$this->load->view('users/login',$data);
		}else {
			$email = $this->input->post('email');
			$password = $this->input->post('password');
			$user = $this->User_model->login_user($email,$password);
			if($user == 'info incorrect'){
				$this->session->set_flashdata('login_failed','L\'email ou le mot de passe est incorrect.');
				redirect(base_url()."user/login");
			}else{
				$user = $this->User_model->get_users_info_by_id($user);
				$user_data = array(
					'user_id' => $user->id,
					'email'=> $user->email,
					'nom'=> $user->firstname,
					'prenom'=> $user->lastname,
					'photo'=>$user->photo,
					'logged' => true,
					'admin' => $user->is_Admin
				);
				$this->session->set_userdata($user_data);
				redirect(base_url());
			}
		}	
	}
	public function logout(){
		$this->session->unset_userdata('user_id');
		$this->session->unset_userdata('email');
		$this->session->unset_userdata('nom');
		$this->session->unset_userdata('prenom');
		$this->session->unset_userdata('logged');
		$this->session->unset_userdata('admin');
		redirect(base_url());
	}
	public function delete($id){
		$deleted = $this->User_model->delete_user($id);
		if($this->session->userdata('user_id') == $id){
			$this->logout();
		}
		$this->session->set_flashdata('deleted','Supression effectuée avec succés');
		redirect(base_url().'admin');
	}
}
                                                    
                                                

2- الملف users/register.php

ف dossier views كنزيد dossier جديد كنسميه users فيه كانزيد ملف جديد كنسميه register.php  فيه الكود لي كيمكن المستخدم من التسجيل فكيدخل المعلومات الخاصة به فل form ثم كترسل لل fonction register لي كاينة فل controller User.php  الكود ديال الملف هو :

                                                        
                                                            <?php $this->load->view('layouts/header');?>
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
        <?php echo validation_errors('<div class="alert alert-danger">','</div>');?>
            <div class="panel panel-default">
                <h4 class="panel-heading text-default" style="padding:10px;margin-top:-1px;">Inscription</h4>
                <div class="row" style="padding:10px;">
                    <div class="col-md-8 col-md-offset-2">
                        <form action="#" method="post">
                            <div class="form-group">
                                <label for="name">Nom*</label>
                                <input type="text" name="nom" class="form-control" placeholder="Nom">
                            </div>
                            <div class="form-group">
                                <label for="prenom">Prenom*</label>
                                <input type="text" name="prenom" class="form-control" placeholder="Prénom">
                            </div>
                            <div class="form-group">
                                <label for="email">Email*</label>
                                <input type="email" name="email" class="form-control" placeholder="Email">
                            </div>
                            <div class="form-group">
                                <label for="password">Mot de passe*</label>
                                <input type="password" name="password" class="form-control" placeholder="Passe">
                            </div>
                            <div class="form-group">
                                <label for="city">Ville*</label>
                                <input type="text" name="city" class="form-control" placeholder="Ville">
                            </div>
                            <div class="form-group">
                                <label for="tel">Téléphone*</label>
                                <input type="tel" name="tel" class="form-control" placeholder="Tél">
                            </div>
                            <div class="form-group">
                                <input type="submit" class="btn btn-default" name="submit" value="Valider">
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<?php $this->load->view('layouts/footer');?>
                                                        
                                                    

3- الملف users/login.php

دائما ف users كنزيد ملف جديد سميه login.php لي فيه الكود لي كيمكن المستخدم باش يتكونيكطا منبعد مكيدخل ل email ول mot de passe فالفورم  ثم كيترسلو لل fonction login لي كاينة فل controller User.php الكود ديال الملف هو :

                                                        
                                                            <?php $this->load->view('layouts/header');?>
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <?php echo validation_errors('<div class="alert alert-danger">','</div>');?>
            <?php if($this->session->flashdata('login_failed')):?>
                <div class="alert alert-danger">
                    <?php echo $this->session->flashdata('login_failed');?>
                </div>
            <?php endif;?>
            <div class="panel panel-default">
                <h4 class="panel-heading text-default" style="padding:10px;margin-top:-1px;">Connexion</h4>
                <div class="row" style="padding:10px;">
                    <div class="col-md-8 col-md-offset-2">
                        <form action="#" method="post">
                            <div class="form-group">
                                <label for="email">Email*</label>
                                <input type="email" name="email" class="form-control" placeholder="Email">
                            </div>
                            <div class="form-group">
                                <label for="password">Mot de passe*</label>
                                <input type="password" name="password" class="form-control" placeholder="Passe">
                            </div>
                            <div class="form-group">
                                <input type="submit" class="btn btn-default" name="submit" value="Valider">
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<?php $this->load->view('layouts/footer');?>
                                                        
                                                    

4- الملف Admin_model.php

ف Application/modelsغادي تزيد ملف جديد سميه Admin_model.php لي غادي يكون فيه ل fonction store_user لي كتزيد admin جديد فكيفاش كنفرق ما بين مستخدم عادي وأدمن المستخدم العادي عندو ف le champ is_Admin 0 par défaut وفاش كنزيد أدمن كنعطيه 1 الكود ديال الملف هو :

                                                        
                                                            <?php
 
/**
 *
 */
class Admin_model extends CI_Model
{
  public function store_user(){
    $encrypted_pass = sha1($this->input->post('password'));
    $data = array(
        'lastname' => trim($this->input->post('prenom')),
        'firstname' => trim($this->input->post('nom')),
        'email' => trim($this->input->post('email')),
        'password' => $encrypted_pass,
        'city' => trim($this->input->post('city')),
        'Tel' => trim($this->input->post('tel')),
        'is_Admin' => 1
    );
    $this->db->insert('users',$data);
    return true;
  }
}
?>
                                                        
                                                    

5- الملف Admin.php

ف Application/Controllers غادي تزيد ملف جديد سميه Admin.php لي غادي يكون فيه ل fonction index لي كترجع les annonces ول users ول admins وكترسلهم للملف index ديال ل admin ولي غادي نزيدوه من بعد ثم كاين add لي كتوجه الأدمن للملف لي فيه الفورم باش يزيد أدمن حتى هو غادي نزيدوه من بعد ثم كاين ثم كاين store لي كتزيد أدمن ملي كتحقق بلي les champs كاملين عامرين الكود ديال الملف هو :


                                                        
                                                            <?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Admin extends CI_Controller {
	public function index()
	{
		$data['annonces'] =  $this->Ads_model->get_all_annonces();
		$data['users'] =  $this->User_model->get_users();
		$data['admins'] =  $this->User_model->get_admins();
		$this->load->view('admins/admin',$data);
	}
	public function add(){
		$this->load->view('admins/add-admin');
	}
	public function store(){
		if(!$this->session->userdata("admin")){
			redirect(base_url());
		} 
		$this->form_validation->set_rules('nom','Nom','required|trim|min_length[3]');
		$this->form_validation->set_rules('prenom','Prénom','required|trim|min_length[3]');
		$this->form_validation->set_rules('email','Email','required|trim|valid_email|is_unique[users.email]');
		$this->form_validation->set_rules('password','Mot de passe','required|trim|min_length[3]');
		if($this->form_validation->run() == FALSE){
			$data = array(
				'requires' => validation_errors()
			);
			$this->session->set_flashdata($data);
			$this->load->view('admins/add-admin',$data);
		}else{
			if($this->User_model->register_admin()){
				$this->session->set_flashdata('registred','Compte créé avec succés');
				redirect(base_url().'admin');
			}
		}
	}
}