2010-05-06 12 views
5

यहां परिदृश्य है:वेब पर लॉग इन किए गए उपयोगकर्ता की पहचान करने के कुछ तरीके क्या हैं?

5 वेबसाइटें (विभिन्न डोमेन नाम) हैं जिन्हें सत्र साझा करने की आवश्यकता है। मैं प्रत्येक साइट पर कुछ कोड का उपयोग कर रहा हूं जो "blank.gif" छवि देता है और साथ ही सत्र को सेट करता है (इसे वर्तमान सत्र में समन्वयित करता है)। प्रत्येक साइट्स प्रत्येक साइट से प्रत्येक सत्र से सत्र-आईएमजी कॉल करती है। साथ ही, सभी साइटों के पास एक ही डेटाबेस तक पहुंच है (जहां सत्र संग्रहीत किया जाता है)। यह एफएफ और क्रोम पर बहुत अच्छा काम करता है, लेकिन आईई (या सफारी पीसी) पर नहीं ...

मुझे सत्र सक्रिय रखने के लिए वैकल्पिक विधि के साथ आने की आवश्यकता है? ऐप एक छोटा कस्टम सीएमएस है, इसलिए वास्तव में केवल 2-3 लोग इसका उपयोग करेंगे।

मैं शायद आईपी द्वारा उपयोगकर्ता के लॉगिन पहचान कर सकते हैं और फिर सभी साइटों करवाते आईपी के लिए जाँच करने के लिए जारी ...

वहाँ अधिक बारीकी से इस तरह के कुछ एक कंप्यूटर UUID है कि मैं के लिए जाँच कर सकते हैं के रूप में है?

+5

यदि यह एक ही सत्र है, तुम क्यों बस के रूप में सत्र आईडी स्थानांतरित न करें जब उपयोगकर्ता एक पृष्ठ से दूसरे पृष्ठ पर जाता है तो एक जीईटी पैरामीटर? – Daff

+0

नहीं, "कंप्यूटर यूयूआईडी" जैसी कोई चीज़ नहीं है। –

+0

Daff, बीमार यह कोशिश करें, मुझे वास्तव में केवल यूआरएल में पैरामीटर होना चाहिए जब व्यवस्थापक उपयोगकर्ता लॉग इन हो ... – farinspace

उत्तर

1

यदि यह एक ही सत्र है, क्यों तुम सिर्फ एक प्राप्त पैरामीटर के रूप में सत्र आईडी स्थानांतरित न करें जब से दूसरी एक पृष्ठ उपयोगकर्ता चाल? - @Daff

@Daff, अगर आप अपने जवाब यहाँ जोड़ने के लिए, मैं को संशोधित करने और उत्तर के रूप में चुनेंगे

-2

आप अपने विभिन्न वेबसाइटों द्वारा साझा किए गए डेटाबेस में सत्र डेटा सहेजने के लिए सत्र हैंडलर को ओवरराइड कर सकते हैं। फिर, आपको प्रत्येक सर्वर पर एक ही सत्र आईडी के साथ एक सत्र कुकी सेट करना होगा। सभी आप चाहते है, तो एक एकल साइन तंत्र पर आप Kerberos प्रोटोकॉल है जो कि के लिए किया जाता है की जांच कर सकता

/** 
* @desc function used to open sessions 
* @param string session path 
* @param string session id 
* @return bool 
*/ 
function xx_session_open($path, $id){ 
    return true; 
} 

/** 
* @desc used when closing a session 
* @return bool 
*/ 
function xx_session_close(){ 
    return true; 
} 

/** 
* @desc saves session data 
* @param string session id 
* @param string session data 
* @uses xx_crypt 
* @return bool 
* @global object PDO instance 
*/ 

function xx_session_write($id, $data){ 
    global $db; 
    $crypted = xx_crypt($data); 
    // Saves data into db 
    $sql = 'REPLACE INTO sessions (`ID`, `data`, `lastUsed`, `IV`) VALUES(:id, :data, NOW(), :iv)'; 
    $sth = $db->prepare($sql); 
    $sth->execute(array(':id'=>$id, ':data'=>$crypted[0], ':iv'=>$crypted[1])); 
    return true; 
} 

/** 
* @desc gets session data 
* @param string session ID 
* @return string 
* @global object PDO instance 
* @uses xx_decrypt 
*/ 
function xx_session_read($id){ 
    global $db; 
    $sql = 'SELECT `data`, `IV` FROM sessions WHERE `ID`=:id'; 
    $sth = $db->prepare($sql); 
    $sth->execute(array(':id'=>$id)); 
    list($crypted, $iv) = $sth->fetch(); 
    $data = xx_decrypt($crypted, $iv); 
    return $data; 
} 

/** 
* @desc destroys a session 
* @param string session ID 
* @return bool 
* @global object PDO instance 
*/ 
function xx_session_destroy($id){ 
    global $db; 
    $sql = 'DELETE FROM sessions WHERE `ID`=:id'; 
    $sth = $db->prepare($sql); 
    $sth->execute(array(':id'=>$id)); 
    return true; 
} 

/** 
* @desc delete old sessions 
* @param int session lifetime (in seconds) 
* @return bool 
* @global object PDO instance 
*/ 
function xx_session_gc($lifetime){ 
    global $db; 
    $sql = 'DELETE FROM sessions WHERE `lastUsed` < :limit'; 
    $sth = $db->prepare($sql); 
    $sth->execute(array(':limit'=>date('Y-m-d H:i:s',time() - $lifetime))); 
    return true; 
} 

// Set session handler 
session_set_save_handler("xx_session_open", "xx_session_close", "xx_session_read", "xx_session_write", "xx_session_destroy", "xx_session_gc"); 

,: आप उस तरह session_set_save_handler का उपयोग करें और कुछ बनाने के लिए होगा।

+0

यह बहुत कुछ है जो मैं पहले से कर रहा हूं ... समस्या यह है कि मैं नए डोमेन में सत्र पास कर रहा हूं, मैं सभी अलग-अलग साइटों के लिए एक छिपी हुई छवि पास की कोशिश कर रहा था, लेकिन आईई 8 में सटीक होने के लिए काम नहीं करता – farinspace

+0

फिर, ऐसा करने का सबसे आसान तरीका यह है कि आप अपनी छवि के साथ पहले से ही कर रहे हैं: हर बार जब आप सत्र आईडी उत्पन्न करते हैं, तो आपको एक वेबपृष्ठ उत्पन्न करना होता है जो सत्र आईडी के साथ अन्य डोमेन स्क्रिप्ट को पैरामीटर के रूप में कॉल करता है ताकि उन स्क्रिप्ट्स को अपनी सत्र कुकीज़ उत्पन्न हो सके सही आईडी – Arkh

2

कुछ भी जो उपयोगकर्ताओं से सहयोग के बिना इसे संभव बना देगा, उपयोगकर्ता की गोपनीयता और गुमनामता के संबंध में एक बग होगा जो अंततः तय हो जाएगा। वेबसाइट नहीं माना जा सकता है कि यह पता लगाने में सक्षम है कि उपयोगकर्ता किस साइट पर गया है और उसने वहां क्या किया है।

+1

इसे फेसबुक पर बताएं !!! – Pierreten

+0

असल में, Google Analytics या ऐडसेंस या किसी अन्य एम्बेडेड प्लग-इन का उपयोग करने वाले किसी को भी बताएं। – Arkh

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