página de login não impedir usernames inválidos

mat1986:

Eu tenho um formulário com apenas um nome de usuário que irá permitir o acesso a duas páginas, dependendo um nível de autoridade usuários em um banco de dados MS SQL.

Se o seu nível de autoridade é 10, então eles vão fazer login na página de 'normal', no entanto nada mais e eles serão registrados em uma página de administração com mais funcionalidades. Isso tudo funciona bem, no entanto, é deixar tudo digitado no nome de usuário para efetuar login.

Eu estou lutando para evitar que o registo de qualquer nome de usuário que não está no banco de dados. Isto é o que eu tenho até agora ...

$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:

Você só está declarando esta variável:

$userExists = odbc_num_rows($sqlquery);

mas não usá-lo.

Esta é a sintaxe para verificar se existe um registro:

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

Edit: (I esquecido algo).

Esta linha é usando a variável errada para ele:

$userExists = odbc_num_rows($sqlquery);

Em conjunção com:

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

Por isso, deve ler-se:

$userExists = odbc_num_rows($result);

odbc_num_rows() é usada contra a consulta executada, não a consulta cru.

Você também estão abertos a uma injeção SQL, use uma declaração preparada:

Acho que você gosta

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