Перенаправить на другую страницу, если учетная запись пользователя не активирована - PullRequest
0 голосов
/ 15 июня 2011

Фрагмент кода

$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".Это поле имеет одно из двух значений: "Pending" или "Active".Я хочу отправить на другую страницу, если статус "Pending".Эта страница предназначена для пользователей, которые еще не активировали свою учетную запись.Как получить этот результат и присвоить его переменной?Или есть лучший подход?

Ответы [ 2 ]

0 голосов
/ 15 июня 2011

Это решение и правильное кодирование ...

<?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;
}
?>
0 голосов
/ 15 июня 2011

Просто выберите данные, не обращаясь к Activation_status, и проверьте их с помощью оператора if.

EDIT:

Код, который вы, вероятно, ищете:

$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 );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...