site ecommerce php mvc & pdo الجزء السابع

imadbelasri PHP
PH

فهاد الجزء السابع من site ecommerce php mvc & pdo غادي نزيدو système ديال login و logout غادي نزيدو ل controller الخاص بل users لي فيه ل fonctions ديال التسجيل وتسجيل الدخول ومنبعد غادي نزيدو الفورم لي غادي تمكنا من تفعيل login و logout. 


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


1- إضافة ل User model

ف dossier models غادي تزيد fichier جديد سميه User.php لي فيه les fonctions :

- login لي مسؤولة على استقبال ل username لي به غادي يدخل المستخدم.

- 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 "error : ".$ex.getMessage();
        }
    }

    static public function createUser($data){
        $stmt = DB::connect()->prepare('INSERT INTO users (fullname
        ,username,email,password)
        VALUES (:fullname,:username,:email,:password)');
        $stmt->bindParam(':fullname',$data['fullname']);
        $stmt->bindParam(':username',$data['username']);
        $stmt->bindParam(':email',$data['email']);
        $stmt->bindParam(':password',$data['password']);
        if($stmt->execute()){
            return 'ok';
        }else{
            return 'error';
        }
        $stmt->close();
        $stmt = null;
    }
}
                                                    
                                                

2- إضافة ل UsersController

ف dossier controllers غادي تزيد fichier جديد سميه UsersController.php لي فيه les fonctions :

- auth لي غادي ترسل المعلومات الخاصة بالمستخدم لي جات من الفورم ديال login لل fonction login لي زدنا فل model User يلا كانت المعلومات صحيحة غادي نزيدوه ف session مكانتش غادي نعرضوا رسالة تنبيه أن المعلومات ماشي صحيحة.

- register لي كنسجل بها مستخدم جديد أول حاجة كن crypter ل mot de passe وكنرسل المعلومات لي جاوني من الفورم register ل fonction createUser لي زدنا فل model User.

- logout لي كتمكن المستخدم باش ي déconnecta. 

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

                                                        
                                                            <?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;
                $_SESSION["fullname"] = $result->fullname;
                $_SESSION["admin"] = $result->admin;
                Redirect::to("home");
            }else{
                Session::set("error","Pseudo ou mot de passe est incorrect");
                Redirect::to("login");
            }
        }
    }
    public function register(){
        $options = [
            "cost" => 12
        ];
        $password = password_hash($_POST["password"],PASSWORD_BCRYPT,$options);
        $data = array(
            "fullname" => $_POST["fullname"],
            "username" => $_POST["username"],
            "email" => $_POST["email"],
            "password" => $password,
        );
        $result = User::createUser($data);
        if($result === "ok"){
            Session::set("success","Compte crée");
            Redirect::to("login");
        }else{
            echo $result;
        }
    }
    public function logout(){
        session_destroy();
    }
}
                                                        
                                                    

3- إضافة الملف register.php

منبعد ف dossier views غادي تزيد fichier جديد سميه register.php لي غادي تكون فيها الفورم ديال التسجيل أول حاجة كنتحقق واش المستخدم conncecté يلا كان كنصيفطو للصفحة الرئيسية.

مكانش منبعد مكيضغط على زر الإضافة كنفذ ل fonction register لي كتاخذ المعلومات وكتزيدها فقاعدة البيانات.

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

                                                        
                                                            <?php
    if(isset($_SESSION["logged"]) && $_SESSION["logged"] === true){
        Redirect::to("home");
    }
    if(isset($_POST["submit"])){
        $createUser = new UsersController();
        $createUser->register();
    }
?>
<div class="container">
    <div class="row my-4">
        <div class="col-md-6 mx-auto">
            <div class="card">
                <div class="card-header">
                    <h3 class="card-title">
                        Inscription
                    </h3>
                </div>
                <div class="card-body">
                    <form method="post" class="mr-1">
                        <div class="form-group">
                            <input type="text"
                            class="form-control"
                            name="fullname" required autocomplete="off" placeholder="Nom & Prénom" id="">
                        </div>
                        <div class="form-group">
                            <input type="text" autocomplete="off" class="form-control" name="username" 
                            placeholder="Pseudo" id="">
                        </div>
                        <div class="form-group">
                            <input type="email" autocomplete="off" class="form-control" name="email" 
                            placeholder="Email" id="">
                        </div>
                        <div class="form-group">
                            <input type="password" autocomplete="off" class="form-control" name="password" 
                            placeholder="Mot de passe" id="">
                        </div>
                        <div class="form-group">
                            <button name="submit" class="btn btn-primary">
                                Inscription
                            </button>
                        </div>
                    </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 غادي تزيد fichier جديد سميه login.php لي غادي تكون فيها الفورم ديال تسجيل الدخول أول حاجة كنتحقق واش المستخدم connecté يلا كان كنصيفطو للصفحة الرئيسية.

مكانش منبعد مكيضغط على زر تسجيل الدخول كنفذ ل fonction login لي كتاخذ المعلومات وكتحقق واش كاينة فقاعدة البيانات.

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

                                                        
                                                            <?php
    if(isset($_SESSION["logged"]) && $_SESSION["logged"] === true){
        Redirect::to("home");
    }
    $loginUser = new UsersController();
    $loginUser->auth();
?>
<div class="container">
    <div class="row my-4">
        <div class="col-md-6 mx-auto">
            <div class="card">
                <div class="card-header">
                    <h3 class="card-title">
                        Connexion
                    </h3>
                </div>
                <div class="card-body">
                    <form method="post" class="mr-1">
                        <div class="form-group">
                            <input autocomplete="off" type="text" class="form-control" name="username" 
                            placeholder="Pseudo" id="">
                        </div>
                        <div class="form-group">
                            <input autocomplete="off" type="password" class="form-control" name="password" 
                            placeholder="Mot de passe" id="">
                        </div>
                        <div class="form-group">
                            <button name="submit" class="btn btn-primary">
                                Connexion
                            </button>
                        </div>
                    </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

دائما ف views زيد fichier جديد سميه logout.php لي فيه الكود لي غادي يمكن المستخدم باش ي déconnecta ولي كينفذ ل fonction logout لي سبق وزدنا فل UsersController وبهذا كنكونوا سالينا مع login 👍

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

                                                        
                                                            <?php
$user = new UsersController();
$user->logout();
Redirect::to("home");
                                                        
                                                    

دروس ذات صلة

PH

كيفاش تزيد المعلومات فقاعدة البيانات بإستعمال Ajax

فهاد الدرس غادي نقادو واحد المشروع بسيط لي عبارة عن chatbox الهدف هنا ماشي هو نديرو chat ولكن الهدف...


PH

كيفاش تصاوب إختبار بإستعمال PHP الجزء الأول

فهاد الدرس غادي نشوفو كيفاش نديرو نصاوبو واحد الإختبار بسيط هاد الإختبار غادي يطرح الاسئلة على المست...


PH

كيفاش تصاوب إختبار بإستعمال PHP الجزء الثاني

فهاد الدرس لي هو الجزء الثاني ديال كيفاش نقاد إختبار بإستعمال ل php غادي نكملو باقي الصفحات لي غادي...


PH

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

فهاد المشروع غادي نشوفو كيفاش نقادو blog بإستعمال php كما غادي نشوفو كيفاش نسجلو المعلومات ديالنا فق...


PH

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

فهاد الجزء الثاني من هاد المشروع غادي نشوفو كيفاش نسجلو المعلومات ديالنا فقاعدة البيانات و كيفاش ند...


PH

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

فهاد الجزء الثالث من هاد المشروع غادي نكملو الملفات الخاصة بالأدمن وغادي نقادو الصفحات الرئيسية لي...


PH

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

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


PH

مشروع Photos Gallery بل PHP الجزء الأول

فهاد الدرس غادي نشوفو كيفاش نصاوبو واحد المشروع لي عبارة عن موقع للصور المستخدم كيدخل كيشاهد الصور و...


PH

مشروع Photos Gallery بل PHP الجزء الثاني

فهاد الجزء الثاني غادي نقادو الملفات لي غادي يمكننا من ربط الإتصال بقاعدة البيانات وغادي نزيدو الملف...


PH

مشروع Photos Gallery بل PHP الجزء الثالث

فهاد الجزء الثالث من المشروع ديالنا غادي نكملو الملفات لي غادي يمكنو من التعامل مع المعلومات الخاصة...