$_SESSION[] wordt niet gevuld

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas van de Ven

Bas van de Ven

25/12/2024 16:44:33
Quote Anchor link
In mijn header van mijn website heb ik een (nieuwe) menustructuur gemaakt voor mijn programma. Mijn programma werkt met variabelen $_SESSION[]. 3 van deze variabelen moeten juist zijn gevuld om ingelogd te komen.

De nieuwe menustructuur ziet er uit volgens onderstaande code. Er blijken echter maximaal 23 <a> elementen mogelijk.
Als ik nog meer <a> elementen willekeurig toevoeg worden de variabelen $_SESSION[] niet meer gevuld en kan men dus niet inloggen. (24 <a> elementen in onderstaande code)

Weet iemand waar ik het moet zoeken om mijn probleem te verhelpen ?

Ps. Onderstaande code is in elke pagina van mijn programma ge-included. Tevens heb ik bewust elk <a> element even laten verwijzen naar dezelfde 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
<!DOCTYPE html>
<html>
<head>
<title>
    
</title>
<link rel="stylesheet" type="text/css" href="test2_style_header.css">

</head>
<body>
<center>

<?php $url ='https://test........nl/';

echo '<br>';
echo '<br>';
echo '<br>';
echo '<br>';
echo '<br>';
echo '$_SESSION["U1"] = '.$_SESSION["U1"].'<br>';
echo '$_SESSION["W1"] = '.$_SESSION["W1"].'<br>';
echo '$_SESSION["I1"] = '.$_SESSION["I1"].'<br>';

      ?>



    <div id = "rechts_uitlijnen" class = 'header_afbeelding'><section> <?php echo $titel; ?> </section><img src='Afbeelding.jpg' /></div>

<ul class="header_groen">
    <li><a href= '<?php echo $url;?>Home.php' style = 'color : black'>Home</a></li>
    
    <li class="dropdown"><span>Registratie</span>
        <div class="dropdown-content">
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
        </div>
    </li>
    
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>
    <li><a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a></li>

    <li class="dropdown"><span>RVO</span>
          <div class="dropdown-content">
           <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
            <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
          </div>
    </li>
    
    <li class="dropdown"><span>Raadplegen</span>
        <div class="dropdown-content">
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
          <a href='<?php echo $url;?>Zoeken.php' style = 'color : black'>Zoeken</a>
        </div>
    </li>

    <li id = "rechts_uitlijnen"><a href='<?php echo $url;?>index.php' style = 'color : black'>Uitloggen</a></li>


</ul>

<table id ="table1">
<TR> <!-- hier volgt de inhoud van elke pagina binnen mijn programma -->
    
</body>

</html>
Gewijzigd op 26/12/2024 12:37:08 door Bas van de Ven
 
PHP hulp

PHP hulp

14/03/2025 04:04:56
 
- SanThe -

- SanThe -

25/12/2024 17:46:46
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
session_start();
?>

<!DOCTYPE html>
<html>
en de rest......
Gewijzigd op 25/12/2024 17:47:27 door - SanThe -
 
Bas van de Ven

Bas van de Ven

25/12/2024 19:00:06
Quote Anchor link
Dank SanThe voor je reactie.
session_start(); komt reeds eerder voor in mijn code per pagina. Ook de controle of de variabelen $_SESSION[] goed zijn gevuld en of je dus bent ingelogd.
Bovenstaande code wordt dus ge-included in al die pagina's. Jouw feedback lost mijn probleem niet op helaas.
Gewijzigd op 25/12/2024 19:18:39 door Bas van de Ven
 
Ivo P

Ivo P

27/12/2024 11:49:34
Quote Anchor link
Het klinkt alsof je session_start() niet hebt staan voor (VOOR) er output naar je browser gaat.

En dat in combinatie met een automatische buffer die je in php.ini hebt ingesteld: bijvoorbeeld dat php de output buffert tot er minstens 5MB (voorbeeld) aan gegevens is om te versturen.

Gevolg: als je session_start() plaatst binnen die 5 MB, dan zijn er nog geen headers verstuurd en kan PHP dus nog de benodigde headers toevoegen.
Ga je over die 5MB heen, dan komen de standaard header en vist session_start() achter het net. Zou je errors op het scherm tonen, dan krijg je zo'n "headers already sent" melding in je scherm.

Dat leid ik af uit het feit dat jij maar 24 <a> elementen kunt plaatsen: daarna ga je over de buffer heen.

Oplossing (alle 3)
1) zet je error reporting maximaal en stuur de meldingen ook naar het scherm
2) zet die buffer op 0, want als je naar een andere server gaat en de buffer is daar 0 gaat het mogelijk mis. Net als dat het goed gaat voor een webpagina waarop de klants adres staat als "plein 1", maar mis voor een klant die op de "burgemeester van voorst tot voorstlaan 1234"

3) vraag je af wat wél de goede plek is voor session_start, want kennlijk staat die verkeerd.
 
Bas van de Ven

Bas van de Ven

29/12/2024 08:25:03
Quote Anchor link
Dank voor je reactie Ivo.

Een foutmelding wordt niet getoont. Enkel een eigen foutboodschap uit Inloggen.php. Nl. U bent niet ingelogd. met de inlog velden. Naar welke foutmelding ben je opzoek?

Hier een voorbeeld van hoe ik al mijn pagina's heb opgebouwd. De code bovenaan deze topic komt uit header.php. Daar gaat het na te veel <a> elementen fout. header.php zit na session_start(). Geldt jouw reactie dan nog steeds?

Ter volledigheid elke pagina toont licht grijs de versie datum. Vandaar de variabele $versie. Dat kan toch niet het probleem zijn als de pagina (in dit geval Home.php) wordt aangeroepen?
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
<?php /* 19-2-2015 : login toegevoegd */
$versie = '28-9-2018'; /* titel.php verwijderd. Zit in header.php samen met Style.css */
$versie = '11-5-2020'; /* verwijzing naar demo site gewijzigd. 23-5 : jpg aangepast */
$versie = '26-12-2024'; /* <TD width = 960 height = 400 align = "center"> gewijzigd naar <TD align = "center">  */
session_start(); ?>



<html>
<head>
<title>Home</title>
</head>
<body>

<center>

<?php
$titel
= 'OER van OVIS';
$subtitel = 'Optimalisering En Rendementverbetering van het Schaap';
Include "header.php";?>


 <TD align = "center">

<?php
$file
= "Home.php";
Include "Inloggen.php";
if (isset($_SESSION["U1"]) && isset($_SESSION["W1"]) && isset($_SESSION["I1"])) {

Include "responscheck.php"; ?>

<table>
<?php $host = $_SERVER['HTTP_HOST'];
if($host == 'demonstr.......nl' ) { ?>

<tr align = center>
 <td>
    <a href=' <?php echo $url; ?>Instructieboekje.pdf' target="_blank" style = "color : blue"> Instructieboekje </a>
 </td>
</tr>
<?php } ?>
<tr>
 <td>
    <img src="OER_van_OVIS.jpg" width= 650 height= 240 valign = "center"/>
 </td>
</tr>
</table>

</TD>

<?php
Include "menu1.php";
}
?>


</body>
</html>
Gewijzigd op 29/12/2024 11:52:05 door Bas van de Ven
 
- SanThe -

- SanThe -

29/12/2024 10:09:20
Quote Anchor link
Waar slaat <TD align = "center"> op?
Dit is onderdeel van een <table> die nergens te zien is.
 
Bas van de Ven

Bas van de Ven

29/12/2024 10:24:49
Quote Anchor link
- SanThe - op 29/12/2024 10:09:20:
Waar slaat <TD align = "center"> op?
Dit is onderdeel van een <table> die nergens te zien is.


Zie regel 75 en 76 in de code van mijn eerste post
Gewijzigd op 29/12/2024 10:25:18 door Bas van de Ven
 
- SanThe -

- SanThe -

29/12/2024 10:33:52
Quote Anchor link
Je opent <table> <tr> <td> maar je sluit ze nergens.
 
Bas van de Ven

Bas van de Ven

29/12/2024 10:48:43
Quote Anchor link
- SanThe - op 29/12/2024 10:33:52:
Je opent <table> <tr> <td> maar je sluit ze nergens.


Bij deze de reactie op Ivo aangepast. Nu de volledige code uit Home.php
Dit is de code uit menu1.php
M.i. een hoop onnodig script voor deze topic maar nu wel volledig.

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

<body>
<?php include "Foutafhandeling.php";
include "url.php";

if($modtech == 0) { $color = 'grey'; } else { $color = 'blue'; }
?>

<td>
Menu : </br>
<hr/style ='color : #A6C6EB'>
<a href= '<?php echo $url;?>Home.php' style = 'color : blue'>
Home</a> <br/>
<hr/style ='color : #E2E2E2'>
<a href='<?php echo $url;?>InvSchaap.php' style = 'color : blue'>
Aanvoer schaap</a>
<hr/style ='color : #E2E2E2'>
<a href='<?php echo $url;?>InlezenReader.php' style = 'color : blue'>
Inlezen reader</a> <br/>
<hr/style ='color : #E2E2E2'>

.... hier staat nog meer code met <a> elementen ......

Beheer</a>
<hr/style ='color : #E2E2E2'>
<a href='<?php echo $url;?>Inkoop.php' style = "color : <?php echo $color; ?> ;">
Voorraadbeheer</a>
<hr/style ='color : #E2E2E2'>
<a href='<?php echo $url;?>Finance.php' style = "color : <?php echo $color; ?> ;">
Financieel</a>
<hr/style ='color : #E2E2E2'>


<?php if(isset($versie)) { ?>
<i style = "color : #E2E2E2;"><?php echo "versie : ".$versie; ?> </i> <br/> <?php } ?>
<i style = "color : #E2E2E2;"><?php echo "ingelogd : ".$_SESSION["U1"]; ?></i>
</td>

</TR>
</table>

</tbody>
</body>
</html>



Toevoeging op 29/12/2024 10:50:16:

Het zijn dus de <a> elementen uit (o.a.) menu1.php die ik wil verplaatsen naar de header. Dus header.php in mijn geval. Zie mijn eerste post.
Gewijzigd op 29/12/2024 11:54:38 door Bas van de Ven
 
- SanThe -

- SanThe -

29/12/2024 11:37:55
Quote Anchor link
Ik zie geen header.php.
 
Bas van de Ven

Bas van de Ven

29/12/2024 11:40:45
Quote Anchor link
- SanThe - op 29/12/2024 11:37:55:
Ik zie geen header.php.


Zie regel 19 in de code van mijn reactie op Ivo
 
- SanThe -

- SanThe -

29/12/2024 11:45:15
Quote Anchor link
Maar wat staat er in header.php?
 
Bas van de Ven

Bas van de Ven

29/12/2024 11:48:35
Quote Anchor link
- SanThe - op 29/12/2024 11:45:15:
Maar wat staat er in header.php?


Zie mijn eerste post.
Zojuist wilde ik nog aanvullen in mijn eerste post dat de code uit header.php komt maar dat gaat niet meer.
Gewijzigd op 29/12/2024 11:50:22 door Bas van de Ven
 
- SanThe -

- SanThe -

29/12/2024 11:52:02
Quote Anchor link
Dit:
Quote:

<!DOCTYPE html>
<html>
<head>
<title>

</title>
<link rel="stylesheet" type="text/css" href="test2_style_header.css">

</head>
<body>

</body>

</html>

hoort niet in header.php als die wordt geincluded.
Gewijzigd op 29/12/2024 12:17:36 door - SanThe -
 
Bas van de Ven

Bas van de Ven

29/12/2024 12:21:25
Quote Anchor link
M.u.v. <link rel="stylesheet" type="text/css" href="test2_style_header.css"> heb ik het weggehaald. Ook </body> en </html> onderaan header.php. Ik snap je punt dat html elementen niet dubbel moeten worden aangeroepen en ga daarmee aan de slag.
Helaas lost dat mijn probleem niet op en ik verwacht niet dat hier de oorzaak moet worden gezocht voor mijn probleem.
Gewijzigd op 29/12/2024 12:22:00 door Bas van de Ven
 
- SanThe -

- SanThe -

29/12/2024 12:27:22
Quote Anchor link
Op internet op jouw pagina klik met de rechter muisknop en bekijk de paginabron. Daar zie je, in ieder geval in Firefox, alle html fouten in het rood.
 
Bas van de Ven

Bas van de Ven

29/12/2024 14:08:28
Quote Anchor link
Hier en daar heb ik wel wat kunnen verbeteren aan mijn html n.a.v. je laatste reactie, bedankt daarvoor. Helaas heeft dat mijn probleem nog steeds niet opgelost. Binnen de <a> element zie ik in ieder geval geen fouten als ik de paginabron bekijk.
Ik hoop dat ook Ivo nog even reageert op mijn vraag n.a.v. zijn reactie.
 
- SanThe -

- SanThe -

29/12/2024 14:57:46
Quote Anchor link
Als er in header.php 12 <a> staan zie ik geen reden waarom dat dan niet op de site zou staan.
 
Ward van der Put
Moderator

Ward van der Put

30/12/2024 09:24:30
Quote Anchor link
Is het inmiddels opgelost?

Het lijkt erop dat je nog naar $_SESSION schrijft nádat er output naar de client is verzonden. In dit (verkorte) fragment komt bijvoorbeeld de include van inloggen.php en responscheck.php ná <html>, <head>, enzovoort het begin van het HTML document:

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
<?php
$versie
= '26-12-2024';
session_start();
?>


<html>
<head>
<title>Home</title>
</head>
<body>

<center>

<?php
$titel
= '...';
$subtitel = '...';
include "header.php";
?>


 <TD align = "center">

<?php
$file
= "Home.php";
include "Inloggen.php";
if (isset($_SESSION["U1"]) && isset($_SESSION["W1"]) && isset($_SESSION["I1"])) {
    include "responscheck.php";
?>


Je zou dit kunnen oplossen door de volgorde van allerlei operaties om te gooien, maar een simpelere oplossing is de output buffering (ob) van PHP gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// Ergens aan het begin vóórdat je iets naar de client verzendt:
ob_start('ob_gzhandler');

// <...>

// Helemaal aan het einde na het laatste fragment HTML:

ob_end_flush();
?>
 
Bas van de Ven

Bas van de Ven

30/12/2024 18:06:25
Quote Anchor link
Bedankt Ward. Jouw reactie lijkt inderdaad de oplossing. Door include "Inloggen.php"; direct achter session_start(); te zetten is het probleem opgelost.
Ook de Output Buffering Control van PHP lost het probleem op.
Thanks :)
 



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.