2012-05-02 15 views
5

जब कोई उपयोगकर्ता मेरे कोडइग्निटर (PHP) ऐप से लॉग आउट करता है तो मैं ब्राउज़र की बैक बटन कार्यक्षमता को रोकने/अक्षम करने का प्रयास कर रहा हूं। लेकिन, मुझे लगता है कि ब्राउजर पृष्ठ को कैश कर रहा है ताकि लॉगआउट से सत्र को नष्ट होने के बावजूद यह दिखाई दे।लॉगआउट के बाद कोडइग्निटर बैक बटन

मुझे पता है कि सत्र मर चुका है क्योंकि जब उपयोगकर्ता कुछ भी करने की कोशिश करता है (किसी भी लिंक आदि पर क्लिक करें) तो वे मेरे नियंत्रक में विधियों के माध्यम से बाहर निकाल दिए जाते हैं।

पिछले पृष्ठ में गोपनीय जानकारी होने के बाद से बैक बटन इस तरीके से काम करना आदर्श नहीं है।

इस बात से निपटने के लिए कोई सुराग नहीं है, शायद एक रीडायरेक्ट पेज के बीच में (लेकिन तब उपयोगकर्ता बैक बटन को वास्तव में त्वरित दाएं कर सकता है?), मदद करें!

धन्यवाद।

+0

http://stackoverflow.com/questions/5251110/back-button-takes-the-user-back-to-protected-page-after-logout-zend-framework कोडिनेटर नहीं है लेकिन मुझे लगता है कि आप करेंगे इसे काम करें –

+1

इसे जांचें, मुझे लगता है कि यह आपकी मदद करेगा http://stackoverflow.com/questions/4630484/how-do-i-make-firefox-reload-page-when-back-button-is-pressed – Ula

+0

धन्यवाद @Ula, हेडर समाधान मेरे लिए काम किया। –

उत्तर

12

जोड़े इस पिछले पृष्ठ की कैशिंग को रोकने के लिए:

header("cache-Control: no-store, no-cache, must-revalidate"); 
header("cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
0

के बाद लॉग-आउट गोटो एक पृष्ठ दिखाने जैसे कुछ संदेश "जल्द ही मिलते हैं" और कुछ समय के बाद वांछित पेज को यह दूसरी बार पुनः निर्देशित हेडर के लिए नीचे दिए गए कोड की तरह आपकी समस्या का समाधान हो सकता है कि रीडायरेक्ट ("ताज़ा 3; url = home.php ");

+0

http://stackoverflow.com/questions/6648093/php-prevent-going-back-page-after-log-out – user1370510

0

आप जावास्क्रिप्ट का उपयोग लॉगआउट के बाद विंडो को बंद करने के लिए कर सकते हैं - इस प्रकार पृष्ठ वापस जाने की किसी भी क्षमता को हटा देना।

ऑनलाइन बैंकों के बहुत सारे इस सटीक मुद्दे को हल करने के लिए ऐसा करते हैं।

13

मुझे लगता है कि यह आपकी सहायता कर सकता है, यह मेरे लिए काम करता है।

CodeIgniter फ्रेमवर्क संस्करण:

$this->output->set_header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT'); 
$this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate'); 
$this->output->set_header('Cache-Control: post-check=0, pre-check=0',false); 
$this->output->set_header('Pragma: no-cache'); 

PHP संस्करण:

header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0',false); 
header('Pragma: no-cache'); 

यदि आप PHP OOP का उपयोग कर रहे अपने निर्माता में उपरोक्त कोड डाल अपने पृष्ठों पर प्रारंभ करने में।

+0

मुझे यह उपरोक्त कोड कहां जोड़ना चाहिए? नियंत्रक में या प्रत्येक दृश्य पृष्ठ में? मैं कोडनिर्देशक ढांचे का उपयोग कर रहा हूँ। –

0

मुझे लगता है कि निम्नलिखित बाहर)) आप की मदद करनी चाहिए

1 एक logout.php फ़ाइल बनाएं और उसे

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
$("#submit").trigger("click"); 
}); 
</script> 
</head> 

<body> 
<form action="<?php echo base_url();?>login" method="post"> 
<input type="submit" id="submit" style="display: none;"> 
</form> 
</body> 
</html> 

2 के लिए निम्न कोड जोड़ने के एक ऊपर दृश्य फ़ाइल को लोड करने के लिए अपने लॉगआउट समारोह को संशोधित logout.php

1

इस समस्या के लिए मेरे समाधान:

  1. चेक कि कुकी सेट है Wil एक अगर के साथ।
  2. चरण पैरामीटर और उपयोगकर्ता मॉडल की लॉगिन विधि को कॉल करें।
  3. अंत में संबंधित विचारों को चार्ज करें।

यदि कुकी सेट नहीं है तो लॉगिन पृष्ठ पर रीडायरेक्ट कर दिया जाएगा।

if(isset($_COOKIE['ci_session'])){ 
    $user= $this->security->xss_clean($this->input->post('user')); 
    $pass= $this->security->xss_clean($this->input->post('pass')); 

    $result = $usrLog->loguearUsuario($user, $pass); 

    if($result == TRUE){ 
    $data = $this->session->set_userdata('logged_in', $sessArray); 
    $this->load->view('pages/admin', $data); 
    } 

}else{ 
    header('Location: login'); 
} 

मुझे आशा है कि आप सीखेंगे! और मेरी अंग्रेजी के लिए खेद है!:-)

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