sessie gaat verloren na een redirect

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mohamed nvt

Mohamed nvt

31/01/2025 23:05:58
Quote Anchor link
Hallo allemaal,

Op de registratie pagina heb ik het volgende bovenaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
// Sessie starten
session_start();

Nadat een gebruiker zich heeft geregistreerd, is het de bedoeling dat hij wordt geredirect naar een andere pagina met de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
session_write_close();
header("Location: wachtkamer.php");
exit();

Op de andere pagina heb ik bovenaan staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
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?
Gewijzigd op 02/02/2025 12:48:42 door Mohamed nvt
 
PHP hulp

PHP hulp

03/03/2025 07:49:41
 
- SanThe -

- SanThe -

31/01/2025 23:39:47
Quote Anchor link
Waar en hoe wordt er iets in de session gezet?
 
Mohamed nvt

Mohamed nvt

31/01/2025 23:46:44
Quote Anchor link
- 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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$_SESSION['voornaam'] = $firstname;
$_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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
session_start();

// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
    header("Location: index.php");
    exit();
}
 
- SanThe -

- SanThe -

31/01/2025 23:50:53
Quote Anchor link
Mohamed nvt op 31/01/2025 23:46:44:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
session_start();
$_SESSION['voornaam'] = $firstname;
$_SESSION['user_id'] = $id;
session_write_close();
header("Location: wachtkamer.php");
exit();
 
Mohamed nvt

Mohamed nvt

31/01/2025 23:54:44
Quote Anchor link
- SanThe - op 31/01/2025 23:50:53:
Mohamed nvt op 31/01/2025 23:46:44:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
session_start();
$_SESSION['voornaam'] = $firstname;
$_SESSION['user_id'] = $id;
session_write_close();
header("Location: wachtkamer.php");
exit();




Bovenaan de pagina heb ik al de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
session_start();
staan.
Wordt het daarom niet uitgevoerd?
 
- SanThe -

- SanThe -

31/01/2025 23:56:20
Quote Anchor link
Doet ie het nou wel dan?
 
Mohamed nvt

Mohamed nvt

31/01/2025 23:58:13
Quote Anchor link
Helaas, hetzelfde resultaat. Het mocht niet baten!
Nog meer ideeën?
 
- SanThe -

- SanThe -

01/02/2025 00:00:50
Quote Anchor link
Mohamed nvt op 31/01/2025 23:46:44:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
session_start();

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:06:53 door - SanThe -
 
Mohamed nvt

Mohamed nvt

01/02/2025 00:10:14
Quote Anchor link
- SanThe - op 01/02/2025 00:00:50:
Mohamed nvt op 31/01/2025 23:46:44:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
session_start();

print_r($_SESSION);

// Controleer of de gebruiker is ingelogd
if (!isset($_SESSION['user_id'])) {
    header("Location: index.php");
    exit();
}




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?
 
- SanThe -

- SanThe -

01/02/2025 00:13:50
Quote Anchor link
Wat print die ene regel?
Of alleen array() of array(met inhoud)
Helemaal wit dan komt ie daar niet.
 
Mohamed nvt

Mohamed nvt

01/02/2025 00:16:53
Quote Anchor link
- 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.


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
 
- SanThe -

- SanThe -

01/02/2025 00:20:03
Quote Anchor link
Doe in wachtkamer eens echo 'WACHTKAMER';
 
Mohamed nvt

Mohamed nvt

01/02/2025 00:23:22
Quote Anchor link
- SanThe - op 01/02/2025 00:20:03:
Doe in wachtkamer eens echo 'WACHTKAMER';


Dat gaat goed
 
- SanThe -

- SanThe -

01/02/2025 00:26:24
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
}

En dan zie je WACHTKAMER op je beeld en geen array()?
 
Mohamed nvt

Mohamed nvt

01/02/2025 00:28:44
Quote Anchor link
- SanThe - op 01/02/2025 00:26:24:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
}

En dan zie je WACHTKAMER op je beeld en geen array()?


Precies, ik zie enkel de tekst wachtkamer en verder niets.
 
- SanThe -

- SanThe -

01/02/2025 00:30:55
Quote Anchor link
Staat error_reporting aan?
Want dan moet ie ergens toch een melding geven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
}
Gewijzigd op 01/02/2025 00:33:49 door - SanThe -
 
Mohamed nvt

Mohamed nvt

01/02/2025 23:10:38
Quote Anchor link
Bovenaan de wachtkamer pagina heb ik staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
ini_set('display_errors',1);
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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();
            }
        }
    }
}

?>

Hieronder de code van de wachtkamer pagina waar naar toe gebruiker wordt geleid:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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 -
 
Ivo P

Ivo P

03/02/2025 15:15:59
Quote Anchor link
het is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print_r($_SESSION); ?>


of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo print_r($_SESSION, true); ?>


print($X, true) zal niets weergeven.
 
- SanThe -

- SanThe -

03/02/2025 15:44:37
Quote Anchor link
@Ivo P
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
}


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 -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.