我需要一些帮助来合并两个与当前用户登录状态相关的if语句并创建第三个。
有3种状态:
我已经能够起草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";
}
?>
答案 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';
}