【问题标题】:PHP - if ... else... statementPHP - if ... else... 语句
【发布时间】:2014-04-25 08:18:32
【问题描述】:

我正在使用一个名为 process wire 的 CMS,它严重依赖 PHP 语法。我现在才真正开始学习 PHP,所以这可能是一件容易的事情,但是我遇到了 else 语句的问题。

我正在努力解决的部分如下。目前我收到一个服务器错误,在第 104 行声明了一个意外的 {。

if($user->user_activation != 0) {
    $login_errors .= "Sorry, but you need to activate your account!";
    $out .= $form;
    }

    //Below is line 104
    else($session->login($user, $pass)) {
        // login successful
        $session->redirect("/"); 
        }

用户有一个名为 user_activation 的字段,其中包含一个字段,一旦用户单击激活电子邮件,该字段就会变为 0。所以基本上检查如果不是 0 然后显示错误。 ELSE 执行下一条语句并登录。

<?php

$login_errors = "";
$out = "";
$form = "<div class='container'>


        <div class='omb_login'>
            <h3 class='omb_authTitle'>Login or <a href='#'>Sign up</a></h3>
            <div class='row omb_row-sm-offset-3 omb_socialButtons'>
                <div class='col-xs-4 col-sm-2'>
                    <a href='#' class='btn btn-lg btn-block omb_btn-facebook'>
                        <i class='fa fa-facebook visible-xs'></i>
                        <span class='hidden-xs'>Facebook</span>
                    </a>
                </div>
                <div class='col-xs-4 col-sm-2'>
                    <a href='#' class='btn btn-lg btn-block omb_btn-twitter'>
                        <i class='fa fa-twitter visible-xs'></i>
                        <span class='hidden-xs'>Twitter</span>
                    </a>
                </div>  
                <div class='col-xs-4 col-sm-2'>
                    <a href='#' class='btn btn-lg btn-block omb_btn-google'>
                        <i class='fa fa-google-plus visible-xs'></i>
                        <span class='hidden-xs'>Google+</span>
                    </a>
                </div>  
            </div>

            <div class='row omb_row-sm-offset-3 omb_loginOr'>
                <div class='col-xs-12 col-sm-6'>
                    <hr class='omb_hrOr'>
                    <span class='omb_spanOr'>or</span>
                </div>
            </div>

            <div class='row omb_row-sm-offset-3'>
                <div class='col-xs-12 col-sm-6'>    
                    <form class='omb_loginForm' action='./' accept-charset='UTF-8' autocomplete='off' method='POST'>
                        <div class='alert alert-error fade-in alert-dismissable'>
                        </div> 
                        <div class='input-group'>
                            <span class='input-group-addon'><i class='fa fa-user'></i></span>
                            <input type='text' class='form-control' name='user' placeholder='Username'>
                        </div>
                        <span class='help-block'></span>

                        <div class='input-group'>
                            <span class='input-group-addon'><i class='fa fa-lock'></i></span>
                            <input  type='password' class='form-control' name='pass' placeholder='Password'>
                        </div>
                        <span class='help-block'></span>
                        <input class='returnUrl' type='hidden' name='returnUrl' value='[[+request_uri]]' />



                    <input class='loginLoginValue' type='hidden' name='service' value='login' />

                        <button class='btn btn-lg btn-primary btn-block' type='submit' name='submit' value='Login'>Login</button>
                    </form>
                </div>
            </div>
            <div class='row omb_row-sm-offset-3'>
                <div class='col-xs-12 col-sm-3'>
                    <label class='checkbox'>
                        <input type='checkbox' name='rememberme' value='1' checked='checked'>Remember Me
                    </label>
                </div>
                <div class='col-xs-12 col-sm-3'>
                    <p class='omb_forgotPwd'>
                        <a href='[[~5]]'>Forgot password?</a>
                    </p>
                </div>
            </div>          
        </div>"
;

// Check if user is already logged in - redirect to 
if($user->isLoggedin()) {
    // user is already logged in, so they don't need to be here
    $session->redirect("/"); 
}


//Check if submit is issued
if($input->post->submit) {

//check for login before outputting markup
if($input->post->user && $input->post->pass) {

    $user = $sanitizer->username($input->post->user);
    $pass = $input->post->pass; 

    if($user->user_activation != 0) {
    $login_errors .= "Sorry, but you need to activate your account!";
    $out .= $form;
    }


    else($session->login($user, $pass)) {
        // login successful
        $session->redirect("/"); 
        }

    }


}
else {
    $out .= $form;
}


?>


<?php include("./head.inc"); ?>
<?php include("./navbar.inc"); ?>

<div><?php echo $login_errors; ?></div>

<?php echo $out; ?>



<?php include ("./foot.inc"); ?>
<?php include ("./java.inc"); ?>

【问题讨论】:

    标签: php


    【解决方案1】:

    这个

    else($session->login($user, $pass))
    

    无效,将被解释为:

    else{
        ($session->login($user, $pass))
    }
    

    这没有多大意义......

    else 块是有条件的时,它被称为elseif

    if($user->user_activation != 0) {
        $login_errors .= "Sorry, but you need to activate your account!";
        $out .= $form;
    }
    elseif($session->login($user, $pass)) {
        // login successful
        $session->redirect("/"); 
    }
    else
    {
        // your final default case down here
    }
    

    【讨论】:

    • 感谢 Mathias,但如果 else if 语句是我的最后一个案例呢?
    • 省略else块即可,不需要
    • 表单现在显示,但如果 IF 语句为真,它仍会继续使用 elseif。是否有可能阻止这种形式的发生。
    • @Ankh2054。我不知道这是怎么发生的,但如果是这样,您应该编辑现有问题或添加新问题。
    猜你喜欢
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2011-05-18
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多