weer een session probleem.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paul Weiss

Paul Weiss

04/02/2025 12:07:51
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

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

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

?>


Onderstaande pagina2.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php


session_start();


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



?>


Toevoeging op 04/02/2025 12:13:46:

ik zie overigens in de inspector/console geen foutmeldingen
 
PHP hulp

PHP hulp

15/02/2025 11:34:41
 
- Ariën  -
Beheerder

- Ariën -

04/02/2025 12:45:30
Quote Anchor link
Test het eens uit met een Chrome op een apart profiel? (niet specifiek een nieuwe profiel in je OS).
Met deze code is niks mis.


Even voor de duidelijkeheid: Beide scripts draaien op exact dezelfde hostname/(sub)domein?
Gewijzigd op 04/02/2025 12:46:26 door - Ariën -
 
Paul Weiss

Paul Weiss

04/02/2025 12:46:19
Quote Anchor link
hoe bedoel je op een apart profiel, onder een andere gebruikersnaam?
 
- Ariën  -
Beheerder

- Ariën -

04/02/2025 12:47:31
Quote Anchor link
https://support.google.com/chrome/answer/2364824

Het kan zijn dat je wat trammelant hebt met andere addon's ofzo. Dus test het eens uit op een schoon profiel naast je normale profiel. En hoe zit het met andere browsers?
Gewijzigd op 04/02/2025 12:47:51 door - Ariën -
 
Paul Weiss

Paul Weiss

04/02/2025 12:49:12
Quote Anchor link
ik ben op mijn pc ingelogd onder een andere gebruiker en het geprobeerd. maar zelfde probleem
 
- Ariën  -
Beheerder

- Ariën -

04/02/2025 12:50:17
Quote Anchor link
Paul Weiss op 04/02/2025 12:49:12:
ik ben op mijn pc ingelogd onder een andere gebruiker en het geprobeerd. maar zelfde probleem

Maar is dat zeker weten wel een ander profiel in Chrome? Daar heb ik geen ervaring mee. En mogelijk heeft die exacte dezelfde addons als die in gevecht met elkaar zouden zijn.

Dus daarom is mijn vraag of je een ander profiel in Chrome aan kan maken.
Gewijzigd op 04/02/2025 12:51:10 door - Ariën -
 
Paul Weiss

Paul Weiss

04/02/2025 12:50:20
Quote Anchor link
zal even checken met ander profiel


Toevoeging op 04/02/2025 12:54:35:

ander profiel gekozen en werkt nog steeds niet. wat een gedoe met die sessions zeg. Heeft iemand een ander idee hoe ik een php variable tussen verschillende pagina's kan controleren?
 
- SanThe -

- SanThe -

04/02/2025 13:07:08
Quote Anchor link
Wat doet het in Firefox?
 
- Ariën  -
Beheerder

- Ariën -

04/02/2025 13:09:42
Quote Anchor link
Hoe ziet de URL waarop je het test eruit?
Staat je error_reporting wel op maximaal, en display_errors aan?

Voor hetzelfde geldt staat PHP te gillen dat je sessieafhandeling ergens stuk is, en hoor je dat niet.
Gewijzigd op 04/02/2025 13:11:23 door - Ariën -
 
Paul Weiss

Paul Weiss

04/02/2025 13:12:42
Quote Anchor link
url om resultaat te tonen ziet er gewoon uit zoals normaal. begint met https://domeinnaam.nl/pagina/login/checksession.php
 
- SanThe -

- SanThe -

04/02/2025 13:15:53
Quote Anchor link
Je hebt het nu over checksession.php
En boven over pagina1.php en pagina2.php
Gewijzigd op 04/02/2025 13:16:17 door - SanThe -
 
Paul Weiss

Paul Weiss

04/02/2025 13:18:08
Quote Anchor link
ja klopt. had inmiddels andere pagina getest
ik heb foutmelding aangezet via onderstaande. maar krijg geen meldingen te zien!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
error_reporting(E_ALL);
    ini_set('display_errors', 1);


Toevoeging op 04/02/2025 13:19:53:

de sesssion werkt wel op de eerste pagina. daar wordt deze ook weergegeven. dan is de sessie toch opgeslagen?
Gewijzigd op 04/02/2025 13:27:19 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

04/02/2025 13:26:38
Quote Anchor link
Ja! Het zou dan moeten werken, tot je de browser-sessie afsluit.
Kijk eens met een print_r() naar $_SESSION
Gewijzigd op 04/02/2025 13:27:50 door - Ariën -
 
Ivo P

Ivo P

04/02/2025 14:04:37
Quote Anchor link
wat is je session_id op beide pagina's?

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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo session_id(); // na session_start() ?>


Toevoeging op 04/02/2025 14:05:47:

en met inspect in je browser: stuur je ook session cookies mee?
 
Paul Weiss

Paul Weiss

04/02/2025 15:50:05
Quote Anchor link
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

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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?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!

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
<?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!';
 }




?>


Toevoeging op 04/02/2025 16:23:57:

ik ben er helemaal aan uit. session_start(); moet helemaal bovenaan de pagina geplaatst worden.
 
- Ariën  -
Beheerder

- Ariën -

04/02/2025 16:35:41
Quote Anchor link
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.....
Gewijzigd op 04/02/2025 16:36:36 door - Ariën -
 
Ivo P

Ivo P

04/02/2025 19:12:22
Quote Anchor link
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.
 
Paul Weiss

Paul Weiss

04/02/2025 22:58:05
Quote Anchor link
Bedankt voor de toelichting
 



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.