2012-07-07 21 views
12

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

function authenticate($type = 'user') 
    { 
     if($type == 'user') 
     { 
      if($this->user_id) 
      { 
       // user is logged in. check for permissions now 
      } 
      else 
      { 
       // user isnt logged in. store the referrer URL in a var. 
       if(isset($_SERVER['HTTP_REFERER'])) 
       { 
        $redirect_to = str_replace(base_url(),'',$_SERVER['HTTP_REFERER']); 
       } 
       else 
       { 
        $redirect_to = $this->uri->uri_string(); 
       }    

       redirect('user/login?redirect='.$redirect_to); 
       exit; 
      } 
     } 

     if($type == 'admin') 
     { 
      if($this->session->userdata('admin_id') && $this->session->userdata('user_type') ==5) 
      { 
       // Admin is logged in 
      } 
      else 
      { 
       redirect('admin/login'); 
       exit; 
      } 
     } 
    } 

संदर्भकर्ता URL "http://example.com/project/pm/view_conversation?id=11" अब समस्या मैं हो रही है संदर्भित view_conversation तक यूआरएल और न आईडी हिस्सा प्राप्त करने में सक्षम है ।

कोई सुझाव?

धन्यवाद।

उत्तर

1

डिफ़ॉल्ट रूप से सीआई को यूआरएल के क्वेरी भाग को अनदेखा करने के लिए कॉन्फ़िगर किया गया है ('?' के बाद का हिस्सा)।

देखें: http://codeigniter.com/user_guide/general/urls.html

2

क्योंकि आप यूआरएल में डबल प्रश्न चिह्न है, ब्राउज़र दूसरे के बाद यूआरएल भाग को अनदेखा करता है। urlencode का प्रयोग करें आप हिस्सा रीडायरेक्ट, इसलिए जैसे:

redirect('user/login?redirect='.urlencode($redirect_to)); 

मैं इसे बाहर परीक्षण किया है और यह इस तरह से काम करता है।

15

कैसे बस के बारे में

redirect($_SERVER['HTTP_REFERER']); 

php के $_SERVER वैश्विक चर का उपयोग करना।

यह मेरे लिए काम किया!

1

अपने लॉग इन Controler

function index() { 
    $this->load->library('user_agent'); // load user agent library 

    //Set session for the referrer url 
    $this->session->set_userdata('referrer_url', $this->agent->referrer()); 
} 

लॉग इन पुनर्निर्देशन कोड

// user is authenticated if referrer is there 
if($this->session->userdata('referrer_url')) { 
    //Store in a variable so that can unset the session 
    $redirect_back = $this->session->userdata('referrer_url'); 
    $this->session->unset_userdata('referrer_url'); 
    redirect($redirect_back); 
} 
संबंधित मुद्दे