session_start();
// 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?
session_start();
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()?
session_start();
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()?
Precies, ik zie enkel de tekst wachtkamer en verder niets.
Het enig wat ik te zien krijg, is de string "WACHTKAMER"
[size=xsmall]Toevoeging op 02/02/2025 12:54:25:[/size]
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:
<?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: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\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:
<?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';
?>