2012-02-11 8 views
8

मैं कहाँ जगह कर सकते हैं मेरी "वैश्विक" समारोह है, जो, जांच करेगा कि उपयोगकर्ता के प्रवेश?CodeIgniter वैश्विक समारोह

क्योंकि मैं कुछ ऐसा करना चाहता हूं: उपयोगकर्ता केवल कुछ पेज ब्राउज़ करने में सक्षम है जब फ़ंक्शन isLogged() सत्य लौटाता है, और मुझे इसे कुछ विचारों में उपयोग करना होगा, यही कारण है कि यह "वैश्विक" फ़ंक्शन होना चाहिए, जिसे मैं कहीं से भी एक्सेस कर सकता हूं।

क्या यह संभव है? या इसके लिए कोई बेहतर समाधान है?

उत्तर

10

आपको शायद इसे लाइब्रेरी में रखना चाहिए, और लाइब्रेरी को स्वत: लोड करना चाहिए। जब आपको किसी दृश्य में "log_in" ध्वज का उपयोग करने की आवश्यकता होती है, तो इसे नियंत्रक से पास करें। उदाहरण:


application/libraries/Auth.php

<?php defined('BASEPATH') OR exit('No direct script access allowed'); 

class Auth 
{ 

    public function is_logged_in() 
    { 
     // Change this to your actual "am I logged in?" logic 
     return $_SESSION['logged_in']; 
    } 

} 

application/config/autoload.php

... 
$autoload['libraries'] = array(
    ... 
    'auth', 
    ... 
} 

`आवेदन/नियंत्रक/welcome.php

<?php ... 

public function index() 
{ 
    $view_data = array 
    (
     'logged_in' => $this->Auth->logged_in() 
    ); 
    $this->load->view('my_view', $view_data); 
} 

application/views/my_view.php

<? echo $logged_in ? 'Welcome back!' : 'Go login!' ?> 
+0

'एथ' को '$-- auth-> log_in() 'में कम केस होना चाहिए? – dangel

+0

क्या

+1

@SvenB .php' और इसे केवल उस फ़ाइल को लोड करें। 'BASEPATH' निरंतर,' index.php' फाइल में परिभाषित इसलिए जब तक आपके अनुरोध (एक सामान्य साइट अनुरोध जैसे।) उस फ़ाइल से गुजर रहा है, कि लाइन बंद हो जाता है जब आप फ़ाइल तक पहुँच रहा है। यह भी देखें: http://en.wikipedia.org/wiki/Defence_in_depth – Joe

5

आप एक प्रमाणीकरण लाइब्रेरी का उपयोग कर रहे हैं? यदि नहीं, तो मैं एक सुझाव दूंगा। वे इस तरह के कार्यों के साथ आते हैं।

टैंक एथ उदाहरण के लिए: is_logged_in(), जो वास्तव में आप चाहते हैं!

http://www.konyukhov.com/soft/tank_auth/

अधिक जानकारी जो पुस्तकालय के बारे में उपयोग करने के लिए आपको यह उत्तर जो सभी libs तुलना की जांच करनी चाहिए के लिए: https://stackoverflow.com/a/476902/576223

आप एक प्रमाणीकरण पुस्तकालय के रूप में जो ने सुझाव दिया आप कर सकते हैं नहीं करना चाहते हैं

+0

मैं बस टैंक ऑथ ** का सुझाव देने वाला था, अधिकांश लोग पहले से ही शानदार पुस्तकालयों के साथ पहिया के साथ पहिया का पुन: आविष्कार करने का प्रयास करते हैं चारों ओर। – Jakub

+0

मैंने जो सुझाव दिया है ** ** एक प्रमाणीकरण लाइब्रेरी है, केवल एक बहुत ही छीन लिया गया है ताकि उसे यह पता चल सके कि यह कैसे काम करता है और ऐप प्रवाह को कैसे नियंत्रित किया जाए: पी – Joe

+0

ये मुझे पता है, मैं बस अपना जवाब लिख रहा था आया तो मैंने इसे संपादित किया। :) – bottleboot

0

आप अपनी वेबसाइट के प्रत्येक पृष्ठ पर आवश्यक सभी फ़ंक्शन के साथ MY_controller का उपयोग कर सकते हैं। और इससे सभी नियंत्रकों का वारिस। read this oficial wiki