كيفاش نصاوب blog بل php الجزء الرابع

فهاد الجزء الرابع غادي نشوفو كيفاش نزيدو système d'authentification لي غادي يمكن المستخدم من التسجيل فقاعدة البيانات و الدخول كما غادي يميز بين المستخدم العادي والأدمن لي غادي تكون عندو صلاحيات مختلفة.

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


- الملف register.php


أول حاجة غادي نمشيو للمجلد php-blog وغادي نزيدو فيه ملف نسميه register.php لي غادي يمكن المستخدم من التسجيل فقاعدة البيانات هاد الملف كيتضمن المعلومات الخاصة بالمستخدم كالإسم والإمايل وكلمة المرور الكود النهائي ديالو :

                                    
                                        <?php include('includes/header.php');?>
<body>
<?php include('includes/menu.php');?>
<?php 
     //connexion au base de données
     $db = new Database();
     if(isset($_POST['submit'])){
         $nom = mysqli_real_escape_string($db->link,$_POST['firstname']);
         $prenom = mysqli_real_escape_string($db->link,$_POST['lastname']);
         $email = mysqli_real_escape_string($db->link,$_POST['email']);
         $password = mysqli_real_escape_string($db->link,$_POST['password']);
         $pass_crypted = sha1($password);
         if($nom == '' || $prenom == '' || $email == '' || $password == ''){
             $error = "Veuillez remplir tous les champs";
         }else{
             $query = "INSERT INTO users (nom,prenom,email,passe) VALUES ('$nom','$prenom','$email','$pass_crypted')";
             $insert = $db->insert($query);
         }
     }
?>
<div class="container">
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
            <div class="panel panel-default">
                <h1 class="text-center text-primary">Inscription</h1>
                <hr>
                <section class="questions-box row">
                    <div class="col-md-8 col-md-offset-2">
                       <form action="register.php" method="post">
                            <div class="form-group">
                                <label for="firstname">Nom*</label>
                                <input type="text" name="firstname"  class="form-control">
                            </div>
                            <div class="form-group">
                                <label for="lastname">Prénom*</label>
                                 <input type="text" name="lastname"  class="form-control">
                            </div>
                             <div class="form-group">
                                <label for="email">Email*</label>
                                <input type="email" name="email" placeholder="Email" class="form-control">
                            </div>
                            <div class="form-group">
                                <label for="password">Mot de passe*</label>
                                <input type="password" name="password" placeholder="Mot de passe" class="form-control">
                            </div>
                            <div class="form-group">
                                <button type="submit" name="submit" class="btn btn-success">Créer compte</button>
                            </div>
                       </form>
                    </div>
                </section>
            </div>
        </div>
    </div>
</div>
<?php include('includes/footer.php');?>
                                    
                                

- الملف login.php


من بعد ودائما فالمجلد الرئيسي ديال المشروع ديالنا كنزيدو ملف جديد كنسميه login.php هاد الملف هو لي غادي يدير التحقق من كلمة المرور والإمايل لي دخلهم المستخدم و كيوجهو للصفحة الرئيسية لي غادي تضمن رسائل تأكيد الدخول أو الخطأ الكود ديالو هو :

                                    
                                        <?php include('includes/header.php');?>
<?php
//connexion
$db = new Database();
if(isset($_POST['submit'])){
    $email = mysqli_real_escape_string($db->link,$_POST['email']);
    $passe = mysqli_real_escape_string($db->link,$_POST['password']);
    $pass_crypted = sha1($passe);
}
//requête de selection 
$query = "SELECT * FROM users WHERE email = '$email' AND passe = '$pass_crypted'";
$result = $db->select($query);
if(!empty($result)){
    $user = $result->fetch_assoc();
    $_SESSION['logged'] = true;
    $_SESSION['nom'] = $user['nom'];
    $_SESSION['prenom'] = $user['prenom'];
    $_SESSION['admin'] = $user['is_admin'];
    header("location:index.php");
}elseif(empty($result)){
    header("location:index.php?erreur=".urlencode('Erreur aucune information trouvée!'));
}
                                    
                                

- الملف logout.php


من بعد ودائما فالمجلد الرئيسي ديال المشروع ديالنا كنزيدو ملف جديد كنسميه logout.php هاد الملف هو لي غادي يمكن المستخدم من الخروج الكود ديالو هو :

                                      
                                        <?php
$_SESSION = array();
// verification et déstruction des cookies
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}
//déstruction de la  session 
session_destroy();
$_SESSION['logged'] = false;
header("location:index.php");
                                      
                                    

- تغييرات على الملف menu.php


من بعد غادي نمشي للمجلد includes وغادي ندير تغييرات على الملف menu.php غادي نزيد فيه القائمة الخاصة بتسجيل المستخدم الكود الجديد ديالو هو :

                                        
                                            <nav class="navbar navbar-default">
    <div class="container-fluid">
        <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="index.php">Php Blog</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
            <li><a href="index.php">Acceuil</a></li>
            <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Posts <span class="caret"></span></a>
            <ul class="dropdown-menu">
                <li><a href="posts.php">Tous les postst</a></li>
            </ul>
            </li>
            <?php if(isset($_SESSION['logged']) && $_SESSION['admin'] == true):?>
               <li><a href="logout.php">Bienvenue <?php echo '<span class="label label-success">'.$_SESSION['nom'].' '.$_SESSION['prenom'].'</span>';?> Déconnexion</a></li>
               <li><a href="admin/index.php">Admin Panel</a></li>
            <?php elseif(isset($_SESSION['logged']) && ($_SESSION['logged'] == true)):?>
               <li><a href="logout.php">Bienvenue <?php echo '<span class="label label-success">'.$_SESSION['nom'].' '.$_SESSION['prenom'].'</span>';?> Déconnexion</a></li>
            <?php else:?>
               <li><a href="register.php">Inscription</a></li>
            <?php endif;?>
        </ul>
        </div><!--/.nav-collapse -->
    </div><!--/.container-fluid -->
 </nav>
                                        
                                    

- تغييرات على الملف index.php


من بعد ودائما فالمجلد الرئيسي ديال المشروع ديالنا غادي ندير تغييرات على الملف index.php غادي نزيد فيه لForm الخاصة بتسجيل الدخول ديال المستخدم الكود الجديد ديالو هو :

                                        
                                            <?php
  include('includes/header.php');
  $db = new Database();
  //select posts requête 
  $query = "SELECT * FROM posts";
  $posts =  $db->select($query);
  //select catégories requête
  $query = "SELECT * FROM categories";
  $categories =  $db->select($query);
?>
  <body>
  <?php include('includes/menu.php');?>
  <?php if(isset($_GET['msg'])):?>
    <div class="alert alert-success"><?php echo $_GET['msg'];?></div>
  <?php elseif(isset($_GET['erreur'])):?>
    <div class="alert alert-danger"><?php echo $_GET['erreur'];?></div>
  <?php endif;?>
  <div class="container">
      <div class="row"> 
        <div class="col-md-8">
         <?php if($posts):?>
          <div  class="panel panel-default">
            <?php foreach($posts as $post) :?>
                <h1 class="padded text-default"><?php echo $post['title'];?></h1>
                <small class="text-info padded"><?php echo $post['date'];?> par <?php echo $post['author'];?></small>
                <p class="lead padded">
                  <?php echo shortenText($post['body'])?><a href="post.php?id=<?php echo urlencode($post['id']);?>" class="btn btn-link">Plus..</a>
                </p>
                <hr>
            <?php endforeach;?>
          </div>
          <?php else :?>
            <p class="alert alert-info">Aucun post trouvé.</p>
          <?php endif;?>
        </div>
        <?php if(isset($_SESSION['logged']) && $_SESSION['logged'] == true):?>
        <?php else:?>
          <div class="col-md-3 col-md-offset-1">
            <div  class="panel panel-default">
                <h3 class="text-primary text-center">Connexion</h3>
                <form action="login.php" method="post" class="form-vertical padded">
                  <div class="form-group">
                    <label for="email">Email*</label>
                    <input type="email" name="email" placeholder="Email" class="form-control">
                  </div>
                  <div class="form-group">
                    <label for="password">Mot de passe*</label>
                    <input type="password" name="password" placeholder="Mot de passe" class="form-control">
                  </div>
                  <div class="form-group">
                    <button class="btn btn-success" type="submit" name="submit">Connexion</button>
                  </div>
                </form>
            </div>
          </div>
         <?php endif;?>
         <div class="col-md-3 col-md-offset-1">
           <div  class="panel panel-default">
              <h3 class="text-primary text-center">Catégories</h3>
              <?php if($categories):?>
                <?php foreach($categories as $categorie) :?>
                  <span><a href="posts.php?category=<?php echo $categorie['id'];?>" class="btn btn-link"><?php echo $categorie['name'];?></a></span>
                <?php endforeach;?>
              <?php endif;?>
           </div>
        </div>
  </div>
</body>
<?php include('includes/footer.php');?>

                                        
                                    

كلمات مفاتيح :