0

コードの断片

$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 );
  }
}

データベースは、であるユーザーを照会しますactivation_status="Active"。そのフィールドには、またはの2つの値のいずれかがあり"Pending"ます"Active"。ステータスが。の場合、別のページに送信したい"Pending"。このページは、アカウントをアクティブ化していないユーザー向けです。その結果を取得して変数に割り当てるにはどうすればよいですか?それとももっと良いアプローチがありますか?

4

2 に答える 2

0

Activation_statusを参照せずにデータを選択し、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 );
  }
}
于 2011-06-15T17:29:49.767 に答える
-1

これが解決策であり、適切なコーディングです...

<?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;
}
?>
于 2011-06-15T17:37:26.187 に答える