Inloggen
Ik ben weer net met PHP begonnen. Ik wil een site maken om in te loggen maar krijg de volgende foutmelding:
Warning: mysql_connect(): Access denied for user 'root'@'localhost' (using password: NO) in C:\USB WebServer\root\login.php on line 8
Connection error
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
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
<?php
$host = "localhost" ;
$user = "root";
$password ="";
$db = "user";
$data = mysql_connect($host, $user, $password, $db);
if($data==false)
{
die ("Connection error");
}
?>
<!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>Wachtwoord</label>
<input type="text" name="username" required>
</div>
<br>
<br>
<div>
<label>Password</label>
<input type="password" name="password" required>
</div>
<br>
<br>
<div>
<input type="submit" value="Login">
</div>
</form>
<br>
</div>
</center>
$host = "localhost" ;
$user = "root";
$password ="";
$db = "user";
$data = mysql_connect($host, $user, $password, $db);
if($data==false)
{
die ("Connection error");
}
?>
<!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>Wachtwoord</label>
<input type="text" name="username" required>
</div>
<br>
<br>
<div>
<label>Password</label>
<input type="password" name="password" required>
</div>
<br>
<br>
<div>
<input type="submit" value="Login">
</div>
</form>
<br>
</div>
</center>
Wat doe ik fout?
Los van de fout gebruik je ook de oude mysql_xxxxx() functies. In PHP 7 zijn deze verwijderd, dus op veel hostings zal dit script niet meer werken. Je kan het beste de MySQLi functies gebruiken.
Kan niet eens een wachtwoord of gebruikersnaam invoeren. Krijg menteen de foutmelding. Van MySQL heb ik MySQLi gemaakt!
Dus de vraag blijft nog steeds waarom werkt het niet?
Groetjes
Ed
Bij USB Webserver is de username: root, en het wachtwoord standaard usbw.
Ik ben benieuwd op welke PHP-versie dit draait, want ik vind het frappant dat de oude functies nog werken.
Zelf vind ik XAMPP een beter up-to-date alternatief.
De versie kan je bekijken met dit script, en noem dit phpinfo.php:
Bij uitvoer via je browser zie je bovenaan het versienummer.
Gewijzigd op 04/11/2021 13:00:51 door - Ariën -
PHP Logo
PHP Version 5.4.17
Groetjes
Ed
Neemt niet weg dat het onbruikbaar is, maar je zal wel snel tegen drempels aanlopen als je intensief PHP gaat gebruiken. Ik raad aan om XAMPP te kiezen.
Gewijzigd op 04/11/2021 13:12:07 door - Ariën -
Kan je die hier ook delen tussen code-tags voordat de afbeelding opeens verdwijnt?
Gewijzigd op 04/11/2021 20:32:49 door - Ariën -
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
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
<?php
$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["password"];
$sql = "SELECT * FROM login WHERE username= ' ".$username. "' AND password= ' ".$password. " '";
$result = mysqli_query($data,$sql);
$row = mysqli_fetch_array($result);
if($row["usertype"]=="user")
{
echo "user";
}
elseif($row["usertype"]=="admin")
{
echo "admin";
}
else
{
echo "username or password incorrect";
}
}
?>
<!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>Wachtwoord</label>
<input type="text" name="username" required>
</div>
<br>
<br>
<div>
<label>Password</label>
<input type="password" name="password" required>
</div>
<br>
<br>
<div>
<input type="submit" value="Login">
</div>
</form>
<br>
</div>
</center>
$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["password"];
$sql = "SELECT * FROM login WHERE username= ' ".$username. "' AND password= ' ".$password. " '";
$result = mysqli_query($data,$sql);
$row = mysqli_fetch_array($result);
if($row["usertype"]=="user")
{
echo "user";
}
elseif($row["usertype"]=="admin")
{
echo "admin";
}
else
{
echo "username or password incorrect";
}
}
?>
<!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>Wachtwoord</label>
<input type="text" name="username" required>
</div>
<br>
<br>
<div>
<label>Password</label>
<input type="password" name="password" required>
</div>
<br>
<br>
<div>
<input type="submit" value="Login">
</div>
</form>
<br>
</div>
</center>
mysqli_error en kijk dan eens naar wat je mysqli_query doet.
Kijk eens naar IK snap hem niet. WAt ik begrijp is dat er 0 of 1 uit moet komen. En dat komt er niet. Kun je iets uit de doek den doen?
Groetjes
Ed
Dus gebruik eens mysqli_error($data).
Code (php)
1
2
3
2
3
if ($result = mysqli_query($con, "SELECT * FROM Persons")) {
echo "Returned rows are: " . mysqli_num_rows($result);
}
echo "Returned rows are: " . mysqli_num_rows($result);
}
https://www.w3schools.com/php/func_mysqli_query.asp
Het blijft voor mij een raadseltje. Weet jij het antwoord?
Groetjes
Ed
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if( $result = mysqli_query($data,$sql) )
{
$row = mysqli_fetch_array($result);
if( $row["usertype"]=="user" )
{
echo "user";
}
elseif($row["usertype"]=="admin")
{
echo "admin";
}
else
{
echo "username or password incorrect";
}
} else {
echo "De query is niet gelukt: ".mysqli_error($data);
}
{
$row = mysqli_fetch_array($result);
if( $row["usertype"]=="user" )
{
echo "user";
}
elseif($row["usertype"]=="admin")
{
echo "admin";
}
else
{
echo "username or password incorrect";
}
} else {
echo "De query is niet gelukt: ".mysqli_error($data);
}
Kort gezegd kijk je hier of de query uitgevoerd kan worden, en in dat geval toon je de data. En als dat niet lukt (else), dan toon je een nette foutmelding vanuit MySQL.
user is een gereserveerd woord dacht ik maar los daarvan je gebruikt wel de juiste database maar je tabel is niet de juiste. Je hebt geen tabel login. Je tabel is user! lijn 20.
Zorg altijd voor foutafhandeling in queries.
En of het password in de database een spatie voor en achteraan heeft.
En daarnaast is het wel zo netjes om dit uiteindelijk veilig te hashen met password_hash().