النتائج 1 إلى 8 من 8

الموضوع: ممكن شرح لل session مع وضعها فى قواعد البيانات

  1. #1
    عضو نشيط جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    353

    ممكن شرح لل 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
    وائل فكرى بدر


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Sep 2004
    المشاركات
    224


    up
    سؤال سبقتني فيه :funny:

    بأنتظار مساعده الاخوان






  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    353


    اسف على السبق ده واتمنا ان حد من الاخوه يساعدنا فى فهم النقطه دى





    __________________
    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
    وائل فكرى بدر

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2003
    المشاركات
    2,047


    http://www.php.net/session_set_save_handler

    دالة بسيط و شرح في موقع الPHP يفي بالغرض





    __________________
    -{Only God Can Judge Me}-
    القانون فوق الجميع و الجميع يموت بالجوع

  5. #5

    بسم الله الرحمن الرحيم



    بسم الله الرحمن الرحيم

    السلام عليكم ورحمة الله وبركاته

    استاذي العزيز feckra نعم يمكنك عمل ذلك وبكل سهولة فهناك دالة تسمى

    كود PHP:
    session_set_save_handler(); 
    كما ذكر أستاذي Dr-dre67 .

    إن PHP تستخدم طريقة إفتراضية (Default) للتعامل مع sessions وهي كالتالي:

    عندما يدخل المستخدم الموقع
    يتم فتح ملف عادي (Flat File) ويتم كتابة المعلومات بإستخدام fopen اي بالطريقة التقليدية للتعامل مع الملفات ثم يغلقه حين تكتمل الصفحة وبعد ان تنتقل على صفحة اخرى يقوم بفتحه وقراءته مرة اخرى وهذا بالنسبة للطريقة الإفتراضية ل php

    فهناك 6 دوال يتم التعامل معها كـ (callback) وهي :




    كود PHP:
    open();
    close();
    read();
    write();
    destroy();
    gc(); 
    للتعامل مع session وهذه الدوال تمرر إلى الدالة



    كود PHP:
    session_set_save_handler(); 
    واين يتم تخزين وقراءة الجلسات وماذا يحدث عند فتحها واغلاقها وتدميرها فأنت تتحكم بها بهذه الدوال بعد كتابتها ثم تمريرها إلى الدالة المذكورة بالأعلى وليس شرط ان تكون هذه الدوال بهذا الأسم ويمكنك تسميتها كيفما تريد ولكن المهم الترتيب عند تمريرها للدالة المذكورة بالأعلى والأن سأعطيك مثال للطريقة الإفتراضية التي تستخدمها Php للتعامل مع session :


    كود 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($fpfilesize($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 مع قواعد البيانات :




    كود 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();
         }
         

    والأمر واضح بإذن الله تعالى الآن فلقد استخدم جدول المستخدمين وعملية insert حين حفظ المعلومات وعند الإغلاق والتدمير جملة delete


    ولكن لاحظ ان الأستاذ رفيع استخدم اسم _select وذلك ليشير الى عملية القراءة من session فكما قلنا سابقاً ان تسمية الدالة لاتشكل مشكلة ولكن يجب تمريرها الى دالة session_set_save_handler بنفس التسمية التي قمت بتسميتها .

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

    أخوكم عبدالله عيد





    __________________
    قال صلى الله عليه وسلم (كلمتان خفيفتان على اللسان ثقيلتان في الميزان (سبحان الله وبحمده ** سبحان الله العظيم) اوكما قال صلى الله عليه وسلم . (فهل هذه الكلمتان ثقيلتان على لسانك كي لا تقولها مرة واحدة في اليوم على الأقل)

  6. #6
    عضو فعال
    تاريخ التسجيل
    Jun 2000
    المشاركات
    1,239


    درس مميز من wala3 cards
    http://www.swalif.net/softs/showthread.php?t=122695

    ما بتندم






  7. #7
    عضو نشيط جدا
    تاريخ التسجيل
    Mar 2003
    المشاركات
    305


    ما هي ميزة تخزينها في قاعدة بيانات ؟
    هل هي طريقة جديدة بجانب الطريقتين: URL و الكوكيز ؟
    حيث أن في كلتا الطريقتين بعض المشاكل, مثل ظهور معرف الجلسة في عنوان URL, وقد يتسبب ذلك بعض المشاكل الامنية
    وفي الطريقة session cookies, قد لا يفعّل الزائر الكوكيز ومن ثم لا تعمل الجلسة بشكل صحيح

    هل نقدر نقول أن التعامل مع الجلسة عن طريق قاعدة البيانات هي الطريقة المثالية والأكثر أماناً ؟






  8. #8
    عضو نشيط جدا
    تاريخ التسجيل
    Mar 2003
    المشاركات
    305


    الووووووو










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض