2011-05-27 100 views
1

大家早上好!合併兩個if else語句關於用戶登錄狀態

我需要一些幫助來合併兩個if語句與當前用戶登錄狀態有關,並創建第三個if語句。

有3種狀態:

  1. 用戶登錄使用Facebook 連接選項使用本網站 登錄表單
  2. 用戶沒有使用任何
  3. 登錄
  4. 用戶登錄

我已經能夠爲1)和2)起草條件語句,這些語句無法正常工作。

它尚未完善。

如果用戶使用Facebook連接選項登錄,則條件語句不會停止在1)它繼續到2)從而產生錯誤未定義索引:uid

發生這種情況是因爲索引uid僅在用戶使用網站表單登錄時創建。

我不知道實施3)在這一刻!

我希望任何幫助推進此代碼。

在此先感謝。

<?php 
// if logged in using fb connect 
if ($user) { 
     echo "fb"; 
// proceed knowing you have a logged in user who's authenticated 
} else { 
// proceed knowing you require user login and/or authentication 
echo "this is shown to a user who has not logged in"; 
} 

// if logged in using login form 
if (isset($_SESSION['uid'])) { 
// proceed knowing you have a logged in user who's authenticated 
    echo "kite"; } 
// proceed knowing you require user login and/or authentication 
else { 
echo "this is shown to a user who has not logged in"; 
} 
?> 

回答

3

好吧,繼承人的裂縫在此:

if (isset($user)){ // use isset() to avoid undefined index warning .. 
    echo "fb"; 
} elseif($_SESSION['uid']){ 
    echo "kite"; 
}else{ 
    // Anonymous user 
    echo "this is shown to a user who has not logged in"; 
} 

從技術上講,如果你有一個變量保存記錄的最後否則就沒有必要了在狀態。如果最後一個ifelse返回false,則知道該用戶是匿名的,但在此示例中,需要使用最後一個else,以便腳本不會將匿名消息回顯到所有條件。

請注意,用戶可以登錄到Facebook仍然可以有$ _SESSION uid設置。 你需要把你想要流行的狀況作爲第一個被評估的條件,或者添加一個不允許同時設置fb和$ _SESSION的條件,我不知道你的目的是什麼。

+0

它不可能在兩個 – methuselah 2011-05-27 07:17:30

+1

登錄用戶好吧我會更新我的答案。 – stefgosselin 2011-05-27 07:27:06

1

你需要把支票uidelse if而不是另一個if。下面的代碼就可以解決問題:

<?php 
    // if logged in using fb connect 
    if ($user) { 
      echo "fb"; 
    // proceed knowing you have a logged in user who's authenticated 
    } // if logged in using login form 
    elseif (isset($_SESSION['uid'])) { 
    // proceed knowing you have a logged in user who's authenticated 
      echo "kite"; 
    } 
    // proceed knowing you require user login and/or authentication 
    else { 
    // proceed knowing you require user login and/or authentication 
      echo "this is shown to a user who has not logged in"; 
    } 

?> 
+1

否則,如果不推薦,最好使用elseif。取自[手冊](http://www.php.net/manual/en/control-structures.elseif.php):注意:請注意elseif和else if僅在使用大括號時才被認爲完全相同。當使用冒號定義if/elseif條件時,如果分成兩個單詞,則不得將其他單獨分隔,否則PHP將失敗,並出現分析錯誤。 – stefgosselin 2011-05-27 06:26:56

+1

@stefgosselin:+1。感謝提高我的知識。我有一個不同的背景,所以一直在使用它,因爲我一直在使用{}而不是: – 2011-05-27 06:30:44

+0

快樂我的朋友。快樂的編碼。 – stefgosselin 2011-05-27 06:38:32

1
if ($user) 
{ 
    echo "fb"; 
} 
elseif(isset($_SESSION['uid'])) 
{ 
    echo "kite"; 
} 
else 
{ 
    echo "this is shown to a user who has not logged in"; 

} 
1
if($user || isset($_SESSION['uid'])){ 
    echo $user?('fb'.(isset($_SESSION['uid'])?' AND kite':'')):'kite'; 
}else{ 
    echo 'this is shown to a user who has not logged in'; 
}