Site d'annonces ب codeigniter الجزء الرابع
نظرة سريعة بالفيديو
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
<?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
<?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
<?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');
}
}
}
}