Hallo,

ik ben bezig met een login script. alleen de admin mag inloggen.
Maar bij het if statement controleert hij het wachtwoord niet. Dus je kan met een willekeurig letter inloggen. en dat is niet de bedoeling.


mijn vraag is: wat gaat er fout? Hoe controleert het script wel of het wachtwoord wat je invoert klopt in de database?

alvast bedankt.

formulier is:

<form action='login.php' method='POST'>
		<label>Gebruikersnaam:</label> <input type='text' name='username' required><br /><br />
		<label>Wachtwoord: </label><input type='password' name='password' required><br />
		<input type='submit' value='Inloggen' >
	</form>


inlog script:

<?php
session_start();
include 'connect.php';
	
$a_username = $_POST ['username'];
$a_password = hash ('SHA512', $_POST ['password']);

	$sqli = "SELECT * FROM beheerder WHERE gebruikersnaam='$a_username' AND wachtwoord='$apassword' ";

	$result = mysqli_query($link, $sqli)    or    die(mysqli_error());

	
	if($a_username == "admin" and  $apassword == $a_password = hash ('SHA512', ['password'])  )
{

	//Define from form text feilds
        $username = 'username';
      $password = 'password';
        
        
             $_SESSION['username'] = 'true';
           $_SESSION['username'] = $a_username;
           
            
            //Redirect to admin page
            //include 'whitelist.php';
            header("Location: admin.php");exit();
			
        
	
}
?>

Je voert de query uit maar je doet er verder niks mee.
Als de query 1 record oplevert zit het goed, anders niet.

Deze constructie gaat altijd iets opleveren wat je niet verwacht.
Niet gebruiken dus.
$apassword == $a_password = hash.....

Verder is de query lek, je moet input van buitenaf altijd beveiligen.
mysqli_real_escape_string().
Na $result = mysqli_query($link, $sqli) moet je inderdaad de data nog uit de resultaatset $result halen.

Wat je ook kunt doen als je verder geen gebruikersgegevens uit de database nodig hebt, is met SELECT COUNT(*) of mysqli_num_rows() tellen of er exact 1 resultaat is.
het werkt, bedankt voor info.

Reageren