2014-04-25 241 views
0

我使用的CMS称为进程线,严重依赖PHP语法。我现在只是真正学习PHP,所以这可能是一件容易的事情,但是我有一个else语句的问题。PHP - if ... 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,然后显示错误。否则执行下一条语句并登录。

<?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"); ?> 

回答

0

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 
} 
+0

谢谢Mathias,但是如果那还是如果陈述是我的最后一种情况呢? – Ankh2054

+0

只需省略else块,不需要 –

+0

现在可以显示表单,但如果IF语句为真,它仍会继续使用elseif。是否有可能阻止这种形式的发生。 – Ankh2054