[PHP] Sessie waarden worden ineens niet meer onthouden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Oscar Mopperkont
  • Registratie: Februari 2001
  • Laatst online: 03-08-2024
Ik ben sinds kort bezig met PHP en ik ben bezig met een soort van wizard. Ik had het eindelijk voor elkaar dat sessie waarden langer werden onthouden dan alleen op de volgende pagina, maar vandaag ga ik verder met mijn werk en ik merk ineens dat de waarden niet meer onthouden worden, zonder dat ik ook maar 1 regel code heb veranderd.
Ik ben nu van alles aan het proberen om het weer werkend te krijgen maar het lukt me niet.

Ik heb al hier gekeken:
http://nl3.php.net/manual/en/ref.session.php

en hier:
P&W FAQ - PHP

en daar zal ongetwijfeld staan wat ik fout doe, maar ik kan het er in ieder geval niet uithalen.

Het gaat om de volgende code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1_OppervlakteKamer.php
error_reporting(E_ALL);
session_start();
?>
<form method="get" action="2_EigenKeuken.php">
Wat is de oppervlakte van uw kamer?
<br>
.
.
.
<br>
<input name="oppervlakte_kamer" value="">m<sup>2</sup>
<br>
<br>
<input type="submit" value="Verder">
</form>

</body>
</html>


PHP:
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
<?php
error_reporting(E_ALL);
session_register("oppervlakte_kamer");
session_register("eigen_keuken");
$_SESSION['oppervlakte_kamer']= $_GET['oppervlakte_kamer'];
$_SESSION['eigen_keuken']= 0;

?>

<SCRIPT LANGUAGE="JavaScript">
<!--
function Navigeer(lijst) {
  var Geselecteerd = lijst.selectedIndex
  // als de bovenste opties geselecteerd is niets doen
  if (Geselecteerd != 0) {
    window.location = lijst.options[Geselecteerd].value;
  }
}
</SCRIPT>


Heeft u een eigen (dus niet gemeenschappelijk) keuken?
<br>
<Form>
<SELECT onChange="Navigeer(this);">
  <Option value="">Maak een keuze:</option>
  <Option>--------------------</option> 
  <Option value="3_OppervlakteKeuken.php">Ja</option>
  <Option value="4_GemeenschappelijkeRuimten.php">Nee</option>
</SELECT>
</FORM> 


<br>
Gevolgd pad:
<br>

<font COLOR="#777777">
<?php

echo "Uw kamer heeft een oppervlakte van " .  $_SESSION['oppervlakte_kamer'] . " m<sup>2</sup>"; 
 
?>

</body>
</html>


PHP:
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
<?php
error_reporting(E_ALL);
session_register("eigen_keuken");
$_SESSION['eigen_keuken']= 1;

?>
<form method="get" action="4_GemeenschappelijkeRuimten.php">
Wat is de oppervlakte van uw keuken?
<br>
.
.
.
<br>
<input name="oppervlakte_keuken" value="">m<sup>2</sup>
<br>
<br>
<input type="submit" value="Verder">
</form>
<br>
<br>
<br>
Gevolgd pad:
<br>

<font COLOR="#777777">
<?php

echo "Uw kamer heeft een oppervlakte van " .  $_SESSION['oppervlakte_kamer'] . " m<sup>2</sup>"; 
 
?>
<br>
U heeft een eigen keuken
</body>
</html>


Ik krijg bij het openen van de derde pagina dan de volgende foutmelding:
Notice: Undefined index: oppervlakte_kamer in c:\phpdev\www\recht en ict\3_oppervlaktekeuken.php on line 30


Dit is de code zoals hij was toen het vorige week nog werkte. Ik heb inmiddels begrepen dat je session_start + $_SESSION en session_register niet door elkaar mag gebruiken. Ik heb het al geprobeerd om dat dus niet te doen, maar dat helpt dus ook niet. Ik heb dus maar de "zeker weten foute, maar vorige week nog werkende code" neergezet.

Wat moet ik veranderen om ervoor te zorgen dat hij wel weer de variabelen onthoudt?

Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Ik zie niet boven elke pagina session_start() staan, terwijl dat wel moet lijkt me, als je met $_SESSION wilt werken.
session_start() creates a session or resumes the current one based on the current session id that's being passed via a request, such as GET, POST, or a cookie.

[ Voor 43% gewijzigd door Cavorka op 13-11-2004 15:48 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

Verwijderd

Bovendien is session_register() overbodig.

Meeste problemen van deze soort hebben te maken met de acceptatie van cookies, waardoor php niet weet dat je een sessie_id hebt. Echo om dat te controleren ergens bovenaan de pagina session_id(). Als dat niet hetzelfde is, zoek de oplossing eens in die hoek.
Of ga terug naar het begin: maak twee pagina's waarin je in de ene een variabele zet en in de andere uitleest en echoot.

[ Voor 23% gewijzigd door Verwijderd op 13-11-2004 15:50 ]


Acties:
  • 0 Henk 'm!

  • Oscar Mopperkont
  • Registratie: Februari 2001
  • Laatst online: 03-08-2024
Cavorka schreef op zaterdag 13 november 2004 @ 15:46:
Ik zie niet boven elke pagina session_start() staan, terwijl dat wel moet lijkt me, als je met $_SESSION wilt werken.
Had ik al geprobeerd, maar dat maakt niets uit.
Bovendien is session_register() overbodig.
Toen het in het hele begin bij niet werkte en ik dat toevoegde werkte het ineens. Nu dus niet meer, maar als ik het weghaal werkt het dus nog steeds niet.
Echo om dat te controleren ergens bovenaan de pagina session_id(). Als dat niet hetzelfde is, zoek de oplossing eens in die hoek.
Heb ik nu gedaan en je hebt gelijk! Het probleem ligt daarin, bij de eerste twee pagina's krijg ik een gelijke id en bij de derde pagina is er ineens een nieuw id. Maar wat doe ik daaraan?

[ Voor 54% gewijzigd door Oscar Mopperkont op 13-11-2004 15:56 ]


Acties:
  • 0 Henk 'm!

  • Oscar Mopperkont
  • Registratie: Februari 2001
  • Laatst online: 03-08-2024
Ik heb nu trouwens het volgende geprobeerd (zal wel heeel fout zijn),. Ik heb de sessie zelf een waarde gegeven door gewoon het volgende te zeggen:
PHP:
1
session_id('1');

Dan blijft de sessie id op alle pagina's hetzelfde, maar dan nog geeft hij dezelfde foutmelding dat hij de variabele niet kent.

Update
Trucje werkt wel als je deze regel voor session_start zet. Maar ik neem toch aan dat dit niet helemaal de bedoeling moet zijn?

[ Voor 22% gewijzigd door Oscar Mopperkont op 13-11-2004 16:37 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je mag session_register() en de $_SESSION array niet combineren, dat gaat altijd fout. Zorg dus eerst dat je dat maakt, en kijk daarna of het zich nog voordoet. :) Verder dus inderdaad session_start() bovenaan elke pagina. Ik maak uit je posts niet op of je deze twee oplossingen gecombineerd hebt, maar dat is dus wel de bedoeling. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Oscar Mopperkont
  • Registratie: Februari 2001
  • Laatst online: 03-08-2024
Ja die twee oplossingen heb ik gecombineerd. En het werkt nu ook allemaal omdat ik dus die session_id heb vastgezet, zet ik die niet vast dan werkt het niet. Maar ik vind het vreemd dat ik dat moet doen, want ik lees nergens dat dat noodzakelijk zou zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Probeer dit eens:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';

// Works if session cookie was accepted
echo '<br /><a href="page2.php">page 2</a>';

// page2.php

session_start();

echo 'My favourite color is ' . $_SESSION['favcolor'];


Dit is pure basis. Als dit niet werkt weet je in ieder geval dat het niet aan je huidige code ligt. Er is een reden dat je browser het sessie-cookie niet accepteert. Hiermee kijk je dus of die reden bij je huidige script te vinden is.

[ Voor 42% gewijzigd door Verwijderd op 13-11-2004 18:07 . Reden: typo's ]

Pagina: 1