Hulp nodig met $_SESSION

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roel H

Roel H

18/12/2013 20:11:13
Quote Anchor link
Hallo,

Ik wil een formulier maken, die lang is, dus ik wil met meerdere pagina's gaan werken.
Ik vul een formulier, via get in het formulier ga ik naar een andere pagina en ik neem zo de informatie mee: $_SESSION['naam'] = $_POST['naam'];
Echter, wanneer ik dit doe, neemt de sessie niks mee. Wanneer ik $_SESSION['naam'] = 'hoi'; doe, werkt het wel.

Weet iemand wat het probleem kan zijn?
Ik heb ff geen voorbeeld zo, want die heb ik weg geklikt, omdat ik de balen had dat het niet werkte, zonder op te slaan.

Groet,
Roel
 
PHP hulp

PHP hulp

16/04/2024 06:12:28
 
- Ariën  -
Beheerder

- Ariën -

18/12/2013 20:17:36
Quote Anchor link
Ben je niet vergeten om session_start(); bovenaan te plaatsen?
 
Roel H

Roel H

18/12/2013 20:33:19
Quote Anchor link
Nee, want anders kan $_SESSION['naam'] = 'hoi'; ook niet werken.
Dat heb ik allemaal netjes gedaan. Alleen een sessie meegeven via een $_POST werkt niet...
 
- Ariën  -
Beheerder

- Ariën -

18/12/2013 20:49:20
Quote Anchor link
Dan zal er niks in de $_POST zitten.
 
Roel H

Roel H

18/12/2013 20:50:33
Quote Anchor link
Jawel, ook dat heb ik gecontroleerd. Maakt het uit wat er bij action"" in de formulier staat?
Of dezelfde pagina of bijvoorbeeld pagina2.php?
Zal die dan de sessie niet vullen?
 
Obelix Idefix

Obelix Idefix

18/12/2013 21:04:46
Quote Anchor link
Roel H op 18/12/2013 20:11:13:
Ik vul een formulier, via get in het formulier ga ik naar een andere pagina en ik neem zo de informatie mee: $_SESSION['naam'] = $_POST['naam'];

Als je get gebruikt in het formulier, zal er toch niets in $_POST zitten?!?
 
Roel H

Roel H

18/12/2013 21:17:09
Quote Anchor link
Hmm maar om de waarde van het textfield mee te krijgen, moet je $_POST doen.
Ik zal anders morgen f wat maken en posten, misschien dat het makkelijker is.
 
Jordy Wijman

Jordy Wijman

18/12/2013 21:31:40
Quote Anchor link
Nee, al gebruik je method="GET", dan haal je je gegevens op met $_GET[''].
Al gebruik je method="POST", dan haal je gegevens op met $_POST['']
 
Roel H

Roel H

19/12/2013 19:02:47
Quote Anchor link
$_SESSION['getal'] doet het wel, session naam niet.
Wie kan me helpen?

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
<?php
ob_start();
session_start();

  if(isset($_POST['verzenden']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
     {

          $_SESSION['getal'] = 11;
         $_SESSION['naam'] = $_POST['naam'];
     }


     ?>


         <form method="post" action="bla2.php">
<table width="100%" border="0">
  <tr>
    <td width="77%"><input name="naam" type="text" /></td>
  </tr>

      <tr>
    <td><input type="submit" id="verzenden" name="verzenden" value="verzenden" /></td>
  </tr>
</table>
</form>
        
 </body>  
 </html>


Toevoeging op 19/12/2013 19:22:22:

Roel H op 19/12/2013 19:02:47:
$_SESSION['getal'] doet het wel, session naam niet.
Wie kan me helpen?

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
<?php
ob_start();
session_start();

  if(isset($_POST['verzenden']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
     {

          $_SESSION['getal'] = 11;
         $_SESSION['naam'] = $_POST['naam'];
     }


     ?>


         <form method="post" action="bla2.php">
<table width="100%" border="0">
  <tr>
    <td width="77%"><input name="naam" type="text" /></td>
  </tr>

      <tr>
    <td><input type="submit" id="verzenden" name="verzenden" value="verzenden" /></td>
  </tr>
</table>
</form>
        
 </body>  
 </html>


Nu heb ik wel wat gevonden, $_SESSION[''] = $_POST[''] op bla2.php zetten.
Echter deze is weg wanneer je de pagina opnieuw aanroept, hij onthoudt niks.
Wie o wie ken me helpen? :)

Toevoeging op 19/12/2013 21:23:17:

Oke,

De sessie mag pas op de volgende pagina gemaakt worden, zo ver ben ik nu, top!
De sessie neemt die ook mee naar de volgende pagina's, ook dat werkt.
Echter, het is een inschrijf formulier, dus wanneer iemand terug wilt, iets verkeerd ingevuld bijvoorbeeld, krijg ik dit: Notice: Undefined index: naam in F:\***\inschrijven\jan\bla2.php on line 4
Hij komt weer op de site waar de sessie aangemaakt is, dat is wsslijk de reden. Hoe dit op te lossen?
 
Reshad F

Reshad F

19/12/2013 22:02:25
Quote Anchor link
Undefined betekent dat het nog niet bestaat ( of niet meer in jou geval ) aangezien je de sessie kapot maakt als het ware door terug te gaan en deze niet meeneemt naar de vorige pagina.

Wat je hiervoor zou kunnen doen is kijken of de variabele wel bestaat alvorens deze op het scherm te gooien.

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

if(isset($var)) {
    // hij bestaat
}
else {
// rest van je code
}

?>
 
Roel H

Roel H

20/12/2013 07:04:15
Quote Anchor link
Thanks, maar je zet er neer $var. Deze moet ik zelf veranderen in iets. is bijvoorbeeld $_POST['naam'] dan genoeg? Want allemaal erin zetten is overbodig. Wat is het handigst? Zeker gezien ik meerdere pagina's heb...
 
Erwin H

Erwin H

20/12/2013 09:47:24
Quote Anchor link
Elke variabele waarvoor er een kans bestaat dat die niet bestaat op het moment dat je hem nodig hebt. $_POST, $_GET en $_COOKIE variabelen horen daar in principe allemaal bij. Overigens kan je meerdere tegelijk testen met isset:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ( !isset( $_POST['naam'], $_POST['verzenden'] ) ){
  echo 'iets ontbreekt';
}

?>
 
Roel H

Roel H

20/12/2013 11:52:38
Quote Anchor link
Ik kan het dan controleren door $_POSt['verzenden'] erin te verwerken of alleen $_POST['naam'], of eventueel beide. Ik ga dat straks testen, ben benieuwd of ik dit werkend krijg! :)

Toevoeging op 20/12/2013 14:39:28:

Ik ben een stap verder, dacht ik... :)
Ik weet dat ik de session op de volgende pagina moet opslaan, om verder te kunnen, zover snap ik het.
Echter ik wil controleren of alle velden ingevuld zijn van pagina 1, zo niet, dan eerst die invullen, alvorens je naar pagina 2 gaat. Moet die ook via pagina 2 dan? Want bij action"" komt pagina2.php te staan, maar dan gebruikt hij niks van pagina1 meer. Lastig dit eerlijk gezegd. Weet niet goed hoe ik dit moet oplossen.
 



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.