bij login geen wachtwoord controle
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:
Code (php)
1
2
3
4
5
2
3
4
5
<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>
<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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?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();
}
?>
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();
}
?>
Ward:
Codetags aangepast.
Gewijzigd op 31/05/2016 13:45:14 door Ward van der Put
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().
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.
Gewijzigd op 31/05/2016 13:53:12 door Ward van der Put
het werkt, bedankt voor info.