合并两个与用户登录状态有关的if else语句

时间:2011-05-27 06:18:54

标签: php facebook

大家早上好!

我需要一些帮助来合并两个与当前用户登录状态相关的if语句并创建第三个。

有3种状态:

  1. 用户使用Facebook登录 连接选项
  2. 用户使用该网站登录 登录表格
  3. 用户未使用
  4. 登录

    我已经能够起草1)和2)的条件陈述,这些条款陈述无效。

    它尚未完善。

    如果用户使用facebook connect选项登录,条件语句不会停止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";
    }
    ?>
    

4 个答案:

答案 0 :(得分: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被设置的条件,我真的不知道你的意图是什么。

答案 1 :(得分:1)

您需要将uid的支票放在else 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";
    } 

?>

答案 2 :(得分:1)

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

}

答案 3 :(得分: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';
}