2010-06-01 18 views
7

मैं php और mysql के साथ डेटाबेस तालिका में सत्र का उपयोग कैसे कर सकता हूं?PHP में डेटाबेस में सेट सत्र

+1

क्या आप हमें थोड़ा और जानकारी दे सकते हैं? सत्र के साथ आप वास्तव में क्या करने जा रहे हैं? – 2ndkauboy

+2

आप पहले Google पर खोजना चाहेंगे। यह पहला लिंक है जो आपको प्रदान करेगा, उदाहरण के लिए: http://www.devshed.com/c/a/PHP/Storing-PHP- सत्र-in-a-Database/ – nico

+0

आमतौर पर संग्रहीत सत्र सर्वर में अस्थायी फ़ाइलों में। मैं डेटाबेस तालिका में सत्र स्टोर करना चाहता हूं। – shin

उत्तर

18

तुम इतनी तरह एक वस्तु बनाने के लिए की आवश्यकता होगी:

class SessionHandler 
{ 
    private static $lifetime = 0; 

    private function __construct() //object constructor 
    { 
     session_set_save_handler(
      array($this,'open'), 
      array($this,'close'), 
      array($this,'read'), 
      array($this,'write'), 
      array($this,'destroy'), 
      array($this,'gc') 
     ); 
    } 

    public function start($session_name = null) 
    { 
     session_start($session_name); //Start it here 
    } 

    public static function open() 
    { 
     //Connect to mysql, if already connected, check the connection state here. 

     return true; 
    } 

    public static function read($id) 
    { 
     //Get data from DB with id = $id; 
    } 

    public static function write($id, $data) 
    { 
     //insert data to DB, take note of serialize 
    } 

    public static function destroy($id) 
    { 
     //MySql delete sessions where ID = $id 
    } 

    public static function gc() 
    { 
     return true; 
    } 
    public static function close() 
    { 
     return true; 
    } 
    public function __destruct() 
    { 
     session_write_close(); 
    } 
} 
session_start से पहले

तो इस वर्ग के आरंभ!

include 'classes/sessionHandlerDB.php'; 

$session = new SessionHandler(); 

$session->start('userbase'); 

$_SESSION['name'] = 'Robert Pitt'; //This is sent to SessionHandler::write('my_id','Robert Pitt') 
echo $_SESSION['name']; //This calls SessionHandler::read($id)//$id is Unique Identifier for that 

http://php.net/manual/en/function.session-set-save-handler.php

http://php.net/manual/en/function.serialize.php

+0

क्या आप मुझे बता सकते हैं कि सत्र निर्धारित करने के लिए मैं इस कोड का उपयोग कैसे कर सकता हूं? क्या सामान्य सत्र सेटिंग में कोई अंतर है? – shin

+0

मूल रूप से जब आप $ _SESSION का उपयोग करते हैं ... यह सत्र हैडलर से पूछताछ करेगा, जिसका अर्थ है कि सत्र हैंडलर मध्य व्यक्ति है, यह डेटा भंडार करता है और डेटा देता है, यदि आप अपना खुद का हैंडलर लागू करते हैं तो आप उसे वैसे भी स्टोर कर सकते हैं, डीबी, फ़ाइल इत्यादि। इसे निष्पादित करना PHP को बताएगा कि जब आप इस वर्ग को डेटा के लिए क्वेरी करने के लिए सत्र का उपयोग करते हैं। जैसा कि आप इस फ़ाइल को शामिल करते हैं और इसका एक उदाहरण बनाते हैं, जो कुछ भी आप करते हैं, वह स्वीकार नहीं करेगा भंडारण विधि डीबी होगी। मैंने अपनी पोस्ट अपडेट की है, कृपया – RobertPitt

+0

की समीक्षा करें, यह कोड पूरी तरह से उदाहरण है, मैं इसे स्टोरेज ऑब्जेक्ट के लिए बढ़ा दूंगा ताकि आप डीबी को कॉल कम कर सकें, मेमकैच को भी देखें! – RobertPitt

1

session_handler निर्देश के तहत आप php.ini में इसे नियंत्रित करते हैं। http://www.tonymarston.net/php-mysql/session-handler.html को आसानी से चलने के लिए देखें (पहले इस्तेमाल किया गया था)।

1

कस्टम खुले, बंद, पढ़ने, लिखने, नष्ट करने और कचरा संग्रहण कार्यों को लिखने के लिए आपको session_set_save_handler का उपयोग करने की आवश्यकता होगी।

0

देखें मेरी GitHub कोड स्निपेट PHP5.4-DB-Session-Handler-Class पीएचपी 5.4 में एक डेटाबेस संचालित सत्र प्रबंधन वर्ग के लिए।

संबंधित मुद्दे