الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه fatmaali في 22 نوفمبر 2013 · 10 رد · 900 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

 

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

 

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

 

 

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

<?
session_start();
if( isset($_SESSION['admin']) ){
?>

هنا صفحة الادمن 

<?
}
else {
// او ندرج صفحة تسجيل الدخول 
include('login.php');
}
?>

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

<?php
session_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 "المعلومات خاطئة";

}

?>
#2

استعمل الcookies

#3

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

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

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

session.gc_maxlifetime = 1440

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

ini_set(‘session.gc_maxlifetime’,3600);

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#4

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

Session Hijacking

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#5

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

 

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

 

 

ini_set(‘session.gc_maxlifetime’,3600);

#6

لكي تعمل دالة

ini_set(‘session.gc_maxlifetime’,3600);

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

 

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

 

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

 

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

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#7

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

 

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

 

مع العلم ان نسخه ال 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 في 25 نوفمبر 2013 في 18:07

#8

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

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#9

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

 

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

 

 

 

 

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

<? 
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 );
}
?>

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

<?php
session_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 في 26 نوفمبر 2013 في 17:36

#10

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

الامر سهل جدا

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

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

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

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

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

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

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

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#11

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

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…