Undefined variable: wachtwoord
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
// Controleer het wachtwoord:
$wachtwoord = trim($_POST['wachtwoord']);
if (empty($wachtwoord)) {
$errors[] = 'Wachtwoord mag niet leeg zijn';
}
if (empty($errors)) {
$hashed_passcode = password_hash($wachtwoord, PASSWORD_DEFAULT);
}
$wachtwoord = trim($_POST['wachtwoord']);
if (empty($wachtwoord)) {
$errors[] = 'Wachtwoord mag niet leeg zijn';
}
if (empty($errors)) {
$hashed_passcode = password_hash($wachtwoord, PASSWORD_DEFAULT);
}
Bij het uitvoeren van bovenstaande code, wanneer het wachtwoord wordt gehasht, krijg ik telkens de melding: Undefined variable: wachtwoord.
En ik heb alles gecontroleerd op fouten, maar ik kom er niet uit.
Overigens; dit is zeg maar versie 1 van code en later ga ik het nog meer beveilig inbouwen, maar ik loop nu vast op deze foutmelding en kan niet verder.
Blijkbaar bestaat $_POST['wachtwoord'] niet.
- Ariën - op 11/01/2021 23:50:41:
Undefined index zal je bedoelen?
Blijkbaar bestaat $_POST['wachtwoord'] niet.
Blijkbaar bestaat $_POST['wachtwoord'] niet.
Nee ik bedoel geen undefined index.
de volledige foutmelding:
An error occurred in script 'register.php' on line 39: Undefined variable: wachtwoord
Ikzelf ben echt verbaasd, want alles bestaat en toch krijg ik deze foutmelding...
Hieronder zie je pagina register.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
84
85
86
87
88
89
90
91
92
93
94
95
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
<?php
include('Inc/config.inc.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$errors = array();
// Controleer de voornaam:
$voornaam= trim($_POST['voornaam']);
if (empty($voornaam)) {
$errors[] = 'Voornaam mag niet leeg zijn!';
}
// Controleer de achternaam:
$achternaam= trim($_POST['achternaam']);
if (empty($achternaam)) {
$errors[] = 'Achternaam mag niet leeg zijn!';
}
// Controleer de bedrijfsnaam:
$bedrijfsnaam = trim($_POST['bedrijfsnaam']);
if (empty($bedrijfsnaam)) {
$errors[] = 'bedrijfsnaam mag niet leeg zijn';
}
// Controleer het mailadres:
$mailadres = trim($_POST['mailadres']);
if (empty($mailadres)) {
$errors[] = 'Mailadres mag niet leeg zijn';
}
// Controleer het wachtwoord:
$wachtwoord = trim($_POST['wachtwoord']);
if (empty($wachtwoord)) {
$errors[] = 'Wachtwoord mag niet leeg zijn';
}
// Controleer de functie:
$functie = trim($_POST['functie']);
if (empty($functie)) {
$errors[] = 'Functie mag niet leeg zijn';
}
}
if (empty($errors)) {
$hashed_passcode = password_hash($wachtwoord, PASSWORD_DEFAULT);
require('Inc/db-connection.php');
$query = "INSERT INTO Behandelaars (BehandelaarID, Voornaam, Achternaam, Bedrijfsnaam , Mailadres , Wachtwoord, Functie, DatumAanmaak )";
$query.= "VALUES ('',?, ?,?, ?, ?, ?, NOW())";
$q = mysqli_stmt_init($dbc);
mysqli_stmt_prepare($q,$query);
mysqli_stmt_bind_param($q, 'ssssss', $voornaam, $achternaam, $bedrijfsnaam, $mailadres, $hashed_passcode,$functie);
mysqli_stmt_execute($q);
if (mysqli_stmt_affected_rows($q) == 1){
header ("Location: index.php");
exit();
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="Inc/main.css">
<title>Registreer pagina</title>
</head>
<body>
<div class="container">
<div class="regform">
<form action="register.php" method="POST">
<fieldset><legend>Registreer formulier</legend>
<label for="Voornaam">Voornaam</label><br />
<input type="text" id="voornaam" name="voornaam" value="<?php if (isset($_POST['voornaam']))echo htmlspecialchars($_POST['voornaam'], ENT_QUOTES); ?>" required><br />
<label for="achternaam">Achternaam</label><br />
<input type="text" id="achternaam" name="achternaam" value="<?php if (isset($_POST['achternaam']))echo htmlspecialchars($_POST['achternaam'], ENT_QUOTES); ?>" required><br />
<label for="bedrijfsnaam">Bedrijfsnaam</label><br />
<input type="text" id="bedrijfsnaam" name="bedrijfsnaam" value="<?php if (isset($_POST['bedrijfsnaam']))echo htmlspecialchars($_POST['bedrijfsnaam'], ENT_QUOTES); ?>" required><br />
<label for="Mailadres">Mailadres</label><br />
<input type="text" id="mailadres" name="mailadres" value="<?php if (isset($_POST['mailadres']))echo htmlspecialchars($_POST['mailadres'], ENT_QUOTES); ?>" required><br />
<label for="wachtwoord">Wachtwoord</label><br />
<input type="password" id="wachtwoord" name="wachtwoord" value="<?php if (isset($_POST['wachtwoord']))echo htmlspecialchars($_POST['wachtwoord'], ENT_QUOTES); ?>" required><br />
<label for="functie">Functie</label><br />
<input type="text" id="functie" name="functie" value="<?php if (isset($_POST['functie']))echo htmlspecialchars($_POST['functie'], ENT_QUOTES); ?>" required><br />
<input type="submit" value="Verzenden">
<p>Al een geregistreerd account?<a href="login.php">Registreer</a></p>
</fieldset>
</form>
</div>
<div class="regformplaatje"></div>
</div>
</body>
</html>
include('Inc/config.inc.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$errors = array();
// Controleer de voornaam:
$voornaam= trim($_POST['voornaam']);
if (empty($voornaam)) {
$errors[] = 'Voornaam mag niet leeg zijn!';
}
// Controleer de achternaam:
$achternaam= trim($_POST['achternaam']);
if (empty($achternaam)) {
$errors[] = 'Achternaam mag niet leeg zijn!';
}
// Controleer de bedrijfsnaam:
$bedrijfsnaam = trim($_POST['bedrijfsnaam']);
if (empty($bedrijfsnaam)) {
$errors[] = 'bedrijfsnaam mag niet leeg zijn';
}
// Controleer het mailadres:
$mailadres = trim($_POST['mailadres']);
if (empty($mailadres)) {
$errors[] = 'Mailadres mag niet leeg zijn';
}
// Controleer het wachtwoord:
$wachtwoord = trim($_POST['wachtwoord']);
if (empty($wachtwoord)) {
$errors[] = 'Wachtwoord mag niet leeg zijn';
}
// Controleer de functie:
$functie = trim($_POST['functie']);
if (empty($functie)) {
$errors[] = 'Functie mag niet leeg zijn';
}
}
if (empty($errors)) {
$hashed_passcode = password_hash($wachtwoord, PASSWORD_DEFAULT);
require('Inc/db-connection.php');
$query = "INSERT INTO Behandelaars (BehandelaarID, Voornaam, Achternaam, Bedrijfsnaam , Mailadres , Wachtwoord, Functie, DatumAanmaak )";
$query.= "VALUES ('',?, ?,?, ?, ?, ?, NOW())";
$q = mysqli_stmt_init($dbc);
mysqli_stmt_prepare($q,$query);
mysqli_stmt_bind_param($q, 'ssssss', $voornaam, $achternaam, $bedrijfsnaam, $mailadres, $hashed_passcode,$functie);
mysqli_stmt_execute($q);
if (mysqli_stmt_affected_rows($q) == 1){
header ("Location: index.php");
exit();
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="Inc/main.css">
<title>Registreer pagina</title>
</head>
<body>
<div class="container">
<div class="regform">
<form action="register.php" method="POST">
<fieldset><legend>Registreer formulier</legend>
<label for="Voornaam">Voornaam</label><br />
<input type="text" id="voornaam" name="voornaam" value="<?php if (isset($_POST['voornaam']))echo htmlspecialchars($_POST['voornaam'], ENT_QUOTES); ?>" required><br />
<label for="achternaam">Achternaam</label><br />
<input type="text" id="achternaam" name="achternaam" value="<?php if (isset($_POST['achternaam']))echo htmlspecialchars($_POST['achternaam'], ENT_QUOTES); ?>" required><br />
<label for="bedrijfsnaam">Bedrijfsnaam</label><br />
<input type="text" id="bedrijfsnaam" name="bedrijfsnaam" value="<?php if (isset($_POST['bedrijfsnaam']))echo htmlspecialchars($_POST['bedrijfsnaam'], ENT_QUOTES); ?>" required><br />
<label for="Mailadres">Mailadres</label><br />
<input type="text" id="mailadres" name="mailadres" value="<?php if (isset($_POST['mailadres']))echo htmlspecialchars($_POST['mailadres'], ENT_QUOTES); ?>" required><br />
<label for="wachtwoord">Wachtwoord</label><br />
<input type="password" id="wachtwoord" name="wachtwoord" value="<?php if (isset($_POST['wachtwoord']))echo htmlspecialchars($_POST['wachtwoord'], ENT_QUOTES); ?>" required><br />
<label for="functie">Functie</label><br />
<input type="text" id="functie" name="functie" value="<?php if (isset($_POST['functie']))echo htmlspecialchars($_POST['functie'], ENT_QUOTES); ?>" required><br />
<input type="submit" value="Verzenden">
<p>Al een geregistreerd account?<a href="login.php">Registreer</a></p>
</fieldset>
</form>
</div>
<div class="regformplaatje"></div>
</div>
</body>
</html>
Gewijzigd op 12/01/2021 11:37:26 door Mohamed nvt
Bestaat $_POST['wachtwoord'] wel?
Waar zie je die foutmelding? In je editor? Of bij uitvoer van het script in de browser?
Gewijzigd op 12/01/2021 12:04:48 door - Ariën -
- Ariën - op 12/01/2021 12:04:08:
Met de eerste code kreeg ik toch echt een 'undefined index'.
Bestaat $_POST['wachtwoord'] wel?
Waar zie je die foutmelding? In je editor? Of bij uitvoer van het script in de browser?
Bestaat $_POST['wachtwoord'] wel?
Waar zie je die foutmelding? In je editor? Of bij uitvoer van het script in de browser?
Het is toch vreemd dat je een undefined index krijgt, want $_POST['wachtwoord'] bestaat gewoon in het formulier.
Bij het opvragen van pagina register.php krijg ik direct deze melding, dus ik heb nog niet geklikt op de knop
Die post niet vanzelf, dus jouw probleem kan ik nog niet reproduceren.
Anyway, waar komt 'An error occured' dan vandaan? Heb je een eigen error handler?
Gewijzigd op 12/01/2021 12:12:07 door - Ariën -
Zodra ik de error handler werkt, dan wordt wel een user aangemaakt in DB.
Maar toch wil ik graag mijn eigen error handler gebruiken.
Mijn eigen error handler is:
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
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
<?php # Script 18.3 - config.inc.php
/* This script:
* - define constants and settings
* - dictates how errors are handled
* - defines useful functions
*/
// Document who created this site, when, why, etc.
// ********************************** //
// ************ SETTINGS ************ //
// Flag variable for site status:
define('LIVE', TRUE);
// Admin contact address:
define('EMAIL', '[email protected]');
// Site URL (base for all redirections):
define ('BASE_URL', 'http://www.mijndomein.nl');
// Location of the MySQL connection script:
define ('MYSQL', 'Inc/db-connection.php');
// Adjust the time zone for PHP 5.1 and greater:
date_default_timezone_set ('Europe/Amsterdam');
// ************ SETTINGS ************ //
// ********************************** //
// ****************************************** //
// ************ ERROR MANAGEMENT ************ //
// Create the error handler:
function my_error_handler ($e_number, $e_message, $e_file, $e_line, $e_vars) {
// Build the error message:
$message = "An error occurred in script '$e_file' on line $e_line: $e_message\n";
// Add the date and time:
$message .= "Date/Time: " . date('n-j-Y H:i:s') . "\n";
if (!LIVE) { // Development (print the error).
// Show the error message:
echo '<div class="error">' . nl2br($message);
// Add the variables and a backtrace:
echo '<pre>' . print_r ($e_vars, 1) . "\n";
debug_print_backtrace();
echo '</pre></div>';
} else { // Don't show the error:
// Send an email to the admin:
$body = $message . "\n" . print_r ($e_vars, 1);
mail(EMAIL, 'Site Error!', $body, 'From: [email protected]');
// Only print an error message if the error isn't a notice:
/*if ($e_number != E_NOTICE) {
echo '<div class="error">A system error occurred. We apologize for the inconvenience.</div><br />';
}*/
} // End of !LIVE IF.
} // End of my_error_handler() definition.
// Use my error handler:
set_error_handler ('my_error_handler');
// ************ ERROR MANAGEMENT ************ //
// ****************************************** //
/* This script:
* - define constants and settings
* - dictates how errors are handled
* - defines useful functions
*/
// Document who created this site, when, why, etc.
// ********************************** //
// ************ SETTINGS ************ //
// Flag variable for site status:
define('LIVE', TRUE);
// Admin contact address:
define('EMAIL', '[email protected]');
// Site URL (base for all redirections):
define ('BASE_URL', 'http://www.mijndomein.nl');
// Location of the MySQL connection script:
define ('MYSQL', 'Inc/db-connection.php');
// Adjust the time zone for PHP 5.1 and greater:
date_default_timezone_set ('Europe/Amsterdam');
// ************ SETTINGS ************ //
// ********************************** //
// ****************************************** //
// ************ ERROR MANAGEMENT ************ //
// Create the error handler:
function my_error_handler ($e_number, $e_message, $e_file, $e_line, $e_vars) {
// Build the error message:
$message = "An error occurred in script '$e_file' on line $e_line: $e_message\n";
// Add the date and time:
$message .= "Date/Time: " . date('n-j-Y H:i:s') . "\n";
if (!LIVE) { // Development (print the error).
// Show the error message:
echo '<div class="error">' . nl2br($message);
// Add the variables and a backtrace:
echo '<pre>' . print_r ($e_vars, 1) . "\n";
debug_print_backtrace();
echo '</pre></div>';
} else { // Don't show the error:
// Send an email to the admin:
$body = $message . "\n" . print_r ($e_vars, 1);
mail(EMAIL, 'Site Error!', $body, 'From: [email protected]');
// Only print an error message if the error isn't a notice:
/*if ($e_number != E_NOTICE) {
echo '<div class="error">A system error occurred. We apologize for the inconvenience.</div><br />';
}*/
} // End of !LIVE IF.
} // End of my_error_handler() definition.
// Use my error handler:
set_error_handler ('my_error_handler');
// ************ ERROR MANAGEMENT ************ //
// ****************************************** //
En wat gebeurt er zonder die errorhandler ?
De eerste keer dat de pagina wordt aangeroepen en het formulier wordt getoond, is het een GET-request en niet een POST-request (het formulier wordt namelijk niet verzonden). Met andere woorden, de variabele $wachtwoord wordt op dat moment dus niet aangemaakt.
Echter, ná de bovengenoemde controle - op regel 39 - probeer jij wel om die variabele te gebruiken terwijl die niet is aangemaakt: $hashed_passcode = password_hash($wachtwoord, PASSWORD_DEFAULT);
Pas als je het formulier verstuurt, wordt de variabele aangemaakt. Wat je dus moet doen is de overige PHP-code ook in het if-statement plaatsen.
Oplossing:
Verplaats de accolade op regel 37 (in het voorbeeld hierboven) naar regel 52.
Gewijzigd op 12/01/2021 13:38:25 door Ozzie PHP
Blijkbaar moest het in de if statement.