اذهب إلى المحتوى
  • 0

الحفاظ على الجلسة مستمرة في PHP

Our World عالمنا

السؤال

كيف احافظ على جلسة المستخدمين مستمرة حتى يقوموا بتسجيل الخروج بأنفسهم؟ جربت هذه الدالة ولم تأتي بنتيجة

session_set_cookie_params('3600*24*7');
session_start();

 

تم التعديل في بواسطة عبد الحميد حمشو
عنوان غير واضح
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك الاكتفاء باستخدام session_start في كل صفحة من صفحات التطبيق على نحو:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
print_r($_SESSION);
?>

</body>
</html>

سيحافظ هذا على جلسة المستخدم خلال تصفحه الموقع.

ثم استعمال session_unset و session_destroy لمحو الجلسة.

<?php
session_start();

session_unset();

session_destroy();
?>

هل تواجه مشكلة بذلك؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

أعلم هذا؛ ولكن الجلسة تنتهي تلقائيا باغلاق المتصفح حتى دون تسجيل خروج؛ أريدها مستمرة حتى لا يضطر المستخدم تسجيل دخول كل مرة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك القيام بإنشاء cookie تساعد على القيام بذلك، عندما يقوم المستخدم بالدخول لأول مرة تقوم بإنشاءها و وضع مدة زمينة طويلة جداً.

و كلما قام المستخدم بعمليات معينة تقوم بتجديد ال cookie، يمكن القيام بذلك بالشكل التالي:

setcookie(
  "CookieName",
  "CookieValue",
  time() + (10 * 365 * 24 * 60 * 60)
);

و في كل مرة تتحقق بأن ال cookie موجودة، في حال كانت موجودة تقوم بتسجيل الدخول بشكل تلقائي و تحديث المدة الزمنية مرة أخرى، أما في حال كانت غير موجودة تقوم بتوجيه المستخدم إلى صفحة تسجيل الدخول.

يمكن القيام بذلك بالشكل التالي:

if(isset($_COOKIE['CookieName'])){
    $cookie = $_COOKIE['CookieName'];
}
else{
    // No Cookie found - Redirect to Login
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 3 دقائق مضت قال Our World عالمنا:

أعلم هذا؛ ولكن الجلسة تنتهي تلقائيا باغلاق المتصفح حتى دون تسجيل خروج؛ أريدها مستمرة حتى لا يضطر المستخدم تسجيل دخول كل مرة

تقوم PHP بالحفاظ على الجلسة بشكل افتراضي حتى يقوم المستخدم بإغلاق المتصفح. يمكنك تجاوز القيمة التي تتحكم في هذا الافتراض عن طريق التعديل على ملف اعداد PHP او باستعمال الوظيفة ini_set:

ini_set('session.cookie_lifetime', 60 * 60 * 24 * 365);
session_start();

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ الآن قال Kais Hasan:

هل تقصد ما الذي يجب تنفيذه في قسم ال else ؟

لا ..أقصد ما أقوم بتنفيذه بعد الشرط بـ if ؛ بعد التأكد من وجود cookie

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 دقائق مضت قال Our World عالمنا:

لا ..أقصد ما أقوم بتنفيذه بعد الشرط بـ if ؛ بعد التأكد من وجود cookie

يجب أن تكون معلومات الجلسة موجودة لديك في هذه ال cookie و تقوم باستعمالها للقيام بتسجيل الدخول بشكل تلقائي للمستخدم.

هذا يعتمد على طريقة تسجيل الدخول التي تقوم بها، و لكن يفترض أنه يجب عليك تخزين token معينة تدل على جلسة المستخدم.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

أخزن في الجلسة رقم user_id من قاعدة البيانات؛ أما ال cookie أخزن فيه البريد الالكتروني وكلمة السر للمساعدة على تذكرهما وقت الدخول..

تقصد يحب تخزن بيانلت الجلسة (user_id)  فى ال cookie ؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 9 دقائق مضت قال Our World عالمنا:

أخزن في الجلسة رقم user_id من قاعدة البيانات؛ أما ال cookie أخزن فيه البريد الالكتروني وكلمة السر للمساعدة على تذكرهما وقت الدخول..

تقصد يحب تخزن بيانلت الجلسة (user_id)  فى ال cookie ؟

لا يجب تخزين كلمة السر في ال cookie أنها طريقة غير جيدة.

يجب عليك تخزين ال sessionId بشكل عام، و لكن هناك حالات خاصة أخرى، لا أستطيع التحديد بدون معرفة كامل تفاصيل الموقع، و لكن يبدو أنك لم تقم بالتعديل على شيء فيفترض أن تخزين ال sessionId كاف.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال Kais Hasan:

لا يجب تخزين كلمة السر في ال cookie أنها طريقة غير جيدة.

يجب عليك تخزين ال sessionId بشكل عام، و لكن هناك حالات خاصة أخرى، لا أستطيع التحديد بدون معرفة كامل تفاصيل الموقع، و لكن يبدو أنك لم تقم بالتعديل على شيء فيفترض أن تخزين ال sessionId كاف.

بعض المواقع تضع عبارة (تذكر كلمة السر) وتقوم بتخزين كلمة السر من خلالها.. هل هذه الطريقة غير امنه؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 ساعة قال Our World عالمنا:

بعض المواقع تضع عبارة (تذكر كلمة السر) وتقوم بتخزين كلمة السر من خلالها.. هل هذه الطريقة غير امنه؟

كلامك صحيح و بالطبع هذه الميزة مهمة حتى لا يضطر المستخدم إلى كتابة كلمة السر في كل مرة، و لكن لا يتم تخزين كلمة السر في ال cookie إنما يتم تخزين token مولد بشكل عشوائي هو عبارة عن مفتاح يمكن من خلاله الوصول إلى معلومات معينة في السيرفر و هذا طبعاً كله في السيرفر، أي أن المستخدم لن يتم تخزين كلمة السر لديه فقط على السيرفر و بطريقة مشفرة أيضاً لضمان الأمان.

يمكنك الإطلاع على هذا الرابط لمزيد من المعلومات عن هذه الأمور.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 9/13/2022 at 18:57 قال Kais Hasan:

كلامك صحيح و بالطبع هذه الميزة مهمة حتى لا يضطر المستخدم إلى كتابة كلمة السر في كل مرة، و لكن لا يتم تخزين كلمة السر في ال cookie إنما يتم تخزين token مولد بشكل عشوائي هو عبارة عن مفتاح يمكن من خلاله الوصول إلى معلومات معينة في السيرفر و هذا طبعاً كله في السيرفر، أي أن المستخدم لن يتم تخزين كلمة السر لديه فقط على السيرفر و بطريقة مشفرة أيضاً لضمان الأمان.

يمكنك الإطلاع على هذا الرابط لمزيد من المعلومات عن هذه الأمور.

هل هذه طريقة صحيحة للابقاء على تسجيل الدخول بشكل مستمر

//set cookies to continue sessions
                             $_SESSION['user']=$fetched['username'];
                             $_SESSION['userid']=$fetched['user_id'];

                             setcookie('SESS_user',$_SESSION['user'],time()+ 60*60*24*365*15,'/','localhost',true,true);
                             setcookie('SESS_userid',$_SESSION['userid'],time()+ 60*60*24*365*15,'/','localhost',true,true); 
                             

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...