Hulp met inloggen
Code (php)
signup.inc.php
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
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
<?php
if (isset($_POST['signup-submit'])){
require 'dbh.inc.php';
$username = $_POST['uid'];
$email = $_POST['mail'];
$password = $_POST['pwd'];
$passwordRepeat = $_POST['pwd-repeat'];
if(empty($username)||empty($email)||empty($password)||empty($passwordRepeat))
{
header ("Location: ../signup.php?error=emptyfields&uid=".$username."&mail=".$email);
exit();
}
else if(!filter_var ($email, FILTER_VALIDATE_EMAIL && !preg_match("/^[a-zA-Z0-9]$*/", $username)))
{
header ("Location: ../signup.php?error=invalidmailuid=");
exit();
}
else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
header ("Location: ../signup.php?error=invalidmail&uid=".$username);
exit();
}
else if(!pragematch("/^[a-zA-Z0-9]*$/", $username))
{
header ("Location: ../signup.php?error=invaliduid&mail=".$email);
exit();
}
else if ($password!==$passwordRepeat)
{
header ("Location: ../signup.php?error=password&uid=".$username."&mail=".$email);
exit();
}
else
{
$sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
$stmt = mysqli_stmt_init($conn);
if(!mysql_stmt_prepare($stmt, $sql))
{
header("Location: ../signup.php?error=sqlerror");
exit();
}
else
{
mysql_stmt_bind_param($stmt, "s", $username);
mysql_stmt_execute($stmt);
mysql_stmt_store_result($stmt);
$resultCheck = mysql_stmt_num_rows();
if($resultCheck>0)
{
header("Location: ../signup.php?error=usertaken".$email);
exit();
}
else
{
$sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES(?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if(!mysql_stmt_prepare($stmt, $sql))
{
header("Location: ../signup.php?error=sqlerror");
exit();
}
else
{
$hashedPwd = password_hash($password, PASSWORD_DEFAULT);
mysql_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
mysql_stmt_execute($stmt);
header("Location: ../signup.php?signup=succes");
exit();
}
}
}
}
mysql_stmt_close($stmt);
mysql_close($conn);
}
else {
header('Location: ../signup.php');
exit();
}
?>
if (isset($_POST['signup-submit'])){
require 'dbh.inc.php';
$username = $_POST['uid'];
$email = $_POST['mail'];
$password = $_POST['pwd'];
$passwordRepeat = $_POST['pwd-repeat'];
if(empty($username)||empty($email)||empty($password)||empty($passwordRepeat))
{
header ("Location: ../signup.php?error=emptyfields&uid=".$username."&mail=".$email);
exit();
}
else if(!filter_var ($email, FILTER_VALIDATE_EMAIL && !preg_match("/^[a-zA-Z0-9]$*/", $username)))
{
header ("Location: ../signup.php?error=invalidmailuid=");
exit();
}
else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
header ("Location: ../signup.php?error=invalidmail&uid=".$username);
exit();
}
else if(!pragematch("/^[a-zA-Z0-9]*$/", $username))
{
header ("Location: ../signup.php?error=invaliduid&mail=".$email);
exit();
}
else if ($password!==$passwordRepeat)
{
header ("Location: ../signup.php?error=password&uid=".$username."&mail=".$email);
exit();
}
else
{
$sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
$stmt = mysqli_stmt_init($conn);
if(!mysql_stmt_prepare($stmt, $sql))
{
header("Location: ../signup.php?error=sqlerror");
exit();
}
else
{
mysql_stmt_bind_param($stmt, "s", $username);
mysql_stmt_execute($stmt);
mysql_stmt_store_result($stmt);
$resultCheck = mysql_stmt_num_rows();
if($resultCheck>0)
{
header("Location: ../signup.php?error=usertaken".$email);
exit();
}
else
{
$sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES(?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if(!mysql_stmt_prepare($stmt, $sql))
{
header("Location: ../signup.php?error=sqlerror");
exit();
}
else
{
$hashedPwd = password_hash($password, PASSWORD_DEFAULT);
mysql_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
mysql_stmt_execute($stmt);
header("Location: ../signup.php?signup=succes");
exit();
}
}
}
}
mysql_stmt_close($stmt);
mysql_close($conn);
}
else {
header('Location: ../signup.php');
exit();
}
?>
Zie bovenstaande code. Ik kan niet inloggen
Wie kan me helpen??
Gewijzigd op 27/03/2021 21:58:44 door - Ariën -
Wat doe je, en wat gebeurt er precies?
Zet ook je error reporting eens wat hoger door dit bovenaan te plaatsen:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>
Ik vermoed dat pragematch een typfout is, en dat dit preg_match moet zijn. Als je de error reporting aan zet, dan zal je hier wel een foutmelding over moeten krijgen.
Gewijzigd op 27/03/2021 22:02:27 door - Ariën -
Signup: http://localhost:8080/signup.php?error=emptyfields&uid=ed1&mail=edkloptphp@mail.com
Login: http://localhost:8080/index.php?error=sqlerror
preg_match heb ik aangepast. Dat was inderdaad een tikfout!
CREATE TABLE users (
idUsers int(11) AUTO_INCREMENT PRIMARY KEY NOT NULL,
uidUsers TINYTEXT NOT NULL,
emailUsers TINYTEXT NOT NULL,
pwdUsers LONGTEXT NOT NULL
);
Om de tabel in PHPmyadmin aan te maken.
Uiteraard gedaan maar krijg geen gebruikers in de database!
Uiteraard kunnen we niet op je localhost kijken, als je daar op doelt.
Trouwens, waarom zou je persoonlijke gegevens in je URL meegeven?
Gewijzigd op 28/03/2021 12:38:46 door - Ariën -
Ik krijg geen foutmeldingen, maar krijg niks in de database toegevoegd.
Haal die location redirect op lijn 13 even tijdelijk weg, en kijk eens met print_r($_POST); wat er in je POST-request staat.
Uiteindelijk is het ook raadzaam om de gebruikersnaam en mailadres uit die redirect te halen. Waarom zou je die gebruiken?
Persoonlijk ben ik meer van het aangeven van welke validaties er mislukken, in plaats van een globale foutmelding waarbij de gebruiker het maar opnieuw moet proberen zonder te weten wat er mis is.
Gewijzigd op 28/03/2021 12:56:06 door - Ariën -
Quote:
maar krijg niks in de database toegevoegd.
Je maakt wel verbinding met de server, maar je geeft geen database op om te gebruiken.
Vergelijk :
https://www.w3schools.com/php/func_mysqli_connect.asp
inloggen lukt nu wel maar de wachtwoorden zijn nog steeds zichtbaar. De code tot nog toe:
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
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">
<head>
<title>Registreren</title>
</head>
<body>
<form method="post">
Gebruiker : <input type="text" name="uidGebruiker" placeholder="Gebruiker"><br />
E-mail : <input type="text" name="emailGebruiker" placeholder="E-mail" /><br />
Wachtoord: <input type="password" name="pwdGebruiker" placeholder= "Wachtwoord" /><br />
Herhaal wachtoord: <input type="password" name="pwdherhaal" placeholder="Herhaal wachtwoord"><br>
<input type="submit" name="submit" value="verstuur" />
</form>
<?php
if (!empty($_POST['submit']))
{
include ("connectDB.php");
//query opstellen
$Gebruiker=$_POST['uidGebruiker'];
$Email=$_POST['emailGebruiker'];
$Wachtwoord=$_POST['pwdGebruiker'];
$WachtwoordHerhaal=$_POST['pwdherhaal'];
$query = "INSERT INTO gebruikers
(uidGebruiker, emailGebruiker, pwdGebruiker, pwdherhaal)
VALUES
('$Gebruiker', '$Email','$Wachtwoord','$WachtwoordHerhaal')";
//query runnen
$result=mysqli_query($conn, $query) or die(mysqli_error($conn));
}
?>
</div>
</body>
</html>
<html lang="nl">
<head>
<title>Registreren</title>
</head>
<body>
<form method="post">
Gebruiker : <input type="text" name="uidGebruiker" placeholder="Gebruiker"><br />
E-mail : <input type="text" name="emailGebruiker" placeholder="E-mail" /><br />
Wachtoord: <input type="password" name="pwdGebruiker" placeholder= "Wachtwoord" /><br />
Herhaal wachtoord: <input type="password" name="pwdherhaal" placeholder="Herhaal wachtwoord"><br>
<input type="submit" name="submit" value="verstuur" />
</form>
<?php
if (!empty($_POST['submit']))
{
include ("connectDB.php");
//query opstellen
$Gebruiker=$_POST['uidGebruiker'];
$Email=$_POST['emailGebruiker'];
$Wachtwoord=$_POST['pwdGebruiker'];
$WachtwoordHerhaal=$_POST['pwdherhaal'];
$query = "INSERT INTO gebruikers
(uidGebruiker, emailGebruiker, pwdGebruiker, pwdherhaal)
VALUES
('$Gebruiker', '$Email','$Wachtwoord','$WachtwoordHerhaal')";
//query runnen
$result=mysqli_query($conn, $query) or die(mysqli_error($conn));
}
?>
</div>
</body>
</html>
Je ziet het lukt wel met inloggen maar de wachtwoorden blijven zichtbaar! Die wil ik uiteraard versleutelen.
Vraag 1 hoe moet ik de wachtwoorden versleutelen??
Vraag 2 is van een andere orde. Ik nog een tabel gemaakt met plantennrijkgegevens:
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
<html lang="nl">
<head>
<title>invoeren Plantenrijk-gegevens</title>
<meta charset=tf-8">
</head>
<body>
<form method="post">
<p>Vul hieronder de plantenrijkgevens in:</p>
<p><input type = "text" size = "25" name = "plantenrijk"></p>
<p><input type = "submit" value = "Voeg toe"></p>
</form>
<?php
// Connectie met de database maken
include("connectdb.php");
if (!empty($_POST['submit']))
{
include ("connectDB.php");
//query opstellen
$Plantenrijk=$_POST['plantenrijk'];
$query = "INSERT INTO plantenrijk
(Beschrijving)
VALUES
('$Planterijk')";
//query runnen
$result=mysqli_query($conn, $query) or die(mysqli_error($conn));
}
?>
</body>
</html>
<head>
<title>invoeren Plantenrijk-gegevens</title>
<meta charset=tf-8">
</head>
<body>
<form method="post">
<p>Vul hieronder de plantenrijkgevens in:</p>
<p><input type = "text" size = "25" name = "plantenrijk"></p>
<p><input type = "submit" value = "Voeg toe"></p>
</form>
<?php
// Connectie met de database maken
include("connectdb.php");
if (!empty($_POST['submit']))
{
include ("connectDB.php");
//query opstellen
$Plantenrijk=$_POST['plantenrijk'];
$query = "INSERT INTO plantenrijk
(Beschrijving)
VALUES
('$Planterijk')";
//query runnen
$result=mysqli_query($conn, $query) or die(mysqli_error($conn));
}
?>
</body>
</html>
Als ik hier gegevens wil invoeren lukt dat ook niet iemand hier een oplossing voor??
Groetjes
Ed
Edit:
Gewijzigd op 02/04/2021 17:36:05 door - Ariën -
Allereerst beveilig je jouw data niet tegen corruptie en SQL-injection. Je zou dus nooit 's-Hertogenbosch kunnen invullen, en iedereen met kwade bedoelingen kan je query naar eigen wens aanpassen. Dus pas mysqli_real_escape_string toe op je variabelen die je in je query gebruikt.
Over je wachtwoorden. Ik raad zelf aan om de wachtwoorden te hashen met password_hash, en bij een inlogcontrole met password_verify te controleren of de invoer gelijk is met wat er als hash in de database staat.
Verder gebruik je $Plantenrijk, maar gebruik je in je query opeens $Planterijk.
PHP kent niet het grammaticale groene boekje. Maar met menig goede editor zou je eigenlijk bij het uittypen van de variabele de juiste ervan al voorgeschoteld moeten krijgen.
En nog een puntje: waarom zou je een wachtwoord dubbel in de database willen opslaan?
Gewijzigd op 02/04/2021 15:25:40 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">
<head>
<title>Connectie</title>
<link rel="stylesheet" href="screen.css">
</head>
<body>
<?php
$host = "localhost";
$gebruiker = "root";
$wachtwoord = "usbw";
$database = "planten";
$conn = mysqli_connect($host, $gebruiker, $wachtwoord, $database )
or die("verbinding mislukt: ". mysqli_connect_error());
echo "Verbinden met database is gelukt!";
?>
</div>
</body>
</html>
<html lang="nl">
<head>
<title>Connectie</title>
<link rel="stylesheet" href="screen.css">
</head>
<body>
<?php
$host = "localhost";
$gebruiker = "root";
$wachtwoord = "usbw";
$database = "planten";
$conn = mysqli_connect($host, $gebruiker, $wachtwoord, $database )
or die("verbinding mislukt: ". mysqli_connect_error());
echo "Verbinden met database is gelukt!";
?>
</div>
</body>
</html>
Dit stuk hierboven gaat wel goed. Echter als ik bijv. Mossen wil invoeren met 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
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
<html lang="nl">
<head>
<title>invoeren Plantenrijk-gegevens</title>
<meta charset=tf-8">
</head>
<body>
<form method="post">
<p>Vul hieronder de plantenrijkgevens in:</p>
<p><input type = "text" size = "25" name = "plantenrijk"></p>
<p><input type = "submit" value = "Voeg toe"></p>
</form>
<?php
// Connectie met de database maken
include("connectDBplanten.php");
if (!empty($_POST['submit']))
{
include ("connectDBplanten.php");
//query opstellen
$Plantenrijk=$_POST['Beschrijving'];
$query = "INSERT INTO plantenrijk
(Beschrijving)
VALUES
('$Plantenrijk')";
//query runnen
$result=mysqli_query($conn, $query) or die(mysqli_error($conn));
}
?>
</body>
</html>
<head>
<title>invoeren Plantenrijk-gegevens</title>
<meta charset=tf-8">
</head>
<body>
<form method="post">
<p>Vul hieronder de plantenrijkgevens in:</p>
<p><input type = "text" size = "25" name = "plantenrijk"></p>
<p><input type = "submit" value = "Voeg toe"></p>
</form>
<?php
// Connectie met de database maken
include("connectDBplanten.php");
if (!empty($_POST['submit']))
{
include ("connectDBplanten.php");
//query opstellen
$Plantenrijk=$_POST['Beschrijving'];
$query = "INSERT INTO plantenrijk
(Beschrijving)
VALUES
('$Plantenrijk')";
//query runnen
$result=mysqli_query($conn, $query) or die(mysqli_error($conn));
}
?>
</body>
</html>
Vraag wat gaat hier niet goed??
Toevoeging op 02/04/2021 17:29:53:
ps Hoe kun je eigenlijk plaatjes posten?
Gewijzigd op 02/04/2021 17:36:41 door - Ariën -
Uiteraard dienen deze wel op internet te staan, je kan je uploaden bij bijvoorbeeld ImgBB
Over je probleem:
Jij doet dit: $_POST['Beschrijving']
Maar waar is je formulier-veld met de name 'beschrijving'?
Daarnaast adviseer ik om uiteraard netjes te escapen, zoals ik al eerder zei.
Gewijzigd op 02/04/2021 17:40:28 door - Ariën -
een paar plaatjes!!
En de code tot nu toe:
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
<html lang="nl">
<head>
<title>invoeren Plantenrijk-gegevens</title>
<meta charset=tf-8">
</head>
<body>
<form method="post">
<p>Vul hieronder de plantenrijkgevens in:</p>
<p><input type = "text" size = "25" name = "Beschrijving"></p>
<p><input type = "submit" value = "Voeg toe"></p>
</form>
<?php
// Connectie met de database maken
include("connectDBplanten.php");
if (!empty($_POST['submit']))
{
include ("connectDBplanten.php");
//query opstellen
$Plantenrijk=$_POST['Beschrijving'];
$query = "INSERT INTO plantenrijk
(Beschrijving)
VALUES
('$Plantenrijk')";
//query runnen
$result=mysqli_query($conn, $query) or die(mysqli_error($conn));
}
?>
</body>
</html>
<head>
<title>invoeren Plantenrijk-gegevens</title>
<meta charset=tf-8">
</head>
<body>
<form method="post">
<p>Vul hieronder de plantenrijkgevens in:</p>
<p><input type = "text" size = "25" name = "Beschrijving"></p>
<p><input type = "submit" value = "Voeg toe"></p>
</form>
<?php
// Connectie met de database maken
include("connectDBplanten.php");
if (!empty($_POST['submit']))
{
include ("connectDBplanten.php");
//query opstellen
$Plantenrijk=$_POST['Beschrijving'];
$query = "INSERT INTO plantenrijk
(Beschrijving)
VALUES
('$Plantenrijk')";
//query runnen
$result=mysqli_query($conn, $query) or die(mysqli_error($conn));
}
?>
</body>
</html>
Iets toevoegen lukt nog steeds niet. Wat doe ik toch fout??
Zo werkt de img-tag niet. ;-)
Zie hier de opmaakcodes.
Over je probleem:
Wat lukt er dan niet aan?
Wat gebeurt er wel? Zie je errors?
Wat zie je als je $query echo'ed?
Wat zie je als je $_POST door print_r haalt?
Gewijzigd op 02/04/2021 19:48:03 door - Ariën -
Regel 16 en 20.
1 maal is genoeg.
In connectDBplanten.php heb je alleen regels 8 - 18 nodig.
Het is geen webpagina.
Zo beter??
als ik de link kopieer doet ie het!
Met de echo's:
Hij geeft dus niks terug. Gebeurt er dan ook niks in de database??
Maar ik heb je net een aantal vragen gesteld, heb je daar al naar gekeken?
Het is gewoon een kwestie van debuggen.
Gewijzigd op 02/04/2021 20:28:37 door - Ariën -
Gelukt!!
Code (php)
1
2
3
4
5
2
3
4
5
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
// hier wordt alles uitgevoerd nadat je formulier verstuurd is.
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST") {
// hier wordt alles uitgevoerd nadat je formulier verstuurd is.
}
?>
Dan hoef je niet steeds te controleren op een bepaald submit-veld.
Gewijzigd op 02/04/2021 21:05:44 door - Ariën -