• 0
fatmaali

مشكلة بجلسه تسجيل الدخول للوحة التحكم

سؤال

السلام عليكم اخواني

 

 

انا لدي لوحة تحكم فيها سيشن تسجيل الدخول لا يحفظ كلمه المرور ولا اليوزر نيم بمجرد خروجي من المتصفح وبرجع ادخل ما بيدخل مرة تانيه

 

عاوزة طريقة لحفظ السشن بمدة زمنيه يعني مثلا اسبوع سنه  شهرين 

 

 

ودا الكود الخاص بالجلسه فى صفحة الادمن نفسها

<?session_start();if( isset($_SESSION['admin']) ){?>هنا صفحة الادمن <?}else {// او ندرج صفحة تسجيل الدخول include('login.php');}?>

وهنا صفحة تسجيل الدخول للوحة التحكم

<?phpsession_start();$_SESSION["session_variable"] = "admin";include("../include/config.php");//$connection = mysql_connect($db_host, $db_username, $db_password);						$result=mysql_query("SELECT * FROM `admin` WHERE `admin_name` = '$admin_name' AND `pass` = '$pass' and active=1");						$row=mysql_fetch_array($result);						if($row){$_SESSION['admin']=$row[id_admin];						$_SESSION['admin_name']=$row[admin_name];						$_SESSION['id_admin']=$row[id_admin];												// اذا كانت المعلومات صحيحة نسجل له دخول                      echo "تم تسجيل الدخول";// واذا كانت المعلومات خطا} else { echo "المعلومات خاطئة";}?>
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

10 إجابة على هذا السؤال .

  • 0

استعمل الcookies

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يمكن الاستعان بالكوكيز ,

او ادا كنت تملك القدرة على تعديل php.ini

يمكن تغيير القيم كالتالي مثلا :

session.gc_maxlifetime = 1440

او يمكن من خلال Runtime في PHP اضافة الكود التالي

ini_set(‘session.gc_maxlifetime’,3600);
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ولأننا نتكلم عن السيشن يرجى الحذر من

Session Hijacking

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

واين اضعها بالكود المرفق بالاعلى اخي حمدان وهل تحتاج الى تعديل فى اى دوال فى السرفر

 

وما الخطر من استخدامها ؟؟ وان كان هناك خطر فما هي الدوال التى ليست بها مشاكل

 

 

ini_set(‘session.gc_maxlifetime’,3600);

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لكي تعمل دالة

ini_set(‘session.gc_maxlifetime’,3600);

يجب وضعها قبل Session_start()

 

ولا يمكن ان تعمل اذا كان السيرفر لا يدعم Override اي الكتابة فوق اعدادات PHP.ini

 

لا يوجد خطر فعلا لاستخدام هذه الدالة الا ان ملف حفظ الجلسات سيكون كبير نسبياً و ستكون جدولة حذف الجلسات المنتهية اطول زمنياً

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طيب اخي ما الحال ان سويت كذا ؟؟؟؟ في الجلسه

 

جربتها لكنها لم تعمل

 

مع العلم ان نسخه ال php 5 فما فوق

 

فهل هناك تعديل يمكن عمله له لتتناسب مع الوضع الحالي في  php  5

 

 

اهم ما في الامر اني اري الجلسه او ملف الكوكيز يحفظ الجلسه حتى لو تم اغلاق الجهاز وفتحه كما الحال هنا فى المنتدى مثلا ....
 

<? session_start();ini_set( "session.bug_compat_42", 0 );ini_set( "session.bug_compat_warn", 0 );if ( $_REQUEST['cookie_me'] ){    setcookie( "member8", $_SESSION['member8'], time( ) + 604800 );}?>
تم تعديل بواسطه fatmaali
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

استخدمي cookies لا مشكلة ان شاء الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

استخدمته اخي حمدان لكن هناك مشكل صغير

 

انه اذا اغلقت الجهاز وعاودت الدخول ما يحفظ العضوية فهل هنا حل لها

 

 

 

 

وهذا هوا الكود المستخدم في الصفحات

<? session_start();ini_set( "session.bug_compat_42", 0 );ini_set( "session.bug_compat_warn", 0 );if ( $_REQUEST['cookie_me'] ){    setcookie( "member8", $_SESSION['member8'], time( ) + 604800 );}?>

وهذا الكود حق صفحة تسجيل الدخول

<?phpsession_start();$_SESSION["session_variable"] = "member8";$hashed = sha1($salt . $_POST['pw']);		//$connection = mysql_connect($db_host, $db_username, $db_password);						$result=mysql_query("SELECT * FROM `member` WHERE `un` = '$un' AND `pw` = '$hashed' AND active=1");						$row=mysql_fetch_array($result);						if($row){$_SESSION['member8']=$row[id_user];						$_SESSION['un2']=$row[un];						$_SESSION['emaill']=$row[emaill];						$_SESSION['mobile1']=$row[mobile1];						$_SESSION['iduser']=$row[id_user];                      echo "                     تم بنجاح";// واذا كانت المعلومات خطا} else {ECHO "المعلومات خاطئة";}?>
تم تعديل بواسطه fatmaali
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سأشرح لكل المنطق الذي ستسيرين عليه , سيتطلب منك ذلك اعادة هيكلة الكود بشكل صحيح.

الامر سهل جدا

1- عند دخول المستخدم لاول مرة يقوم بتسجيل الدخول

2- نحفظ معلومات التسجيل في سيشن , ونحفظها ايضاً في كوكيز مدة حياته مثلا شهر

3- عند تسجيل الخروج نقوم بانهاء السيشن و انهاء الكوكيز بتغيير عمرة الى اي شيء في الماضي او السالب

4- في حالة اغلاق المتصفح سيبقى هناك الكوكيز

5- عند فتح بوابة التسجيل او الدخول للموقع نقوم بفحص ادا كان هناك سيشن ( هذا يعني ان الجلسة مستمرة ولم يتم اغلاق المتصفح او انهاء السيشن ) نقوم بمعرفة الزائر بدلالة السيشن

6- ادا لم يكن هناك سيشن نقوم بفحص الكوكيز , لو توفر الكوكيز نقوم باخذ المعلومات منه ( يرجى الحذر للمعايير الامنية هنا ) و معرفة الزائر بدلالة الكوكيز

ملاحظة / الزائر يستطيع بسهولة التعديل على الكوكيز , لذلك نقوم بتشفير البيانات بتشفير معقد مع Salut  عشوائي يتبع منظومة معينة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ساقوم بالتجربة ووضع الكود لك للتاكد من خلوة من المشاكل والاخطاء

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .