التغطية المصورة ليوم سوالف: الجزء الأول، الجزء الأخير
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو سوبر نشيط
تاريخ التسجيل: Aug 2007-
#1 (permalink)  
[درس] بدايتك بالجلسات session .


بسم الله الرحمن الرحيم


<FONT face=Tahoma>السلام عليـكم

درسنا اليوم عن مقدمة بسيطه عن نظام الجلسات session ...
قبل كل شئ نستعمل الجلسات في عمل لوحة تحكم سواءً للمدير او العضو , او منطقة معينة خاصه بالإدارة ... أو إدارة طلب ... إو إدراج فاتورة ... أو سكربت للأسئله ..... أو أياً كان ..


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

هناك شئ اساسي بنظام الجلسات ... ألا وهو الكود التالي :
كود PHP:
<? 
session_start
(); 
?>


يجب وضعه في اول الملف بدون ولاسطر فارغ ولا قبله اي شئ ابداً ابداً ولاحتى اكواد html .


نبدأ في برمجة لوحة التحكم البسيطة ... طبعاً سبق وشرحنا كيفية تركيب سيرفر شخصي , الآن انشئ مجلداً جديداً وقم بتسمية بالإسم admin .

الآن سنضع ملف لمعلومات المدير "اسم المستخدم , كلمة المرور"
وهذا هو الملف :
اسم الملف هو info.php .


كود PHP:
<? 
// اسم المستخدم للمدير 
$admin_username "admin"
// كلمة المرور للمدير 
$admin_password "11220"
?>
من هذا الملف سنحضر معلومات الإدارة ...
الآن سنقوم بكتابة ملف تسجيل الدخول login.php :

كود PHP:
<? 
session_start
(); 
?> 
<HTML dir="rtl"> 
<HEAD> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256"> 
<meta http-equiv="Content-Language" content="ar-sa"> 
<TITLE> لوحة التحكم / تسجيل الدخول  </title> 
</head> 
<body> 
<font face="tahoma" style="font-size:8pt"> 
<div align="center"> 
<? 
include("info.php"); 
if(
$_GET['log'] == 1){ 
?> 
<form method="POST" action="login.php?log=2"> 
    <p align="center"><span lang="ar-sa">اسم المستخدم : </span> 
    <input type="text" name="username" size="20"><br> 
    <span lang="ar-sa">كلمة المرور : </span> 
    <input type="text" name="password" size="20"><br> 
    <br> 
    <input type="submit" value="إرسال" name="B1"></p> 
</form> 
<p align="center">&nbsp;</p> 
<? 

if(
$_GET['log'] == 2){ 
// إحضار المعلومات من الحقول السابقة 
$user $_POST['username']; 
$pass $_POST['password']; 
// التأكد من ان حقل اسم المستخدم ليس فارغاً 
if($user == ""){ 
print 
" لم تقم بادخال اسم المستخدم "

else 

// التأكد من ان حقل كلمة المرور ليس فارغاً أيضاً 
if($pass==""){ 
print 
"لم تقم بإدخال كلمة المرور"

else 

// ثم نتأكد من المعلومات 
if($user == $admin_username && $pass == $admin_password){ 
$_SESSION['admin_session'] = "$admin_username"
PRINT 
" لقد تم تسجيل دخولك بنجاح يا <br /> $user <br /> اذا لم يتم نقلك تلقائياً <a href='index_admin.php'> اضغط هنا </a>"
echo 
"<a href=index_admin.php>   </a><BR>   ..<meta http-equiv = refresh content=1;url=index_admin.php> </font>"


else 

print
" خطأ , اسم المستخدم او كلمة المرور خطأ  <a href='index.php'> اضغط هنا للرجوع </a> "




?>
طبعاً بالسطر الأول وضعنا الكود الذي سبق وقلنا انه معناه بداية الجلسه ويجب وضعه قبل كل شئ ...
ثم وضعنا اكواد HTML عادية لن اقوم بشرحها .
ثم بدأنا وسم البي اتش بي مره اخرى , واستعدينا الملف info.php بالداله include() سبق وشرحناها.
ثم وضعنا الخطوة الأولى بإستخدام $_GET سبق وشرحناها ,
نأتي للخطوه الثانيه $_GET['log'] == 2
اولا قمنا بإحضار المُدخلات بالحقول بواسطة $_POST "سبق وشرحناها"
ثم تأكدنا من ان الحقول غير فارغه بواسطة if "سبق وشرحناها"
ثم هنا


كود PHP:
if($user == $admin_username && $pass == $admin_password){ 
تأكدنا من أن $user "وهو ماقمنا بإحضاره من حقل اسم المستخدم" مساوي لـ المتغير المسؤول عن اسم المستخدم للمدير في ملف info.php .... ثم كررنا العملية بـ "&&"...
ثم في حال تحقق الشرط يحدث الآتي :
- تسجيل الجلسة.


كود PHP:
$_SESSION['admin_session'] = "$admin_username"
هنا وضعنا $_SESSION['admin_session']
الجلسة admin_session قيمتها تساوي اسم المستخدم ...

وطباعة انه تم تسجيل الدخول للوحة التحكم بنجاح والتحويل للصفحة الخاصة بلوحة التحكم
ثم استعملنا else لطباعة النص "اسم المستخدم او كلمة المرور خطأ ... اضغط هنا للرجوع", في حالة كانت المعلومات غير صحيحة.
ثم قمنا بإغلاق جميع الأقواس.


الآن نأتي لللصفحة الرئيسية index.php , أي انه عندما يدخل الشخص إلى الصفحة
http://localhost/admin على سبيل المثال تظهر له هذه الصفحة ... كود الصفحة هو :


كود PHP:
<? 
session_start
(); 
?> 
<HTML dir="rtl"> 
<HEAD> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256"> 
<meta http-equiv="Content-Language" content="ar-sa"> 
<? 
?>
 
<TITLE>لوحـة التحكـم | Control Panel -</title> 
</head> 
<body> 
<? 
if (isset($_SESSION['admin_session']) ) { 
echo 
"<a href=index_admin.php>سيتم نقلك للصفحة الرئيسية للوحة التحكم</a> 
<BR> ,.بعد ثواني...<meta http-equiv = refresh content=1;url=index_admin.php> </font>"


else 

include (
'login.php'); 

?>


شرح بسيط للكود :

كود PHP:
 if (isset($_SESSION['admin_session']) ) { 


إذا كان لـ $_SESSION['admin_session'] قيمة , فـ قم بالآتي ...

طباعة النص "سيتم نقلك للصفحة الرئيسية للوحة التحكم تلقائياً " ... ومن ثم التحويل التلقائي ...
أما اذا كان لايوجد للمتغير أي قيمة فقم بتضمين الملف login.php لكي يتم تسجيل الدخول.




صفحة index_admin ولاتحتاج لشرح ... لانها شبيهه بـ index.php كثيراً :


<STRONG>
كود PHP:
<? 
session_start
(); 
?> 
<HTML dir="rtl"> 
<HEAD> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256"> 
<meta http-equiv="Content-Language" content="ar-sa"> 
<? 
?>
 
<TITLE>لوحـة التحكـم | Control Panel -</title> 
</head> 
<body> 
<? 
if (isset($_SESSION['admin_session']) ) { 
?> 
<table border="1" width="100%" id="table1" cellspacing="1" bgcolor="#ECE9D8" style="border-collapse: collapse" bordercolor="#C0C0C0"> 
    <tr> 
        <td> 
        <p align="center"><b><font face="Tahoma" size="2"> 
        <a href="index_admin.php"><span style="text-decoration: none">الرئيسية</span></a>  
        | <a href="#top"><span style="text-decoration: none">التحكم بالملفات</span></a>  
        | <a href="#top"><span style="text-decoration: none">التحكم بالأعضاء</span></a>  
        |<a href="#top"><span style="text-decoration: none"> التحكم بالسكربت</span></a><span lang="en-us">  
        | </span><a href="logout.php"><span style="text-decoration: none">تسجيل  
        الخروج</span></a></font></b></td> 
    </tr> 
</table> 
<p><br> 
&nbsp;</p> 
<table border="1" width="100%" id="table2" cellspacing="1" style="border-collapse: collapse" bordercolor="#C0C0C0"> 
    <tr> 
        <td> 
        <p align="center"><b><font face="Tahoma" size="2">السلام عليكم</font></b></td> 
    </tr> 
    <tr> 
        <td> 
        <p align="center"><font face="Tahoma" style="font-size: 9pt">هذه منطقة  
        خاصة بالإدارة ... شكراً لك عزيزي المدير على تسجيل الدخول , هذه لوحة تحكم  
        مبسطة.</font></td> 
    </tr> 
</table> 

<? 

else 

include (
'login.php'); 

?>

الآن سنقوم بعمل logout.php تسجيل الخروج , هذه هي الصفحة :


<STRONG>
كود PHP:
<? 
session_start
(); 
?> 
<HTML dir="rtl"> 
<HEAD> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256"> 
<meta http-equiv="Content-Language" content="ar-sa"> 
<TITLE>تسجيل الخروج . . . </title> 
</head> 
<body text="#800000"> 
<font face="Tahoma" style="font-size: 8pt"> 
<div align="center"> 
<? 
if (isset($_SESSION['admin_session']) ) { 
unset( 
$_SESSION['admin_session']); 
session_destroy(); 
echo 
" تم تسجيل الخروج ";echo "<br><a href='index.php'> اضغط هنا لتسجيل الدخول مره اخرى</a>"

else 

print 
" <font face='tahoma' style='font-size:8pt'>يجب عليك تسجيل الدخول لرؤية هذه الصفحه"
include (
'index.php'); 

?>
طبعاً سنشرح بضعة اسطر فقط ...:


كود PHP:
unset( $_SESSION['admin_session']); 
session_destroy(); 
السطر الأول ... unset() وتستخدم لحذف المتغير , حذفاً نهائياً ... وهنا حذفنا الجلسه ...
وفي السطر الثاني قمنا بتدمير الجلسة عبر الدالة session_destroy();



تطبيقي بالمرفقات مع زيادات قليلة وفصل البرمجة عن القوالب قليلاً ""

من هنا :

http://www.phpx3.com/drs/download/3530session.rar
أو هنا
http://www.phpx3.com/drs/download/566session.zip





إنتهى ... أتمنى ان الدرس كان واضحاً , ,إذا لم تفهم جيداً , اقرأ الملفات ربما تفيدك.



http://phpx3.com/drs/show555-1.html






__________________
موقع مبرّمج - zawyte
لا إله إلا الله ,,, محمد رسول الله ,,, أستغفر الله , احفظ الله يحفظك .
www.tdwenty.com Domain Is 4 Sale | fahad1ad2 @ hotmail.com
ff5006 غير متواجد حالياً   قديم 13-06-2008, 08:36 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: May 2007-
#2 (permalink)  

يعطيك العافيه يابطــل ..






__________________
أبداع الجرافيكس والفوتغرافيا ..
على موقع ومنتديات ألـــوان
www.al-waan.com


مركز تحميل ألوان
www.al-waan.com/up

منتديات الوان
www.al-waan.com/vb


عالم من الأبــداع ..
الخاصvip غير متواجد حالياً   قديم 13-06-2008, 08:50 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Aug 2007-
#3 (permalink)  

الله يعافيك






__________________
موقع مبرّمج - zawyte
لا إله إلا الله ,,, محمد رسول الله ,,, أستغفر الله , احفظ الله يحفظك .
www.tdwenty.com Domain Is 4 Sale | fahad1ad2 @ hotmail.com
ff5006 غير متواجد حالياً   قديم 13-06-2008, 09:02 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2006-
#4 (permalink)  

جميل .. ان شاء الله تكمل الدرس و تتعمق أكثر بال sessions سيفيد الكثير .
لي تعليق بسيط و سريع . بالنسبه عند تدمير الجلسه يفضل افراغ متغير ال $_SESSION بهذه الطريقه :
$_SESSION=array();
بدلاً من استخدام unset
لأنها كذا أسرع وأفضل في افراغ ال $_SESSION خاصة أن كانت تحتوي معلومات مخزنة كثيره






__________________
أحمد عبد الفتاح
www.servmix.com
المبيعات : info@servmix.com
لمراسلتي : engahmed@servmix.com

• ليس اليتيم الذى قد مات والده ... بل اليتيم يـتـيـم العلـم و الأدب •

Eng/ Ahmed غير متواجد حالياً   قديم 13-06-2008, 09:53 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Aug 2007-
#5 (permalink)  

ياهلا اخوي أحمد ...
والله بصراحة unset تفي بالغرض ...
لكن مو مشكله راح اجرب اللي انت قتله "إفراغ المتغير $_SESSION ".

وشكراً لك على الرد الجميل.






__________________
موقع مبرّمج - zawyte
لا إله إلا الله ,,, محمد رسول الله ,,, أستغفر الله , احفظ الله يحفظك .
www.tdwenty.com Domain Is 4 Sale | fahad1ad2 @ hotmail.com
ff5006 غير متواجد حالياً   قديم 14-06-2008, 01:21 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Aug 2007-
#6 (permalink)  

مشكوور اخي العزيز
درس مميز جدا






__________________
مجموعة بريدية عدد أعضائها أكثر من 2000 عضو .. للبيع
jo1@Live.com
mostafa-962 غير متواجد حالياً   قديم 14-06-2008, 10:09 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Aug 2007-
#7 (permalink)  

العفو أخوي ...






__________________
موقع مبرّمج - zawyte
لا إله إلا الله ,,, محمد رسول الله ,,, أستغفر الله , احفظ الله يحفظك .
www.tdwenty.com Domain Is 4 Sale | fahad1ad2 @ hotmail.com
ff5006 غير متواجد حالياً   قديم 14-06-2008, 08:10 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Mar 2008-
#8 (permalink)  

بارك الله فيك






__________________
الجزائر التعلمي ' www.dzeduc '
القصر نت www.alqsr.com
ملتقى المدونين العرب www.alqsr.com/vb
الموقع الرسمي لدهوك فر www.duhok-fr.com
ّّ& صلو على النبي &
HAMOUD131 غير متواجد حالياً   قديم 14-06-2008, 08:18 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Aug 2007-
#9 (permalink)  

ياهلا اخوي
مشكور على ردك






__________________
موقع مبرّمج - zawyte
لا إله إلا الله ,,, محمد رسول الله ,,, أستغفر الله , احفظ الله يحفظك .
www.tdwenty.com Domain Is 4 Sale | fahad1ad2 @ hotmail.com
ff5006 غير متواجد حالياً   قديم 14-06-2008, 10:48 PM
رد مع اقتباس
رد


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
مناقشة بخصوص دالة session_regenerate_id و حماية ال session ArabsProject PHP 6 08-04-2008 05:03 PM
درس عن ال Session برمودا ASP و ASP.NET 3 11-10-2007 07:23 PM
معضم دوال ال Session في لغة ال php مرجع لكل مبرمج sakr4host PHP 11 26-04-2007 10:54 PM
مشكله بالجلسات...Warning Ziad PHP 11 24-10-2006 05:31 PM
هـاك أماكن تواجد المتصلين { Online User } الشـرح . kop إصلاح وصيانة المنتديات 10 01-04-2002 12:24 AM


الساعة الآن: 04:21 AM بتوقيت المملكة العربية السعودية