| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| عمل نظام تسجيل بنظام الجلسات السلام عليكم ورحمة الله وبركاته سنتناول فى هذا الدرس كيفية عمل صفحات مؤمنة (تتطلب تسجيل دخول) استخدام الجلسات (sessions) فى البداية الجلسات , هى وسيلة لارسال بيانات من صفحة لاخرى مثلا عندما تتنقل بين صفحات المنتدى المختلفة يمكن استخدام الجلسات لارسال اسم المستخدم عبر الصفحات ال PHP بدءا من الاصدار 4 (منذ فترة طويلة) بدأت تدعم الجلسات عبر موديول خاص يوفر بعض الوظائف التى تمكن من تنفيذ هذا الامر الان فى مثالنا هذا نرغب فى عمل صفحات لا يمكن الوصول لها الا بعد اجرا تسجيل دخول والتاكد من صحة المستخدم وكلمة المرور (لوحة تحكم مثلا) الصفحات التى سنتسخدمها index.php (الصفحة المرغوب تامينها) sess.php (ملف خاص للتاكد من تنفيذ تسجيل الدخول) login.php (الملف الذى يتم من خلاله تسجيل الدخول) config.php (ملف التظبيطات والذى يحوى اسم المستخدم وكلمة المرور) err.html (الصفحة التى تظهر للزائر قبل تسجيل الدخول والتى توجهه الى صفحة التسجيل) done.html (صفحة الترحيب بعد اتمام التسجيل والتى توجهه الى لوحة التحكم) اولا الملف login.php هو الملف المسئول عن اتمام عملية التسجيل منهجية عمله هى اتاحة الفرصة للزائر بادخال البيانات ومقارنة هذه البيانات بالموجود بملف config.php, وحال ما تطابقت البيانات تقوم بتسجيل متغير session يتم استخدامه فيما بعد.., اما إذا اعطى بيانات خاطئة تظهر له صفحة إدخال البيانات مرة اخرى. الكود كود: <?php
session_start();
1-if($_SESSION['admin']) exit;
2-if(isset($_POST['user_pw'])){
3- require('config.php');
4- if($_POST['user_pw'] == $password && $_POST['user_un'] == $username){
5- $_SESSION['admin'] = true;
6- require('done.htm');
7- exit;
}
}
?>
<html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>تسجيل دخول</title>
<link href="css.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="announce">
<div>من فضلك قم بتسجيل الدخول اولا</div>
</div>
<form action="login.php" method="post">
<fieldset class="fieldset">
<legend> تسجيل دخول </legend>
<table width="460" align="center">
<tr>
<td>
اسم المستخدم
</td>
<td><input type="text" name="user_un" dir="ltr"></td>
</tr>
<tr>
<td>
كلمة المرور
</td>
<td><input type="password" name="user_pw" dir="ltr"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="ارســـــــال"></td>
</tr>
</table>
</fieldset>
</form>
</body>
</html>
<?php
exit;
?> فإذا كان هذا المتغير موجود بالفعل دل ذلك على ان هذا الزائر قد قام بتسجيل دخول ناجح من قبل ومن ثم يتم الخروج من ملف login فى السطر الثانى نختبر وجود المتغير user_un والذى يتم ارساله من خلال النموذج بالطريقة POST لذلك وجوده يعنى لنا ان البيانات قد تم ارسالها من النموذج وإن لم يكن فالطبع سنطبع له نموذج html ليقوم بتعبئة البيانات ثم يرسلها,, ولكن الان لنفترض ان البيانات قد ارسلت, لذلك سننتقل الى السطر 3فى هذا السطر يتم استدعاء ملف الكونفيج والذى يحمل بيانات الدخول كما ذكرنا. فى السطر 4: يتم مقارنة البيانات التى قام الزائر بادخالها بالبيانات الموجودة بملف الكونفيج, إذا تحقق هذا الشرط ننتقل الى السطر 5, فى السطر 5: يتم تسجيل متغير عبر الجلسات وهو متغير admin وهذا المتغير الذى سنستخدمه فيما بعد للتحقق من تسجيل دخول الزائر ام لا. اما فى السطر 6: فيتم استدعاء ملف done وهو ملف تم تجهيزه كرسالة ترحيبية ينقل الزائر بعدها الى الصفحة الرئيسية بعد اتمام الدخول بنجاح السطر 7: يقوم بانهاء عمل السكريبت وذلك حتى لايظهر نموذج ال html مرة اخرى --------- الجز الثانى من صفحة اللوجن هو نموذج ال html اعتقد ما يحتاج لتوضيح فقط ان الصفحة المستهدفة من النموذج action ترسل الى نفس صفحة اللوجن واوضحنا كيف يتم ذلك من خلال التحقق من وجود متغير فى المصفوفة POST ام لا ,,,,,,,,,,,, وهكذا انهينا الجزء الاهم فى هذا الدرس,, ننتقل الى الصفحة sess.php هذه نقوم باستدعائها فى كافة الصفحات التى نرغب فى تامينها,, لانها تقوم بالتحقق من وجود متغير الجلسات admin والذى وجوده يدل على اتمام التسجيل بنجاح وان لم يوجد يقوم هذا الملف باظهار رسالة خطا توجب التسجيل اولا ثم تقوم بانهاء عمل الصفحة الكود كود PHP: فى السطر 2- نتحقق من وجود متغير الجلسات admin والذى بعدم وجوده ندرك ان هذا الزائر لم يقم بتسجيل الدخول "لاحظ علامة النفى ! " وعندها ننتقل للسطر 3 فى السطر 3 نقوم باستدعاء ملف err وهو ملف يظهر رسالة خطا ويقوم بتوجيه المتصفح الى صفحة الدخول لوجن, ثم نقوم انهاء عمل باقى الصفحة فى السطر 4 (لاحظ انه فى حالة وجود متغير الجلسات عندها لن يتحقق قاعدة الجملة الشرطية مما يعنى ان باقى الصفحة سيتم ظهوره بشكل طبيعى وهذا هو ما نرغبه لمن قام بتسجيل الدخول) ---------------------------------------- الملف config.php هو الملف الذى يحتوى على كلمة المرور واسم المستخدم كود PHP: ---------------------------------------- الملف done.html هو الملف الذى يظهر رسالة ترحيب بعد اتمام تسجيل الدخول ثم يقوم بتوجيه المتصفح الى الصفحة الرئيسية كود بلغة HTML: <html dir="rtl"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1256"> <meta http-equiv="refresh" content="3;URL=index.php"> <title>تسجيل دخول ناجح</title> </head> <body> <div style="text-align:center; background-color: #EBEBEB; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF; border-right: 1px solid #AAAAAA; border-bottom: 1px solid #AAAAAA; font-weight : bold;"> <h4>تم تسجيل الدخول بنجاح </h4> <p>سيتم نقلك تلقائيا او قم <a href="index.php">بالضغط هنا</a></p> <div> </body> </html> ------------------------------------ الملف err.html والذى يظهر للزائر رسالة خطا عند محاولته الوصول لصفحة مؤمنة دون تسجيل الدخول ثم يقوم بتوجيه المتصفح الى صفحة الدخول كود بلغة HTML: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1256"> <meta http-equiv="refresh" content="3;URL=login.php"> <title>انت غير مسجل</title> </head> <body> <div style="text-align:center; background-color: #EBEBEB; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF; border-right: 1px solid #AAAAAA; border-bottom: 1px solid #AAAAAA; font-weight : bold;"> <h4>يتوجب عليك تسجيل الدخول اولا</h4> <p> سيتم نقلك الان تلقائيا او قم <a href="login.php">بالضغط هنا</a></p> <div> </body> </html> واخيرا الصفحة index.php وهى الصفحة التى نرغب فى تامينها فقط كلما يهم هو استدعاء الملف sess فى بداية هذا الملف كود: <?php
require('sess.php');
?>
<html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>لوحة التحكم</title>
</head>
<body>
<center><h3>مرحبا بك فى لوحة التحكم الخاصة</h3></center>
</body>
</html> وفى النهاية أسأل الله ان اكون وفقت فى شرح هذا المثال وان يقدم لكم الفائدة. ملحوظة :- هذا مثال الغرض منه هو التعلم ولا يمكن ان اقدم لكم اى مسئولية عن مستوى الامان الذى يوفره هذا المثال .... ساقوم بارفاق ملف مضغوط به جميع الملفات المستخدمة بهذا المثال | |||||
|
| |||||
|
جميل ورائع . واستمر في هذا الابداع .. والى الامام .. وان شاء الله في اقرب فرصة سأقوم بتطبيق كل ما ذكرت .. والف الف شكر لك .. وخالص المودة ،،
__________________ ██████████ ██████████ ██████████ مهارات سوفت مهارات سوفت للبرامج وتطوير المواقع والمنتديات والتبادل التجاري. للتواصل .. 00967733873335 باب الحارة .. للبيع ..!! | |||||
|
| |||||
|
أحسنت وبارك الله فيك وجعل تعبك في الشرح في ميزان عملك أخ ولع لديك الكثير ونتمنى أن تجد لمثل هذه الدروس وقتا .. وليتك تشرح لنا طرق التعامل مع PHP عن طريق الفلاش فأنت مبدع في هذا تحياتي لك
__________________ ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه | |||||
|
| |||||
|
سلام عليكم يا اخى ما شاء الله الشرح وافى وسهل وبسيط لكن ابى اسأللك سوال انا ابى انة يستدعى اليوزر نيم والباسوردد من قاعدة البيانات يعنى اقدر انى اضيف يوزر نيم وباسورد يا ريت تكون فهمت قصدى منتظر ردك ![]() وشكرا مرة تانية
__________________ مجموعة تى ان تى العربية لخدمات الانترنت استضافة - ريسيلر - نطاقات - برمجة فريق التصميم لخدمات التصميم النطاقات العربية لخدمات تسجيل النطاقات تى ان تى لخدمات الاستضافة msn: sales@arabtnt.com | |||||
|
| |||||
|
درس جميل وبسيط جهد تشكر عليه يا اخي الكريم اقتباس:
استبدل شرط صحة اليوزر والباسوورد الموجود هنا كود: 4- if($_POST['user_pw'] == $password && $_POST['user_un'] == $username){
5- $_SESSION['admin'] = true; وأذا محتاج مساعدة نحن حاضرين | |||||
|
| |||||
|
شكرا لك .
__________________ htaccess بكل بساطة الشفرة الموحدة "يونِكود" (إن من مفاسد هذه الحضارة أنها تسمي الاحتيال ذكاءً، والانحلال حرية، و"الرذيلة فناً" والاستغلال معونة) - مصطفى السباعي | |||||
|
| |||||
|
اخوي مرعب نجد حاول تقرأ الدرس مرة ثانية وركز على هالنقطة : ان الجلسات شي مختلف تماما عن " التحقق من اليوزرنيم والباسوورد " انت من خلال هالشرح الجميل والمرتب راح تتمكن ان شاء الله من تسجيل الجلسات حتى تتمكن من نقل المعلومات بين الملفات مثلاً اذا كانت عندك عدة ملفات في مجلد admin على سبيل المثال وتريد تحميها بحيث ما يدخل عليها الا الاعضاء المخولين لازم تتأكد من امتلاك الزائر للجلسة اللي تخوله للدخول في كل ملف من الملفات المتواجدة في هذا المجلد يعني باختصار ضع هذا الامر في بداية كل ملف كود PHP: وهذا هو المطلوب منك فهمه في هذا الدرس بالاضافة طبعا الى عمليات تسجيل الجلسة نفسها واظهار فورم تسجيل الدخول ومسح الجلسات كذلك !! ( اعتقد ان الاخ ما تطرق لهالنقطة الضرورية ) اما إن كنت ترغب بالتحقق من اليوزرنيم والباسوورد من خلال قاعدة بيانات بها هذه المعلومات فهذا أمر آخر مختلف عن اساسيات الجلسات ولن يتداخلا إلا في منطقة واحدة هي اثناء تسجيل الجلسة فقط لا غير في الغالب يعني الشرح الموجود في هذا الموضوع حاليا يقوم بالتأكد من بيانات العضو ومطابقتها بالقيم الموجودة في ملف config بينما في حال استخدام جدول في قاعدة البيانات يحتوي على اسماء الاعضاء والباسوورد فانت لن تحتاج لملف ال config بل ستحتاج لقراءة جميع الخلايا الموجودة في قاعدة البيانات والتأكد من تواجد هذا العضو وكلمة المرور ، فإذا كان هذا الاسم موجود في قاعدة البيانات وكلمة المرور صحيحة تقوم بتسجيل الجلسة واذا لم يكون هذا العضو موجود ( أو كانت كلمة المرور خاطئة ) لا تقوم بتسجيل الجلسة والسلام عليكم !! طبعا مسألة القراءة من قاعدة البيانات هي مسألة منفصلة وما اعتقد ان مجرد "رد" راح يكفي لايضاح النقطة عموماً في موضوع ممكن يساعدك موجود حاليا في المنتدى العنوان : http://www.swalif.net/softs/showthread.php?t=39706 طبعا اذا فهمت كلمة من الكلام الممل اللي انا كتبته فما عليك الا انك تقوم بما قلته في السابق كود: if($_POST['user_pw'] == $password && $_POST['user_un'] == $username){
$_SESSION['admin'] = true; واذا كانت صحيحة راح يقوم بتسجيل الجلسة ( السطر الثاني ) كل المطلوب منك فعله هو : تعديل جملة الشرط " if " بحيث تستبدله بامر قراءة من قاعدة البيانات لقراءة جميع البيانات المتواجدة في جدول الاعضاء ومطابقتها بالقيم اللي ارسلها الزائر ، وفي حال تطابق البيانات تقوم بتنفيذ السطر الثاني واذا احتجت اي مساعدة بامكانك اضافتي على الماسنجر لاني كتبت هذا الرد على عجالة ومشغول جداً حالياً IT_student@msn.com | |||||
|
| |||||
|
مشكوووور اخوي الإماراتي والله تعبتك معاي لكن الشي اللي كنت ابحث عنه هو هذا الحل اقتباس:
اخوي الإماراتي أضفت بريدك الإلكتروني لأني حاب استشيرك في شي بسيط جدا <===طولها وهذا بريدي akah84@msn.com
__________________ مع تحياتي | |||||
|
| |||||
|
مراحب أخواني نفذت الطريقة مية المية وانا اعتمدت طريقة قاعدة البيانات لكن مع الأسف اكتشفت اني لما اعمل تسجيل دخول باي اسم مستخدم وكلمة مرور مسجلة داخل قاعدة البيانات يعملي دخول اوكيه لكن الجلسة تسجل باسم مستخدم هو 1 وكلمة مرور هي 1 وهذي المشكلة عقدتي والله
__________________ مع تحياتي | |||||
|
| |||||
|
شكراً أخ Akwad Net على الدرس الجيد لكن كان ينقص عملية تسجيل خروج ولعمل ذلك قم بتعديل الآتي تعديل ملف index.php بإضافة رابط تسجيل الخروج كود PHP: إضافة صفحة تسجيل الخروج logout.php كود PHP: و بالمرفقات جميع الملفات بعد إضافة تسجيل الخروج
__________________ http://tv.mehalla.net | |||||
|
![]() |
| |
| |
| أدوات الموضوع | |
| |