Inloggen
Nog een vraag
Met inloggen gebeurt het volgende:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<!DOCTYPE html>
<html>
<head>
<title>Inloggen</title>
</head>
<body>
<center>
<br>
<h1>Inloggen</h1>
<br>
<div style= "background-color: grey; width: 1000px">
<br>
<br>
<form action =# method="POST">
<div>
<label>Gebruikersnaam</label>
<input type="text" name="username" required placeholder="Gebruikersnaam">
</div>
<br>
<br>
<div>
<label>Password</label>
<input type="password" name="password1" required placeholder="Wachtwoord">
</div>
<br>
<br>
<div>
<input type="submit" value="Login">
<button><a href = "Create_user_admin.php">Nog geen account?</a></button>
</div>
</form>
<br>
</div>
</center>
</body>
</html>
<?php
session_start();
$host = "localhost";
$user = "root";
$password ="usbw";
$db = "login";
$data = mysqli_connect($host, $user, $password, $db);
if($data==false)
{
die ("Connection error");
}
if($_SERVER ["REQUEST_METHOD"]=="POST")
{
$username = $_POST["username"];
$password = $_POST["password1"];
$sql = "SELECT * FROM user WHERE username = '".$username."' AND password1 = '".$password."'";
$result = mysqli_query($data,$sql);
if( $result = mysqli_query($data,$sql) )
{
$row = mysqli_fetch_array($result);
if( $row["usertype"]=="user" )
{
$_SESSION["username"] = $username;
header ("location:userhome.php");
}
elseif($row["usertype"]=="admin")
{
$_SESSION["username"] = $username;
header ("location:adminhome.php");
}
else
{
echo "username or password incorrect";
}
} else
{
echo "De query is niet gelukt: ".mysqli_error($data);
}
}
?>
<html>
<head>
<title>Inloggen</title>
</head>
<body>
<center>
<br>
<h1>Inloggen</h1>
<br>
<div style= "background-color: grey; width: 1000px">
<br>
<br>
<form action =# method="POST">
<div>
<label>Gebruikersnaam</label>
<input type="text" name="username" required placeholder="Gebruikersnaam">
</div>
<br>
<br>
<div>
<label>Password</label>
<input type="password" name="password1" required placeholder="Wachtwoord">
</div>
<br>
<br>
<div>
<input type="submit" value="Login">
<button><a href = "Create_user_admin.php">Nog geen account?</a></button>
</div>
</form>
<br>
</div>
</center>
</body>
</html>
<?php
session_start();
$host = "localhost";
$user = "root";
$password ="usbw";
$db = "login";
$data = mysqli_connect($host, $user, $password, $db);
if($data==false)
{
die ("Connection error");
}
if($_SERVER ["REQUEST_METHOD"]=="POST")
{
$username = $_POST["username"];
$password = $_POST["password1"];
$sql = "SELECT * FROM user WHERE username = '".$username."' AND password1 = '".$password."'";
$result = mysqli_query($data,$sql);
if( $result = mysqli_query($data,$sql) )
{
$row = mysqli_fetch_array($result);
if( $row["usertype"]=="user" )
{
$_SESSION["username"] = $username;
header ("location:userhome.php");
}
elseif($row["usertype"]=="admin")
{
$_SESSION["username"] = $username;
header ("location:adminhome.php");
}
else
{
echo "username or password incorrect";
}
} else
{
echo "De query is niet gelukt: ".mysqli_error($data);
}
}
?>
met user en 1234 inloggen gaat wel, (dan kom je in he mainprogramma terecht) maar met admin en 1234 gaat niet (je zou dan dan in het admingedeelte terecht moeten komen). wat gaat hier weer mis??
Waarom het niet werkt is iets wat je zelf uit moet zoeken door het te debuggen.
We kunnen immers niet in je database kijken.
Misschien mis je de role admin in het veld usertype?
Een paar opmerkingen:
- Er mist beveiliging tegen SQL-injection. Een gebruiker met de naam Sjiek 'd Frique zal nooit kunnen inloggen. En daarnaast kan Jan en Alleman via [/i]OR 1=1[/i] eenvoudig inloggen. Snel oplossen dus....
- Je inloggegevens zijn onbeveiligd!!!
Zorg ervoor dat je de wachtwoorden netjes hashed met password_hash en controleert met password_verify.
- Vanwaar twee wachtwoord-velden in je database?
- Het statement van 'username of password incorrect' klopt niet. dit hangt niet van je usertype af. Controleer met mysqli_num_rows() of een record bestaat.
Gewijzigd op 29/11/2021 19:41:26 door - Ariën -
Hoi Arien het geheel draait lokaal is niet het net bestemd!, maar hashen wil ik op een later tijdstip doen!
Net als SQL-injection preventie.
Toevoeging op 29/11/2021 20:50:56:
Probleem is gefixt!
Maar hoe moet je plaatjes uploaden??
www.imgbb.com.
Hier faciliteren wij geen upload-systeem.
Dat kan via Hier faciliteren wij geen upload-systeem.
Thanks!
En wat gebeurt er vervolgens als ik dan in de browser de url adminhome.php typ?
Zo te zien sla je nergens iets op over de role / rechten / usertype in je session. Dus kennelijk controleer je deaar verder niet meer op?