2013-08-30 9 views
5

मैं एक वेबसाइट और सूचकांक पेज चेक पर काम कर रहा हूँ, तो उपयोगकर्ता के हो या ना किया है कोड के इस टुकड़े के साथ से प्रवेश करने वाले:पीएचपी जांच करें कि उपयोगकर्ता एक समारोह

if (!$_SESSION['login'] && $_SESSION['login'] == "") { 
include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); 
} elseif ($_SESSION['login'] == 1) { 
include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); 
} 

लेकिन मैं यह चाहते क्लीनर देखने के लिए, तो मैं सोच रहा है, तो एक समारोह के साथ कुछ इस तरह प्राप्त करने के लिए संभव हो गया था शुरू कर दिया:

checklogin($_SESSION['login']); 

मैं कार्यों के साथ ज्यादा अनुभव नहीं है, तो मैं माफी चाहता हूँ मेरे सवाल का लग रहा है, तो बेवकूफ है, तो धन्यवाद अग्रिम रूप से।

+0

चिंता न करें, आपके द्वारा पोस्ट किए गए दोनों स्निपेट पूरी तरह मान्य हैं। यह आपके ऊपर है कि कैसे अपना कोड तैयार करना है और तर्क कहां रखना है। लेकिन यह * कहीं * होना चाहिए। इसलिए यदि आप बस उस फ़ंक्शन को चाहते हैं (जैसा कि दूसरे उदाहरण में है), पिछले उदाहरण से तर्क उस * अंदर * उस कार्य को होना होगा। यह सिर्फ दूर नहीं जा सकता है। जब भी संभव हो, आपको मौजूदा प्रमाणीकरण ढांचे का फिर से उपयोग करना चाहिए, क्योंकि, वास्तव में, यह जटिल है। उदाहरण के लिए, https://github.com/delight-im/PHP-Auth पर एक नज़र डालें जो ढांचा-अज्ञेयवादी और डेटाबेस-अज्ञेयवादी दोनों है। – caw

उत्तर

6

इस

if(check_login()) { 
    echo 'You are in!'; 
} else { 
    header('Location: login.php'); 
    exit; 
} 

function check_login() { 
    if(isset($_SESSION['login'] && $_SESSION['login'] != '') { 
     return true; 
    } else { 
     false; 
    } 
} 
3

बस empty का उपयोग का प्रयास करें:

if (empty($_SESSION['login'])) { 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); 
} else { 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); 
} 

या गाढ़ा यह:

include_once $_SERVER['DOCUMENT_ROOT'].(empty($_SESSION['login']) ? "/login/" : "/main/"); 
2

आपको क्या चाहिए नहीं है:

function userCheck() 
{ 
    return (isSet($_SESSION['login']) && $_SESSION['login']); 
} 

if(userCheck()) 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); 
else 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); 
1

या नहीं, अपने दृष्टिकोण समझ में आता है के तथ्य की अनदेखी, मुझे लगता है कि यह आप क्या उम्मीद करना होगा:

function checklogin() { 
    return (isset($_SESSION['login'])) ? true : false; 
} 
तो पृष्ठों पर

आप चाहते हैं:

function checklogin($login){ 
     if (!$login && $login == "") { 
      include_once($_SERVER['DOCUMENT_ROOT'] . "/path/"); 
     } 
} 


// **** call to the function 

     checklogin($_SESSION['login']); 

// **** 
0

आप इस सुविधा का उपयोग कर सकते हैं जांचें कि उपयोगकर्ता लॉग इन है या नहीं, आप कर सकते हैं:

if(checklogin() === true){ 
    //here you would put what you want to do if the user is logged in 
} else { 
    //this would be executed if user isn't logged in 
    header('Location: protected.php'); 
    exit(); 
    //the above would redirect the user 
} 
संबंधित मुद्दे