2011-05-27 93 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'; 
}