اتمنا حد يشرح لى كيف اتعامل مع ال session و كيف يتم التعامل معها فى قواعد البيانات بدل من تخزينها فى ملفات
ول كنت طماع اتمنا يكون فى شرح بى امثله اكواد حتى تكون الفائده اكتر
شكرا
اتمنا حد يشرح لى كيف اتعامل مع ال session و كيف يتم التعامل معها فى قواعد البيانات بدل من تخزينها فى ملفات
ول كنت طماع اتمنا يكون فى شرح بى امثله اكواد حتى تكون الفائده اكتر
شكرا
__________________
http://feckra.net/ads.php
http://mp3egy.com
http://feckra.org
http://q8cam.com
http://mesk-3.net
http://gsmegypt.com
http://gsmiraq.com
للاتصال بى
009659447208
wael@feckra.com
وائل فكرى بدر
up
سؤال سبقتني فيه :funny:
بأنتظار مساعده الاخوان
اسف على السبق ده واتمنا ان حد من الاخوه يساعدنا فى فهم النقطه دى
__________________
http://feckra.net/ads.php
http://mp3egy.com
http://feckra.org
http://q8cam.com
http://mesk-3.net
http://gsmegypt.com
http://gsmiraq.com
للاتصال بى
009659447208
wael@feckra.com
وائل فكرى بدر
http://www.php.net/session_set_save_handler
دالة بسيط و شرح في موقع الPHP يفي بالغرض
__________________
-{Only God Can Judge Me}-
القانون فوق الجميع و الجميع يموت بالجوع
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
استاذي العزيز feckra نعم يمكنك عمل ذلك وبكل سهولة فهناك دالة تسمى
كما ذكر أستاذي Dr-dre67 .كود PHP:
session_set_save_handler();
إن PHP تستخدم طريقة إفتراضية (Default) للتعامل مع sessions وهي كالتالي:
عندما يدخل المستخدم الموقع
يتم فتح ملف عادي (Flat File) ويتم كتابة المعلومات بإستخدام fopen اي بالطريقة التقليدية للتعامل مع الملفات ثم يغلقه حين تكتمل الصفحة وبعد ان تنتقل على صفحة اخرى يقوم بفتحه وقراءته مرة اخرى وهذا بالنسبة للطريقة الإفتراضية ل php
فهناك 6 دوال يتم التعامل معها كـ (callback) وهي :
للتعامل مع session وهذه الدوال تمرر إلى الدالةكود PHP:
open();
close();
read();
write();
destroy();
gc();
واين يتم تخزين وقراءة الجلسات وماذا يحدث عند فتحها واغلاقها وتدميرها فأنت تتحكم بها بهذه الدوال بعد كتابتها ثم تمريرها إلى الدالة المذكورة بالأعلى وليس شرط ان تكون هذه الدوال بهذا الأسم ويمكنك تسميتها كيفما تريد ولكن المهم الترتيب عند تمريرها للدالة المذكورة بالأعلى والأن سأعطيك مثال للطريقة الإفتراضية التي تستخدمها Php للتعامل مع session :كود PHP:
session_set_save_handler();
كود PHP:
function open($save_path, $session_name)
{
global $sess_save_path, $sess_session_name;
$sess_save_path = $save_path;
$sess_session_name = $session_name;
return(true);
}
function close()
{
return(true);
}
function read($id)
{
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file));
return($sess_data);
} else {
return(""); // Must return "" here.
}
}
function write($id, $sess_data)
{
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "w")) {
return(fwrite($fp, $sess_data));
} else {
return(false);
}
}
function destroy($id)
{
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file));
}
/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here. *
*********************************************/
function gc($maxlifetime)
{
return true;
}
session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
session_start();
// proceed to use sessions normally
ويمكنك عمل ماتريد في حال تعديلك للدوال فقط كل ماعليك هو اخبار PHP بالطريقة التي تريدها للتعامل مع SESSION من خلال الطريقة التي ذكرناها وبعده تمررها إلى session_set_save_handler ليعرف php كيف يتعامل مع الجلسات اما طريقة تحويل session للتعامل مع قواعد البيانات فالعملية بسيطة واتضحت الآن وانا لا أستطيع كتابة مثال لأنه طويل نوعاً ما ولكن الحمد لله بحثت عن مثال ووجدت مثال ممتاز وهو الذي استخدمه الأستاذ رفيع :
واليك تحويل طريقة التعامل مع session من طريقة php الإفتراضية وهي الملفات إلى طريقة تعامل session مع قواعد البيانات :
والأمر واضح بإذن الله تعالى الآن فلقد استخدم جدول المستخدمين وعملية insert حين حفظ المعلومات وعند الإغلاق والتدمير جملة deleteكود PHP:
/*
+===========================================+
| Rafiaphp V2.0 Copyright © 2003 |
| ------------------------------------- |
| |
| by Rafia AL-Otibi |
| |
| ------------------------------------- |
| web: [url]http://www.rafiaphp.com[/url] |
| email: [email]abobadar@msn.com[/email] |
+===========================================+
*/
class sessions
{
function start_sessions ()
{
global $maxlifetime;
function _open($session_path, $session_name)
{
}
function _close()
{
return 1;
}
function _select($SID)
{
$query = "SELECT value FROM rafia_sessions
WHERE SID = '$SID' AND
expiration > ". time();
$result = mysql_query($query);
}
function _write($SID,$value)
{
global $maxlifetime;
$expiration = time() + $maxlifetime;
$query = "INSERT INTO rafia_sessions
VALUES('$SID', '$expiration', '$value')";
$result = mysql_query($query);
if (!$result) {
$query = "UPDATE rafia_sessions SET
expiration = '$expiration',
value = '$value' WHERE
SID = '$SID' AND expiration >". time();
$result = mysql_query($query);
}
}
function _destroy($sessionID)
{
$query = "DELETE FROM rafia_sessions WHERE SID = '$sessionID'";
$result = mysql_query($query);
}
function _gc($maxlifetime)
{
global $maxlifetime;
$expiration = time() - $maxlifetime;
$query = "DELETE FROM rafia_sessions WHERE expiration < '$expiration'";
$result = mysql_query($query);
if($result)
return 1;
}
session_set_save_handler("_open","_close","_select","_write","_destroy","_gc");
session_start();
}
}
ولكن لاحظ ان الأستاذ رفيع استخدم اسم _select وذلك ليشير الى عملية القراءة من session فكما قلنا سابقاً ان تسمية الدالة لاتشكل مشكلة ولكن يجب تمريرها الى دالة session_set_save_handler بنفس التسمية التي قمت بتسميتها .
وارجوا ان اكون قد وفقت في ايصال ولو بعض الفائدة للجميع عسى الله ان يوفقنا لما يحب ويرضى وهذا مالدي الآن فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله عز وجل
أخوكم عبدالله عيد
__________________
قال صلى الله عليه وسلم (كلمتان خفيفتان على اللسان ثقيلتان في الميزان (سبحان الله وبحمده ** سبحان الله العظيم) اوكما قال صلى الله عليه وسلم . (فهل هذه الكلمتان ثقيلتان على لسانك كي لا تقولها مرة واحدة في اليوم على الأقل)
درس مميز من wala3 cards
http://www.swalif.net/softs/showthread.php?t=122695
ما بتندم
ما هي ميزة تخزينها في قاعدة بيانات ؟
هل هي طريقة جديدة بجانب الطريقتين: URL و الكوكيز ؟
حيث أن في كلتا الطريقتين بعض المشاكل, مثل ظهور معرف الجلسة في عنوان URL, وقد يتسبب ذلك بعض المشاكل الامنية
وفي الطريقة session cookies, قد لا يفعّل الزائر الكوكيز ومن ثم لا تعمل الجلسة بشكل صحيح
هل نقدر نقول أن التعامل مع الجلسة عن طريق قاعدة البيانات هي الطريقة المثالية والأكثر أماناً ؟
الووووووو