hallo iedereen. Ik krijg het niet voor elkaar om een php sessie op pagina 2 weer te geven!
Op pagina1.php wijs ik de waarde toe en vervolgens wordt deze daar ook correct weergegeven. Echter als op pagina2.php de waarde probeer uit te lezen is deze leeg. Instelling browser houdt cookies etc niet tegen en gebruik chrome. geen idee waar om het niet lukt! Iemand een idee?


Onderstaande is de inhoud van pagina1.php


<?php

session_start();
$_SESSION['security'] = 'inhoud';

if (isset($_SESSION['security'])) {
   echo 'Welkom, ' . $_SESSION['security'] . '!';
 } else {
  echo 'niet gevonden';
 }
?>


Onderstaande pagina2.php


<?php 


session_start();


if (isset($_SESSION['security'])) {
    echo 'security waarde is:, ' . $_SESSION['security'] . '!';
    echo "sessie toewijzing is gelukt";
} 


?>


[size=xsmall]Toevoeging op 04/02/2025 12:13:46:[/size]

ik zie overigens in de inspector/console geen foutmeldingen
ja klopt. had inmiddels andere pagina getest
ik heb foutmelding aangezet via onderstaande. maar krijg geen meldingen te zien!


 error_reporting(E_ALL);
    ini_set('display_errors', 1);


[size=xsmall]Toevoeging op 04/02/2025 13:19:53:[/size]

de sesssion werkt wel op de eerste pagina. daar wordt deze ook weergegeven. dan is de sessie toch opgeslagen?
Ja! Het zou dan moeten werken, tot je de browser-sessie afsluit.
Kijk eens met een print_r() naar $_SESSION
wat is je session_id op beide pagina's?

https://www.php.net/manual/en/function.session-id.php

<?php echo session_id(); // na session_start() ?>

[size=xsmall]Toevoeging op 04/02/2025 14:05:47:[/size]

en met inspect in je browser: stuur je ook session cookies mee?
ik weet niet wat de id is. maar ik ben wel een stuk wijzer geworden nu. het werkt maar niet onder alle omstandigheden. als ik de sessie aanmaak op pagina1.php dan kan ik deze opvragen op pagina2.php. (zie hieronder)

Echter als ik de sessie aanmaak op pagina0.php en ik probeer deze op pagina2.php op te vragen dan werkt deze niet! enige verschil van pagina0.php t.o.v. pagina1.php is dat in pagina0.php de sessie in een if statement is opgenomen.
Waarom werkt dat dan niet?

pagina1.php


<?php
// Start de sessie om toegang te krijgen tot de opgeslagen gegevens
session_start();

// Sla een waarde op in de sessie
$_SESSION['toegangscontrolenr10'] = 'inhoud variable toegangscontrole nr10';


 if (isset($_SESSION['toegangscontrolenr10'])) {
   echo 'Welkom, ' . $_SESSION['toegangscontrolenr10'] . '!';
 } else {
  echo 'niets gevonden!';
 }
?>



pagina2.php (opvragen sessie)


<?php

session_start();


 if (isset($_SESSION['toegangscontrolenr10'])) {
   echo 'Welkom, ' . $_SESSION['toegangscontrolenr10'] . '!';
 } else {
  echo 'niets gevonden!';
 }
?>


Wanneer de sessie dus aangemaakt wordt in een if statement zoals hieronder dan kan ik deze dus niet op pagina2.php opvragen! onderaan kan de sessie op deze pagina wel opgevraagd worden, maar daarbuiten dus niet!


<?php


$gebruikersnaamdatabase = "paul";
$gebruikersnaam = "paul";

$wachtwoorddatabase = "geheim";
$wachtwoord = "geheim";






if ($gebruikersnaamdatabase  == $gebruikersnaam and $wachtwoorddatabase == $wachtwoord)

 {
  echo "gebruiker en wachtwoord zijn gelijk";
  
session_start();
$_SESSION['toegangscontrolenr10'] = 'inhoud variable toegangscontrole nr10';
}

else 

 {
  echo "gebruikers en/of wachtwoord niet gelijk aan elkaar";
  
}


if (isset($_SESSION['toegangscontrolenr10'])) {
   echo 'Welkom, ' . $_SESSION['toegangscontrolenr10'] . '!';
 } else {
  echo 'niets gevonden!';
 }



?>


[size=xsmall]Toevoeging op 04/02/2025 16:23:57:[/size]

ik ben er helemaal aan uit. session_start(); moet helemaal bovenaan de pagina geplaatst worden.
Paul Weiss op 04/02/2025 15:50:05

ik weet niet wat de id is. maar ik ben wel een stuk wijzer geworden nu. venaan de pagina geplaatst worden.


En heb je Ivo's reactie gezien? Dan weet je hoe je aan dat ID komt. Als die er is, dan is er een sessie aangemaakt. Zo niet, dan spelen er andere dingen.....
session-start geeft een helder. namelijk 1 met sessioncookie info.
net als andere headers, zoals content-type of redirect moet dat dis vóór enige output gebeuren.

echo Gebruiker of password niet gelijk

veroorzaakt dat er aan de browser verteld moet worden wat voor inhoud er aan komt.
een helder content-type hrmtml/text.

daarna is het niet meer mogelijk om nog sessiin cookie te sturen. Gevolg is dat je browser het sessies id niet weet en die dus ook niet kan meesturen met je 2e request.

daarom zegt men vaak dat sessionstart als eerste moet komen.
dat is niet per se zo, maar moet wel voor de headers verstuurd zijn.
Bedankt voor de toelichting

Reageren