la página de inicio de sesión no impedir los nombres de usuario no válidos

mat1986:

Tengo una forma única con un nombre de usuario que permitirá el acceso a dos páginas en función de un nivel de autoridad de los usuarios en una base de datos MS SQL.

Si su nivel de autorización es 10 entonces van a entrar en la página 'normal', sin embargo, nada más y que se registran en una página de administración con más funcionalidad. Todo esto funciona bien, sin embargo Es dejar nada escrito en el nombre de usuario para iniciar sesión.

Estoy luchando para evitar que el registro en cualquier nombre de usuario que no está en la base de datos. Esto es lo que tengo hasta ahora ...

$conn = odbc_connect(database connection stuff here);
$login = $_POST['login'];
$sqlquery = "SELECT u.authorityLevel, u.employeeNo, e.knownAs FROM common.dbo.users as u JOIN 
common.dbo.employees AS e on e.employeeNo = u.employeeNo WHERE u.employeeNo = '".$login."'";
$result = odbc_exec($conn, $sqlquery);
$user = odbc_fetch_array($result);
$userExists = odbc_num_rows($sqlquery);

if((isset($_SESSION['login']['logged_in']) && $_SESSION['login'] 
['logged_in'])==true){

if(isset($_POST)){
  if ((int)$user['authorityLevel'] > 10) {
    header("location: indexAdmin.php");
    $row = $user;
    $_SESSION['sessionUserName'] = $row['knownAs'];
} elseif ((int)$user['authorityLevel'] = 10) {
    header("location: confirmedJobs.php");
    $row = $user;
    $_SESSION['sessionUserName'] = $row['knownAs'];
} else ((int)$user['authorityLevel'] < 10){
    header("location: loginPage.php");
  }
 }
}
Funk Forty Niner:

Sólo estás declarando esta variable:

$userExists = odbc_num_rows($sqlquery);

pero no usarlo.

Esta es la sintaxis para comprobar si existe un registro:

 if($userExists >0) {...}

Editar: (me daba algo).

Esta línea es el uso de la variable equivocada para ella:

$userExists = odbc_num_rows($sqlquery);

En conjunción con:

$result = odbc_exec($conn, $sqlquery);

Por lo tanto, debe decir:

$userExists = odbc_num_rows($result);

odbc_num_rows() se utiliza en contra de la consulta ejecutada, la consulta no prima.

También está abierto a una inyección de SQL, utilice una declaración preparada:

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=275077&siteId=1
Recomendado
Clasificación