sessie gaat verloren na een redirect
Op de registratie pagina heb ik het volgende bovenaan:
Nadat een gebruiker zich heeft geregistreerd, is het de bedoeling dat hij wordt geredirect naar een andere pagina met de code:
Op de andere pagina heb ik bovenaan staan:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
session_start();
// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
En wat gebeurt er nadat een gebruiker heeft zich geregistreerd:
1. Gebruiker wordt toegevoegd aan de DB
2. Gebruiker wordt geredirect naar andere pagina
3. En omdat blijkbaar geen sessie wordt gestart/bewaard nadat hij zich heeft geregistreerd, wordt gebruiker automatisch geredirect naar login pagina.
Iemand een idee?
Gewijzigd op 02/02/2025 12:48:42 door Mohamed nvt
Waar en hoe wordt er iets in de session gezet?
- SanThe - op 31/01/2025 23:39:47:
Waar en hoe wordt er iets in de session gezet?
Net voor header functie heb ik user_id en voornaam in de sessie gezet:
Code (php)
1
2
3
4
5
2
3
4
5
$_SESSION['voornaam'] = $firstname;
$_SESSION['user_id'] = $id;
session_write_close();
header("Location: wachtkamer.php");
exit();
$_SESSION['user_id'] = $id;
session_write_close();
header("Location: wachtkamer.php");
exit();
En op de wachtkamer pagina, dus waar de gebruiker hoort automatisch te komen, nadat hij is geregistreerd, check ik of de user_id bestaat in sessie dmv onderstaande code
- SanThe - op 31/01/2025 23:50:53:
Bovenaan de pagina heb ik al de staan.
Wordt het daarom niet uitgevoerd?
Doet ie het nou wel dan?
Nog meer ideeën?
Mohamed nvt op 31/01/2025 23:46:44:
Gewijzigd op 01/02/2025 00:06:53 door - SanThe -
- SanThe - op 01/02/2025 00:00:50:
Ik heb tijdelijk de redirect uitgezet en ik kom dus terecht op wachtkamer pagina, en het is helemaal wit pagina. Geen output!
Nog meer ideeën?
Of alleen array() of array(met inhoud)
Helemaal wit dan komt ie daar niet.
- SanThe - op 01/02/2025 00:13:50:
Wat print die ene regel?
Of alleen array() of array(met inhoud)
Helemaal wit dan komt ie daar niet.
Of alleen array() of array(met inhoud)
Helemaal wit dan komt ie daar niet.
Hoe bedoel je met komt ie daar niet? Ik kom dus wel terecht op wachtkamer en vervolgens is er enkel een wit pagina, niet wegens een typo
Gewijzigd op 01/02/2025 00:22:00 door Mohamed nvt
Doe in wachtkamer eens echo 'WACHTKAMER';
- SanThe - op 01/02/2025 00:20:03:
Doe in wachtkamer eens echo 'WACHTKAMER';
Dat gaat goed
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
session_start();
echo 'WACHTKAMER';
print_r($_SESSION);
// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
header("Location: index.php");
exit();
}
echo 'WACHTKAMER';
print_r($_SESSION);
// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
header("Location: index.php");
exit();
}
En dan zie je WACHTKAMER op je beeld en geen array()?
- SanThe - op 01/02/2025 00:26:24:
Precies, ik zie enkel de tekst wachtkamer en verder niets.
Want dan moet ie ergens toch een melding geven.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# error reporting
ini_set('display_errors',1);
error_reporting(E_ALL);
# session starten
session_start();
echo 'WACHTKAMER';
print_r($_SESSION);
// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
header("Location: index.php");
exit();
}
ini_set('display_errors',1);
error_reporting(E_ALL);
# session starten
session_start();
echo 'WACHTKAMER';
print_r($_SESSION);
// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
header("Location: index.php");
exit();
}
Gewijzigd op 01/02/2025 00:33:49 door - SanThe -
Code (php)
1
2
3
4
5
2
3
4
5
ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();
print_r($_SESSION,true);
echo 'WACHTKAMER';
error_reporting(E_ALL);
session_start();
print_r($_SESSION,true);
echo 'WACHTKAMER';
Het enig wat ik te zien krijg, is de string "WACHTKAMER"
Toevoeging op 02/02/2025 12:54:25:
Wat ik dus niet begrijp, is dat sessie niet verloren gaat bij het redirect van de gebruiker vanuit login pagina naar index pagina.
Iemand nog een idee?!
Hierbij de volledige code van registratie pagina:
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
100
101
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
100
101
<?php
// Sessie starten
session_start();
// Vereiste bestanden
require_once 'includes/config.php'; // Verbind met de database
require_once 'includes/functions.php'; // Importeer functies
$message = [];
$success = "";
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Input valideren
$voornaam = sanitizeInput($_POST['voornaam']);
$achternaam = sanitizeInput($_POST['achternaam']);
$email = sanitizeInput($_POST['email']);
$mobiel = sanitizeInput($_POST['mobiel']);
$wachtwoord = $_POST['wachtwoord'];
$bevestig_wachtwoord = $_POST['bevestig_wachtwoord'];
$kapperszaak = sanitizeInput($_POST['kapperszaak']);
$straat = sanitizeInput($_POST['straat']);
$postcode = sanitizeInput($_POST['postcode']);
$plaats = sanitizeInput($_POST['plaats']);
// Controleer of velden ingevuld zijn
if (empty($voornaam) || empty($achternaam) || empty($email) || empty($mobiel) || empty($wachtwoord) || empty($bevestig_wachtwoord) || empty($kapperszaak) || empty($straat) || empty($postcode) || empty($plaats)) {
$message[] = "Alle velden zijn verplicht.";
}
// Controleer wachtwoord op sterkte
$wachtwoordFouten = valideerWachtwoord($wachtwoord);
if (!empty($wachtwoordFouten)) {
$message = array_merge($message, $wachtwoordFouten);
}
// Controleer of wachtwoord en bevestiging overeenkomen
if ($wachtwoord !== $bevestig_wachtwoord) {
$message[] = "Wachtwoorden komen niet overeen.";
}
if (empty($message)) {
// Controleer of e-mail of mobiel nummer al bestaat
$stmt = $mysqli->prepare("SELECT id FROM users WHERE email = ? OR mobielnummer = ?");
$stmt->bind_param("ss", $email, $mobiel);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
$message[] = "E-mailadres of mobiel nummer is al geregistreerd.";
} else {
$stmt->close();
// Controleer of kapperszaak naam al bestaat
$stmt = $mysqli->prepare("SELECT id FROM business WHERE name = ?");
$stmt->bind_param("s", $kapperszaak);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
$message[] = "Kapperszaak naam is al geregistreerd.";
} else {
$stmt->close();
// Genereer wachtwoord-hash
$passwordHash = password_hash($wachtwoord, PASSWORD_BCRYPT);
// Voeg kapperszaak toe aan de database
$volledig_adres = $straat . ", " . $postcode . ", " . $plaats;
$stmt = $mysqli->prepare("INSERT INTO business (name, address) VALUES (?, ?)");
$stmt->bind_param("ss", $kapperszaak, $volledig_adres);
$stmt->execute();
$businessId = $stmt->insert_id; // Haal ID op van de nieuwe kapperszaak
$stmt->close();
// Genereer verificatietoken en stel verificatiestatus in
$verification_token = bin2hex(random_bytes(16));
$verification_status = 0;
// Voeg gebruiker toe aan de database
$status = 'on hold';
$role = 'owner';
$stmt = $mysqli->prepare("INSERT INTO users (voornaam, achternaam, email, mobielnummer, password_hash, role, business_id, status, verification_status, verification_token) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssssisis", $voornaam, $achternaam, $email, $mobiel, $passwordHash, $role, $businessId, $status, $verification_status, $verification_token);
if ($stmt->execute()) {
// Verzend verificatiemail
$to = $email;
$subject = 'Bevestig uw e-mailadres';
$message = "Beste $voornaam,\n\nBedankt voor uw registratie. Klik alstublieft op de onderstaande link om uw e-mailadres te bevestigen:\n\n";
$message .= "https://salongrip.nl/verify.php?token=$verification_token\n\n";
$message .= "Met vriendelijke groet,\nSalongrip";
// Stel de headers in
$headers = 'From: info@salongrip.nl' . "\r\n" .
'Reply-To: info@salongrip.nl' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// Verzend de e-mail
if (mail($to, $subject, $message, $headers)) {
$success = "Registratie succesvol! Controleer uw e-mail om uw registratie te bevestigen.";
} else {
$message[] = "Er is een fout opgetreden bij het verzenden van de verificatiemail.";
}
$_SESSION['voornaam'] = $firstname;
$_SESSION['user_id'] = $id;
session_write_close();
header("Location: https://salongrip.nl/wachtkamer.php");
exit();
} else {
$message[] = "Er is een fout opgetreden bij het registreren van de gebruiker.";
}
$stmt->close();
}
}
}
}
?>
// Sessie starten
session_start();
// Vereiste bestanden
require_once 'includes/config.php'; // Verbind met de database
require_once 'includes/functions.php'; // Importeer functies
$message = [];
$success = "";
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Input valideren
$voornaam = sanitizeInput($_POST['voornaam']);
$achternaam = sanitizeInput($_POST['achternaam']);
$email = sanitizeInput($_POST['email']);
$mobiel = sanitizeInput($_POST['mobiel']);
$wachtwoord = $_POST['wachtwoord'];
$bevestig_wachtwoord = $_POST['bevestig_wachtwoord'];
$kapperszaak = sanitizeInput($_POST['kapperszaak']);
$straat = sanitizeInput($_POST['straat']);
$postcode = sanitizeInput($_POST['postcode']);
$plaats = sanitizeInput($_POST['plaats']);
// Controleer of velden ingevuld zijn
if (empty($voornaam) || empty($achternaam) || empty($email) || empty($mobiel) || empty($wachtwoord) || empty($bevestig_wachtwoord) || empty($kapperszaak) || empty($straat) || empty($postcode) || empty($plaats)) {
$message[] = "Alle velden zijn verplicht.";
}
// Controleer wachtwoord op sterkte
$wachtwoordFouten = valideerWachtwoord($wachtwoord);
if (!empty($wachtwoordFouten)) {
$message = array_merge($message, $wachtwoordFouten);
}
// Controleer of wachtwoord en bevestiging overeenkomen
if ($wachtwoord !== $bevestig_wachtwoord) {
$message[] = "Wachtwoorden komen niet overeen.";
}
if (empty($message)) {
// Controleer of e-mail of mobiel nummer al bestaat
$stmt = $mysqli->prepare("SELECT id FROM users WHERE email = ? OR mobielnummer = ?");
$stmt->bind_param("ss", $email, $mobiel);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
$message[] = "E-mailadres of mobiel nummer is al geregistreerd.";
} else {
$stmt->close();
// Controleer of kapperszaak naam al bestaat
$stmt = $mysqli->prepare("SELECT id FROM business WHERE name = ?");
$stmt->bind_param("s", $kapperszaak);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
$message[] = "Kapperszaak naam is al geregistreerd.";
} else {
$stmt->close();
// Genereer wachtwoord-hash
$passwordHash = password_hash($wachtwoord, PASSWORD_BCRYPT);
// Voeg kapperszaak toe aan de database
$volledig_adres = $straat . ", " . $postcode . ", " . $plaats;
$stmt = $mysqli->prepare("INSERT INTO business (name, address) VALUES (?, ?)");
$stmt->bind_param("ss", $kapperszaak, $volledig_adres);
$stmt->execute();
$businessId = $stmt->insert_id; // Haal ID op van de nieuwe kapperszaak
$stmt->close();
// Genereer verificatietoken en stel verificatiestatus in
$verification_token = bin2hex(random_bytes(16));
$verification_status = 0;
// Voeg gebruiker toe aan de database
$status = 'on hold';
$role = 'owner';
$stmt = $mysqli->prepare("INSERT INTO users (voornaam, achternaam, email, mobielnummer, password_hash, role, business_id, status, verification_status, verification_token) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssssisis", $voornaam, $achternaam, $email, $mobiel, $passwordHash, $role, $businessId, $status, $verification_status, $verification_token);
if ($stmt->execute()) {
// Verzend verificatiemail
$to = $email;
$subject = 'Bevestig uw e-mailadres';
$message = "Beste $voornaam,\n\nBedankt voor uw registratie. Klik alstublieft op de onderstaande link om uw e-mailadres te bevestigen:\n\n";
$message .= "https://salongrip.nl/verify.php?token=$verification_token\n\n";
$message .= "Met vriendelijke groet,\nSalongrip";
// Stel de headers in
$headers = 'From: info@salongrip.nl' . "\r\n" .
'Reply-To: info@salongrip.nl' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// Verzend de e-mail
if (mail($to, $subject, $message, $headers)) {
$success = "Registratie succesvol! Controleer uw e-mail om uw registratie te bevestigen.";
} else {
$message[] = "Er is een fout opgetreden bij het verzenden van de verificatiemail.";
}
$_SESSION['voornaam'] = $firstname;
$_SESSION['user_id'] = $id;
session_write_close();
header("Location: https://salongrip.nl/wachtkamer.php");
exit();
} else {
$message[] = "Er is een fout opgetreden bij het registreren van de gebruiker.";
}
$stmt->close();
}
}
}
}
?>
Hieronder de code van de wachtkamer pagina waar naar toe gebruiker wordt geleid:
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
ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();
print_r($_SESSION,true);
echo 'WACHTKAMER';
// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
//header("Location: index.php");
exit();
}
// Verbind met de database
require_once 'includes/config.php';
// Haal de gebruikersinformatie op
$user_id = $_SESSION['user_id'];
$query = "SELECT voornaam, verification_status FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("i", $user_id);
$stmt->execute();
$stmt->bind_result($voornaam, $verification_status);
$stmt->fetch();
$stmt->close();
// Bepaal de begroeting op basis van het tijdstip
$hour = date('H');
if ($hour >= 5 && $hour < 12) {
$greeting = "Goedemorgen";
} elseif ($hour >= 12 && $hour < 18) {
$greeting = "Goedemiddag";
} else {
$greeting = "Goedenavond";
}
// Definieer de stappen en hun status
$steps = [
1 => ['label' => 'Registratie voltooid', 'status' => $verification_status >= 0],
2 => ['label' => 'E-mail bevestigd', 'status' => $verification_status >= 1],
3 => ['label' => 'Account geactiveerd door administrator', 'status' => $verification_status >= 2],
];
// Inclusie van de header
require_once 'includes/header.php';
?>
<div class="container mt-5">
<div class="card mx-auto shadow-sm" style="max-width: 600px;">
<div class="card-body text-center">
<h1><?php echo $greeting . ', ' . htmlspecialchars($voornaam); ?>!</h1>
<p>Welkom in de wachtkamer. Hieronder ziet u de voortgang van uw registratie:</p>
<ul class="list-group">
<?php foreach ($steps as $step => $info): ?>
<li class="list-group-item d-flex justify-content-between align-items-center">
<?php echo $step . '. ' . $info['label']; ?>
<?php if ($info['status']): ?>
<span class="badge bg-success">?</span>
<?php else: ?>
<span class="badge bg-secondary">?</span>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php if ($verification_status < 2): ?>
<p class="mt-3">
<?php if ($verification_status == 0): ?>
We hebben u een e-mail gestuurd om uw registratie te bevestigen. Controleer uw inbox en spamfolder.
<?php elseif ($verification_status == 1): ?>
Uw e-mail is bevestigd. De administrator zal uw account binnenkort activeren. De administrator heeft nog even koffie nodig voordat uw account wordt geactiveerd. Hopelijk gebeurt dat snel!
<?php endif; ?>
</p>
<?php else: ?>
<p class="mt-3">Uw account is volledig geactiveerd. U kunt nu gebruikmaken van het platform.</p>
<?php endif; ?>
</div>
</div>
</div>
<?php
// Inclusie van de footer
require_once 'includes/footer.php';
?>
ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();
print_r($_SESSION,true);
echo 'WACHTKAMER';
// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
//header("Location: index.php");
exit();
}
// Verbind met de database
require_once 'includes/config.php';
// Haal de gebruikersinformatie op
$user_id = $_SESSION['user_id'];
$query = "SELECT voornaam, verification_status FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("i", $user_id);
$stmt->execute();
$stmt->bind_result($voornaam, $verification_status);
$stmt->fetch();
$stmt->close();
// Bepaal de begroeting op basis van het tijdstip
$hour = date('H');
if ($hour >= 5 && $hour < 12) {
$greeting = "Goedemorgen";
} elseif ($hour >= 12 && $hour < 18) {
$greeting = "Goedemiddag";
} else {
$greeting = "Goedenavond";
}
// Definieer de stappen en hun status
$steps = [
1 => ['label' => 'Registratie voltooid', 'status' => $verification_status >= 0],
2 => ['label' => 'E-mail bevestigd', 'status' => $verification_status >= 1],
3 => ['label' => 'Account geactiveerd door administrator', 'status' => $verification_status >= 2],
];
// Inclusie van de header
require_once 'includes/header.php';
?>
<div class="container mt-5">
<div class="card mx-auto shadow-sm" style="max-width: 600px;">
<div class="card-body text-center">
<h1><?php echo $greeting . ', ' . htmlspecialchars($voornaam); ?>!</h1>
<p>Welkom in de wachtkamer. Hieronder ziet u de voortgang van uw registratie:</p>
<ul class="list-group">
<?php foreach ($steps as $step => $info): ?>
<li class="list-group-item d-flex justify-content-between align-items-center">
<?php echo $step . '. ' . $info['label']; ?>
<?php if ($info['status']): ?>
<span class="badge bg-success">?</span>
<?php else: ?>
<span class="badge bg-secondary">?</span>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php if ($verification_status < 2): ?>
<p class="mt-3">
<?php if ($verification_status == 0): ?>
We hebben u een e-mail gestuurd om uw registratie te bevestigen. Controleer uw inbox en spamfolder.
<?php elseif ($verification_status == 1): ?>
Uw e-mail is bevestigd. De administrator zal uw account binnenkort activeren. De administrator heeft nog even koffie nodig voordat uw account wordt geactiveerd. Hopelijk gebeurt dat snel!
<?php endif; ?>
</p>
<?php else: ?>
<p class="mt-3">Uw account is volledig geactiveerd. U kunt nu gebruikmaken van het platform.</p>
<?php endif; ?>
</div>
</div>
</div>
<?php
// Inclusie van de footer
require_once 'includes/footer.php';
?>
Gewijzigd op 03/02/2025 18:54:35 door - Ariën -
of
print($X, true) zal niets weergeven.
Ik had eerst de 'true' gebruikt maar dat was fout.
Dat heb ik dan ook later weer verwijderd.
- SanThe - op 01/02/2025 00:30:55:
Staat error_reporting aan?
Want dan moet ie ergens toch een melding geven.
Want dan moet ie ergens toch een melding geven.
Ik zie nu pas dat het er bij Mohamed nvt nog steeds fout in staat.
Gewijzigd op 03/02/2025 15:47:28 door - SanThe -