2009-04-17 16 views
6

यह संभव है कि जब उपयोगकर्ता साइन आउट करता है तो मैं PHP सत्रों को ठीक से हटा नहीं रहा हूं। मैंने देखा है कि यदि मैं ब्राउजर बंद किए बिना साइन आउट करता हूं और साइन इन करता हूं, तो सत्र आईडी नहीं बदली जाती है, लेकिन अगर मैं साइन आउट करता हूं, ब्राउज़र विंडो बंद करता हूं, एक नया खोलता हूं और साइन इन करता हूं, तो सत्र आईडी अलग होगी । क्या मुझे कुछ अलग करने की ज़रूरत है या यह सामान्य व्यवहार है? मैं तीन साल तक एक ही प्रक्रिया का उपयोग कर रहा हूं लेकिन हाल ही में कुछ ऐसा हुआ जो मुझे लगता है कि शायद मुझे कुछ अलग करने की ज़रूरत है।PHP सत्र को कैसे हटाएं?

जब कोई साइन आउट क्लिक करता है तो मैं मूल रूप से क्या करता हूं।

<?php 

session_start(); 

if(isSet($_SESSION['FacID'])) 
    $facID = $_SESSION['FacID']; //Want to re-instate this after we destroy the session. 

unset($_SESSION); 
session_destroy(); 

if(isSet($_SESSION['FacID'])) 
    $_SESSION['FacID'] = $facID; 

?> 

उत्तर

0

भारी बचत और विनाश के साथ क्या है? बस session_start और अपने चर सेट करें। नष्ट करने की कोई ज़रूरत नहीं है, फिर उन्हें रीसेट करें!

ब्राउज़र के साथ आपकी "समस्या" यह है कि जब आप अपनी ब्राउज़र विंडो बंद करते हैं, तो आपका ब्राउज़र उस कुकी को हटा रहा है जो PHP भेजता है, इसलिए यह सत्र आईडी जानता है। यह एक ब्राउज़र विकल्प है और सर्वर पक्ष पर बदला नहीं जा सकता है (जब तक आप शोषण नहीं करते)। इसे कुछ तरीकों से छेड़छाड़ की जा सकती है, लेकिन शायद यह आपका सबसे अच्छा विकल्प नहीं है।

5

आप मैन्युअल से, एक नया आईडी http://pl.php.net/manual/en/function.session-regenerate-id.php

और अपने प्रश्न के लिए बाध्य करने की जरूरत महसूस करते हैं:

session_destroy() वर्तमान सत्र के साथ संबद्ध डेटा के सभी नष्ट कर देता है । यह सत्र से जुड़े वैश्विक चरों को सेट न करें, या सत्र कुकी को अनसेट करें। फिर से सत्र चर का उपयोग करने के लिए, session_start() को कॉल करना होगा।

सत्र सत्र को मारने के लिए, उपयोगकर्ता को लॉग आउट करने की तरह, सत्र आईडी को भी सेट नहीं किया जाना चाहिए। यदि सत्र आईडी (डिफ़ॉल्ट व्यवहार) को प्रचारित करने के लिए कुकी का उपयोग किया जाता है, तो सत्र कुकी हटा दी जानी चाहिए। सेटक्यूकी() इसके लिए उपयोग किया जा सकता है।

1

आपका सत्र नष्ट हो रहा है।

PHP केवल एक सत्र आईडी उत्पन्न करेगा यदि ब्राउज़र एक निर्दिष्ट नहीं कर रहा है। जब तक सत्र नष्ट हो गया है, तब तक इसमें कोई समस्या नहीं है।

+0

तो तथ्य यह है कि एक ही सत्र आईडी (यदि ब्राउज़र बंद नहीं है) एकाधिक उपयोगकर्ताओं के लिए उपयोग किया जा रहा है वास्तव में कोई मुद्दा नहीं है? – user39653

+0

चूंकि सत्र आईडी की सीमित संख्या है, इसलिए कई उपयोगकर्ताओं के लिए प्रत्येक आईडी का उपयोग किया जा रहा है। उनका पुन: उपयोग करना कोई समस्या नहीं है। –

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