2013-03-19 7 views
8

मेरे php वेबसाइट इस तरह बहती है:मैं अपने PHP सत्र डेटा को सही तरीके से कैसे साफ़ कर सकता हूं?

  • Page1.php एक एचटीएमएल रूप है जो पदों
  • Page2.php भंडार सत्र चर में सभी पोस्ट डेटा Page2.php और एक बटन पृष्ठ 3 के लिए अग्रणी है करने के लिए है। php
  • Page3.php एक और रूप है जो पदों Page4.php करने के लिए अपने डेटा
  • Page4.php तो भंडार सत्र चर में अपने सभी पोस्ट डेटा

मेरे समस्या यह है कि यह ख हो सकता है पृष्ठ 3.php पर वापस जाने और कुछ इनपुट बदलने के लिए किसी उपयोगकर्ता के लिए पृष्ठ 4.php पर बैक बटन पर क्लिक करने के लिए ई नेसिसरी। जैसा कि मुझे यकीन है कि जब वे पृष्ठ 3.php पर वापस आते हैं तो सभी जानते हैं कि फॉर्म खाली हो जाएगा क्योंकि पूरे पृष्ठ को इसके डिफ़ॉल्ट स्थिति में फिर से प्रस्तुत किया जाता है।

इस के आसपास पाने के लिए और फिर से प्रदर्शित उपयोगकर्ता की पिछली इनपुट im यह कर:

<input value="<?php echo $_POST["guest1Ticket"];?> " type="text" name="guest1Ticket" id="guest1Ticket" onblur="isTicketNumber(this)" size ="22"/> 

यह किया जा रहा महत्वपूर्ण हिस्सा - <?php echo $_POST["guest1Ticket"];?>

यह काम करता है लेकिन मेरे लिए एक और समस्या पैदा करता है। यदि उपयोगकर्ता पेज 1.एफ़पी (अपने ब्राउज़र को कॉल करने से पहले) पर वापस जाता है और जब वे अपने अंतिम रन से डेटा को पृष्ठ पर ले जाते हैं तो प्रक्रिया फिर से शुरू हो जाती है।

मुझे जो आंकड़ा है, उसे देखने के लिए मुझे सभी sdession चर को साफ़ करना है जब उपयोगकर्ता पेज 1.php को देखता है।

<?php 
session_start(); 
session_unset(); 
session_destroy(); 
?> 

(। ऊपर पहले वर्ण से पहले कोई रिक्त स्थान के साथ मेरी फाइल के सबसे ऊपर स्थित है)

कोई चेतावनी जब उत्पन्न कर रहे हैं Page1.php: मुझे लगता है कि इस तरह से करने के लिए करने की कोशिश की भार लेकिन सत्र चर सेट नहीं हो रहे हैं। जब मैं अंतिम रन से डेटा पेज 3.php पर जाता हूं तब भी फॉर्म में प्रवेश किया जा रहा है।

मैं अपने सत्र डेटा को सही तरीके से कैसे साफ़ कर सकता हूं?

बीटीडब्ल्यू मुझे केवल क्रोम में काम करने की आवश्यकता है और जहां मैं परीक्षण कर रहा हूं।

उत्तर

11

से जुड़े किसी भी वैश्विक चर को अनसेट नहीं करता है, केवल पुराने बहिष्कृत कोड के लिए session_unset() का उपयोग करें जो $ _SESSION का उपयोग नहीं करता है।

session_destroy manual

उदाहरण आप कोशिश कर सकते हैं और देखें कि यह कैसे काम करता है

session.php

<?php 
session_start(); 
$_SESSION = array('session1'=>1,'session2'=>2); 

echo $_SESSION['session1']; //1 
$_SESSION['session1'] = 3; 
echo "<pre>"; 
print_r($_SESSION); //session one now updated to 3 
echo "</pre>"; 


$_SESSION = array(); 
if ($_SESSION['session1']) { 
echo $_SESSION['session1']; // IS NOW EMPTY 
} else { 
echo "woops... nothing found"; 
} 
?> 
<p> 
<a href="destroyed.php">NOW GOING TO DESTROYED PHP<a/> 
</p> 

<?php 
session_destroy(); 
?> 

destroyed.php

<?php 
session_start(); // calling session start first on destroyed.php 

print_r($_SESSION); // prints Array () 
?> 
+0

उस लिंक को भी देखा, मैंने '$ _SESSION = array(); 'कोशिश की; लेकिन उसने चर को भी नहीं बनाया, इसलिए मैं उपरोक्त विधि पर वापस चला गया। ऐसा लगता है कि मैं कहीं कुछ याद कर रहा हूं – DelightedD0D

+0

मैंने अपनी पिछली टिप्पणी संपादित की है, आपके लिए एक कोड स्निपेट जोड़ा है। तो आप देख सकते हैं कि यह कैसे काम करता है, याद रखें कि प्रत्येक बार जब आप $ _SESSION का उपयोग करते हैं तो आपको session_start() को कॉल करने की आवश्यकता होगी; उस फाइल में। – Grmn

+0

यह लगता है कि यह काम करना चाहिए, लेकिन यह deosnt, यह क्या हर बार जब मैं जाने के बाहर छपा है Page1.php को 1 सरणी ( [session1] => 3 [सत्र 2] => 2 ) ओह है .. कुछ भी नहीं मिला – DelightedD0D

1
प्रलेखन से

:

If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, 
use unset() to unregister a session variable, i.e. unset ($_SESSION['varname']); 

और session_destroy के बारे में ध्यान रखना:

session_destroy वर्तमान सत्र के साथ जुड़े डेटा के सभी नष्ट कर देता है। यह

+0

हाँ मुझे लगता है कि देखा था, लेकिन मैं करीब 100 variuables है और प्रत्येक होगा अधिक तत्पर को सेट किए बिना नहीं अलग-अलग:

<?php session_start(); ?><!DOCTYPE html> <html> <body> <?php $_SESSION["variabletounset"] = "I am going to be unset soon along with all of the other session variables."; print '<pre>' . "\n"; print_r($_SESSION); print ' </pre>' . "\n"; session_unset(); print ' <pre>' . "\n"; print_r($_SESSION); print ' </pre>' . "\n"; ?> </body> </html> 

यह आउटपुट होगा। मैं उन्हें एक बार – DelightedD0D

+0

पर साफ़ करने का एक तरीका ढूंढ रहा हूं, आप प्रत्येक तत्व को जानने के बिना आसानी से अपने $ _SESSION पर फिर से शुरू कर सकते हैं। – MatRt

+0

पर्याप्त मेला, यह सब के बाद एक सरणी है। मुझे पता था कि उन्हें एक साथ करने का एक मानक तरीका था लेकिन इसे काम पर नहीं मिला। फ़िर भी सहायता के लिए धन्यवाद! – DelightedD0D

0

उपयोग session_unset() देखें। इस तरह:

Array 
(
variabletounset => I am going to be unset soon along with all of the other session variables. 
) 

Array 
(
) 
संबंधित मुद्दे

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