كلاس php: الدرس السابع:كيف تبرمج كلاس دخول صفحة محمية

نستكمل معكم اخوانى الكرام دروس دورة برمجة الكلاسات , وكنا قد أخذنا فى الدرس الاخير كيف سنخطط
لبرمجة كلاسات الphp او اى شىء تريد برمجته تمهيدا لهذا الدرس والدروس القادمه.فى هذا الدرس سوف نبدأ بشرح كيف تبرمج بنفسك كلاسات الphp



وسوف نأخذ اول مثال عملى وخفيف ,وهو كيفية برمجة كلاس لحماية صفحة بباسورد دخول


حمل ملفات الدرس من هـــــــنـــــــا




طبعا ,أذكركم بأساسيات التفكير من الدرس السابق قبل ان نقوم بعمل اى شىء

1-لابد ان تملك الأساسيات فى جيبك قبل البرمجة
2-لابد ان تحضر ورقه وقلم لتخطط ما ستقوم ببرمجته
3-لابد ان تقوم برسم مخطط على جهازك لما ستقوم ببرمجته
4-لابد ان تضع المخطط بجانب المحرر الذى تكتب فيه كودك لتطبق مخططك وتحوله لقطعه برمجية
5-لابد ان تنظم كودك بكتابة فكرة كل كود قبل كتابة الكود
6-لابد ان تكتب كودك كهيكل عام ,ثم تبدأ بتخصيصه لما تريد ان تفعله به
7-لابد ان تضع تعليقاتك الخاصه بجانب كل كود لتتذكر فكرته او تسهل لمن يقرأ كودك ان يفهمه
نتوكل على الله ونأخذ هذه الأساسيات خطوه خطوه, وشاهدوا ما سننتجه بإتباع هذا النظام فى البرمجة



1-لابد ان تملك الأساسيات فى جيبك قبل البرمجة

من الأساسيات التى لابد ان تتقنها لعمل صفحة دخول محمية بباسورد هو الأتى:

1-التعامل مع الفورمز forms وكيفية ربطها مع php , يمكنك القاء نظره من w3schools
2-التعامل مع الجلسات sessions بما أننا سنستخدمها فى تخزين الجلسات عند الدخول ,من w3schools
3-التعامل مع الحالة الشرطية if..else وطبعا أساسيات الكلاسات 

2-لابد ان تحضر ورقه وقلم لتخطط ما ستقوم ببرمجته

سنحضر ورقه وقلم , وسنفكر قليلا ونسأل نفسنا؟

-أريد ان أقوم بعمل صفحة عباره عن فورم من خانة واحده لادخال باسورد,بحيث اطابقه بباسورد مخزن 
بحيث لو صحيح سوف أدخل لصفحة محمية .
-نرسم الفورم وزر الsubmit ..........
-الان ,كيف سأفكر بعمل هذا الفورم للتحقق من الباسورد اللى كتبته ؟
اولا: بما اننا سنحدد باسورد نطابقه باللى راح يدخله المستخدم فى الفورم, سنقوم بعمل متغير يوجد به الباسورد الصحيح
ثانيا:علينا ان نقوم بعملية تحقق باستخدام الحالة الشرطية if..else ,بحيث سيوجد عندنا حالتين لا ثالث لهم سوف يحدث واحد منهما
1-ان لا يتم اى كتابة اى شىء فى الفورم وبالتالى لن يتم عمل مطابقة للباسورد وتخزين جلسة بذلك
2-واما ان يتم كتابة شىء فى الفورم , ومن ثم يتم مطابقته بالباسورد الصحيح,بحيث لو خطأ يرجع بالفورم مره أخرى , ولو صح ,راح يتم عمل جلسة جديده وراح ندخل الصفحة المحمية 

هذه هى الفكره بشرح مبسط,


3-لابد ان تقوم برسم مخطط على جهازك لما ستقوم ببرمجته

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





4-لابد ان تضع المخطط بجانب المحرر الذى تكتب فيه كودك لتطبق مخططك وتحوله لقطعه برمجية

قم بفتح صورة المخطط وضعها بجانب المحرر اللى راح تكتب فيه ............

5-لابد ان تنظم كودك بكتابة فكرة كل كود قبل كتابة الكود

سنقوم بكتابة العناوين الرئيسية لكل كود قبل البدء فى كتابتها.....

نشوف.........
رمز Code:
/* متغير للباسورد*/

/*فانكشن لكود الفورم */

/*فانكشن للتحقق من الباسورد المدخل قبل دخول الصفحة المحمية  */

/* اذا لم يتم ضغط الزر ولم يتم تسجيل جلسة */

/*  واما اذا تم ضغط الزر--تحقق من الباسورد-لو مش مطابق- ارجع للفورم مره اخرى بدون جلسه واما احفظ الجلسة فى متغير    */

/*أبدأ الجلسة  */

/* متغير جديد لاستخدام الكلاس*/

/*نفذ فانكشن التحقق */


6-لابد ان تكتب كودك كهيكل عام ,ثم تبدأ بتخصيصه لما تريد ان تفعله به

بعد ما كتبنا فكرة كل كود, دعنا نبدأ فى التكويد وكتابة الهيكل العام للكلاس.......

رمز Code:
<?php

class protect{
protected $passowrd="";
function showform(){

?>


<form action="" method="">

<label>password:
<input type="" name="" >
</label>

<label>
<input type="" name="" value="">
</label>


<?php

function login(){

if(){

}

else
{

}


}


}

session_start();
$protector= new protect():
$protector->login();

?>


ثم سنبدأ بتخصيصه بحيث نحول فكرة مخططنا لشىء عملى بالفعل, وسنقوم بالاتى:

1-نحدد الباسورد مطابقته باللى راح يدخله الزائر فى الفورم
رمز Code:
protected $password = 'test';

2-نحدد قيم الفورم الخاص بادخال الباسورد
رمز Code:
      <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
                     <center>
                         <label>Password:
                             <input name="passwd" type="password" size="20" />
                         </label><br/>
                      
                        <label>
                             <input type="submit" name="submitBtn" value="Login" />
                         </label>
                     </center>
                 </form>


3-الان نأتى لأقوى شىء فى برمجة هذا الكلاس,
-الان علينا نطبق الحالة الشرطية الاولى وهى لو لم يتم ضغط الزر ولم يتم تسجيل جلسة ,سنرجع بدون جلسة ونرجع للفورم مره اخرى ,لكن قبل ان نقوم بعمل ذلك, علينا ان نقوم بعمل متغير
للتحقق من وجود جلسة بالفعل ام لا,لذلك سنقوم بعمل متغير وسنتحقق كالتالى :
رمز Code:
	$loggedin = isset($_SESSION['loggedin']) ? $_SESSION['loggedin'] : false;
سبق وشرحتلكم العملية الثلاثية ternary operator , والجملة السابقة تساوى بالظبط الاتى:
رمز Code:
if(isset($_session['loggedin'])) 
            {
            $loggedin=$_session['loggedin'];
            }
            else
            {
             $loggedin=false;   
            }
-ثم نطبق الحالة الشرطية ......

رمز Code:
f ( (!isset($_POST['submitBtn'])) && (!($loggedin))){
            $_SESSION['loggedin'] = false;
			   $this->showform();
			   exit();
               
               
        }

-نكمل بقية الحالة الشرطية, واما else ان يتم ضغط الزر
رمز Code:
else if (isset($_POST['submitBtn'])) {
سنقوم بالتحقق من الباسورد المدخل ونطابقه بالصحيح
رمز Code:
  $pass = isset($_POST['passwd']) ? $_POST['passwd'] : '';

بحيث لو كان الباسورد اللى كتبه الزائر لم يطابق الاصل, سنرجع للفورم مره اخرى
رمز Code:
if ($pass != $this->password) {
				   $_SESSION['loggedin'] = false;
				   $this->showform();
				   exit();     
			   }
واما يتم تخزين الجلسة , ويعنى ان الباسورد اللى انكتب صحيح

رمز Code:
else {
				   $_SESSION['loggedin'] = true;
			   }

ثم نغلق الكلاس بحيث تكون الكلاس بالكامل كالاتى:

رمز Code:
<?php


class Protect{
	protected $password = 'test';
	
    function showform(){
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>كلاس دخول صفحة محمية </title>

</head>
<body>
      
            
            
                <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
                     <center>
                         <label>Password:
                             <input name="passwd" type="password" size="20" />
                         </label><br/>
                      
                        <label>
                             <input type="submit" name="submitBtn" value="Login" />
                         </label>
                     </center>
                 </form>
          

</body>		 
<?php
    }

    function login(){
        /*if(isset($_session['loggedin'])) 
            {
            $loggedin=$_session['loggedin'];
            }
            else
            {
             $loggedin=false;   
            }
            
            $_session['var'] to store session variable
        */
        
		$loggedin = isset($_SESSION['loggedin']) ? $_SESSION['loggedin'] : false;
        
        if ( (!isset($_POST['submitBtn'])) && (!($loggedin))){
            $_SESSION['loggedin'] = false;
			   $this->showform();
			   exit();
               
               
        } else if (isset($_POST['submitBtn'])) {
          
          /*  if(isset($_POST['passwd'])){
                $pass=$_POST['passwd']   
            }
            else
            {
             $pass='';   
            }
            */
        
			   $pass = isset($_POST['passwd']) ? $_POST['passwd'] : '';
      
			   if ($pass != $this->password) {
				   $_SESSION['loggedin'] = false;
				   $this->showform();
				   exit();     
			   } else {
				   $_SESSION['loggedin'] = true;
			   }
        }

    }
}
خيرا نسوى بدء الجلسة لو تم تخزينها, ومن ثم متغير لاستخدام الكلاس وندخل لفانكشن التحقق login لتتحقق من الباسورد المدخل

رمز Code:
session_start();
$protector = new Protect();
$protector->login();




ثم بعد ذلك يمكنك عمل اى صفحة محمية, وكل ما عليك هو جلب صفحة الكلاس

مثال:
رمز Code:
<?php require_once("Protect.class.php"); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>تطبيق عملى لكلاس دخول صفحة محمية </title>
  
</head>

<body>
	Hello this is the first page. <a href="/portal/second.php">Go to the next protected page</a>
	<BR />
	<a href="/portal/<?php session_destroy() ?>" > return to the form again</a>
</body>



بهيك يكون انتهينا من الدرس متبعنين كافة الأسس التى شرحتها, والتى أعتقد لو طقناها فى كل شىء
راح يكون سهل لنا برمجة اى شىء طالما جعلنا أساسنا هو التفكير والتخطيط


بالتوفيق

تعليقات