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
。