Php 如果用户帐户未激活,则重定向到其他页面

Php 如果用户帐户未激活,则重定向到其他页面,php,mysql,authentication,activation,Php,Mysql,Authentication,Activation,一段代码 $LoginRS__query=sprintf("SELECT user_handle, user_password FROM users_entity WHERE user_handle=%s AND user_password=%s AND activation_status='Active'", GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); $Lo

一段代码

$LoginRS__query=sprintf("SELECT user_handle, user_password FROM users_entity WHERE user_handle=%s AND user_password=%s AND activation_status='Active'",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

  $LoginRS = mysql_query($LoginRS__query, $f12_database_connect) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";


    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['logged_in']="True";
    $_SESSION['MM_UserGroup'] = $loginStrGroup;       

    if (isset($_SESSION['PrevUrl']) && true) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];  
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}

数据库查询处于
激活状态的用户\u status=“Active”
。该字段有两个值之一,即
“挂起”
“活动”
。如果状态为“待定”,我想发送到另一个页面。该页面将用于尚未激活其帐户的用户。如何获取结果并将其分配给变量?或者有更好的方法吗?

只需选择数据而不参考激活状态,并使用if语句进行检查

编辑:

您可能正在查找的代码:

$LoginRS__query=sprintf("SELECT user_handle, user_password, activation_status FROM users_entity WHERE user_handle=%s AND user_password=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

  $LoginRS = mysql_query($LoginRS__query, $f12_database_connect) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    // Make sure user is activated.
    $row = mysql_fetch_Array($LoginRS);
    if ($row['activation_status'] === 'Pending') {
      header("Location: some-other-page");
    }

    $loginStrGroup = "";


    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['logged_in']="True";
    $_SESSION['MM_UserGroup'] = $loginStrGroup;       

    if (isset($_SESSION['PrevUrl']) && true) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];  
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}

这就是解决方案,正确编码

<?php
$LoginRS_StrQuery   =   'SELECT user_handle, user_password, activation_status FROM users_entity '.
                        "WHERE user_handle=%s AND user_password=%s LIMIT 0,1";
$LoginRS__query     =   sprintf($LoginRS_StrQuery, GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
$LoginRS            =   mysql_query($LoginRS__query, $f12_database_connect);
if(is_resource($LoginRS) && mysql_num_rows($LoginRS) > 0){
    $loginStrGroup  =   '';

    //declare two session variables and assign them
    $_SESSION['MM_Username']    =   $loginUsername;
    $_SESSION['logged_in']      =   'True';
    $_SESSION['MM_UserGroup']   =   $loginStrGroup;

    $LoggedUser     =   mysql_fetch_assoc($LoginRS);
    if($LoggedUser['activation_status'] === 'Pending'){
        // redirect him/her to wherever you want
    } elseif(isset($_SESSION['PrevUrl']) && true){
        $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
        exit;
    } else{
        header("Location: " . $MM_redirectLoginSuccess );
        exit;
    }
} else{
    header("Location: ". $MM_redirectLoginFailed );
    exit;
}
?>


如何使用if语句进行检查。如果(loginFoundUser['activation\u status']),会是这样吗?我如何为if语句选择该列?如果我希望它重定向到另一个页面,用于='Pending',我会将其替换为'Active'吗?
$\u SESSION['logged\u in']='True'
isset($\u SESSION['PrevUrl'])&true
您认为这是正确的编码吗-1@atno当前位置我称之为符合他的标准的正确编码。如果我改变了这些,谁知道我们头顶上会是什么样的天空。他可能在其他地方用
检查($\u SESSION['logged\u in']='True')
,如果我更改了他的所有身份验证都将失败。而且,
&&true
,他可能会将其用于测试或其他什么。。。所以,在你否决投票之前,要考虑一下上下文。@凯文·奥卢森·卡里姆:是的,你只要把它改成
Pending
。我为你更新了代码。这一行有一个不必要的
&&true
强制条件
elseif(isset($\u SESSION['PrevUrl'])&&true)
。因此,如果不是有意将其添加到那里,请确保删除
&&true