[php] session start niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Ik ververs via javascript een IFRAME binnen mijn site met de volgende code

code:
1
2
3
4
5
6
<script>

if(document.news_iframe) {
   document.news_iframe.location.replace("/top.php?loggedIn=yes&voorvoegsel=&name=M.&achternaam=GUNTENAAR");
}
</script>


/top.php bevat de volgende code om de sessie aan te nemen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
session_start();
    
if($_GET['loggedIn'] == "yes") {
   $_SESSION[ 'name' ] = $_GET['name'];
   $_SESSION[ 'voorvoegsel' ] = $_GET['voorvoegsel']; 
   $_SESSION[ 'achternaam' ] = $_GET[ 'achternaam' ];
   $_SESSION['loggedIn'] = "yes";
} elseif ($_GET['loggedIn'] == "no") {
  $_SESSION['loggedIn'] = "no";
} else {
  $_SESSION['loggedIn'] = "no";
}


en de volgende code om te displayen

PHP:
1
2
3
4
5
if($_SESSION['loggedIn'] == "no") {
            //inlog knop
} elseif($_SESSION['loggedIn'] == "yes") {
                                               // welkom sessie gegevens
}


De eerste keer werkt ie wel daarna is ie direct zn sessie kwijt :(

Iemand enig idee hoe dit kan (het loopt door SSL maar lijkt me niet dat daar het probleem zit)

Ik roep gewoon in elk scherm weer /top.php op via een Iframe

[ Voor 38% gewijzigd door BierPul op 24-07-2003 18:50 ]

Ja man


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

zit er in 'de volgende code' ook wel een session_start statement? Anders start je de sessie namelijk niet :D

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

Zo dus:
PHP:
1
2
3
4
5
6
7
session_start();

if($_SESSION['loggedIn'] == "no") {
            //inlog knop
} elseif($_SESSION['loggedIn'] == "yes") {
                                               // welkom sessie gegevens
}


Misschien ook handig om een session_name() in te stellen zodat dingen niet door elkaar kunnen gaan lopen.

[ Voor 40% gewijzigd door Johnny op 24-07-2003 19:09 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Spider.007 schreef op 24 July 2003 @ 19:01:
zit er in 'de volgende code' ook wel een session_start statement? Anders start je de sessie namelijk niet :D
Natuurlijk ben niet helemaal achtelijk :P

code element 2 en 3 zijn uit hetzelfde php bestand B)

Ja man


Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

Je moet de sessie starten op de nieuwe pagina (zoals al gezegd), maar je bent dan wel alle gegevens kwijt (naam enzovoorts), hoe had je dat op willen lossen?

Als je mysql tot je beschikkining hebt: maak een session tabel met hierin een session id, naam, alles wat je wilt. Sla de session id op in je sessie, en je kan makkelijk alle gegevens ophalen als je ze nodig hebt, heb je ze niet nodig, dan kijk je alleen of er een session id in de sessie staat (of er dus een sessie is), zoniet, dan is de gebruiker niet ingelogd.

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Volgens mij ben ik niet geheel duidelijk geweest .

Ik heb een pagina (is een JSP bestand door 3de partij gedaan)

In dat Jsp wordt een IFRAME aangeroepen.

Via dat zelfde JSP bestand roep ik

code:
1
2
3
4
5
6
<script>

if(document.news_iframe) {
   document.news_iframe.location.replace("/top.php?loggedIn=yes&voorvoegsel=&name=M.&achternaam=GUNTENAAR");
}
</script>


Tegen dat Iframe

Dat IFRAME zeg ik naar top.php te gaan waar de volgende code in staat.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
session_start(); 
     
if($_GET['loggedIn'] == "yes") { 
   $_SESSION[ 'name' ] = $_GET['name']; 
   $_SESSION[ 'voorvoegsel' ] = $_GET['voorvoegsel']; 
   $_SESSION[ 'achternaam' ] = $_GET[ 'achternaam' ]; 
   $_SESSION['loggedIn'] = "yes"; 
} elseif ($_GET['loggedIn'] == "no") { 
  $_SESSION['loggedIn'] = "no"; 
} else { 
  $_SESSION['loggedIn'] = "no"; 
}

if($_SESSION['loggedIn'] == "no") { 
            //inlog knop 
} elseif($_SESSION['loggedIn'] == "yes") { 
                                               // welkom sessie gegevens 
}


De eerste keer (dus als het javascript draait) doet ie het , roep ik nu een ander file aan waarin ik het javascript niet draai maar wel /top.php opvraag van de server dan ben ik mn sessie kwijt :(

Ja man


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Heb je al gecontroleerd dat de $_GET variabelen wel meekomen vanuit de URL? En wordt er een tijdelijk bestandje aangemaakt voor de PHP sessie?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Jep $_GET komt mee anders zou ie het de eerste keer niet doen :)

Je 2e opmerking snap ik niet :P

Ik heb de situatie even nagemaakt in HTML ik kan niks doen opdie server waar het nu opdraait aangezien er dan eerst een nieuwe deployment gedaan moet worden door de 3e partij.

klik plek

De exact zelfde situatie is er ook op die omgeving code technisch dan :)

Ik kan niet begrijpen waarom dit niet zou werken :?

Ja man


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
|:( Problem solved :)

PHP:
1
2
3
4
5
6
7
8
9
10
if($_GET['loggedIn'] == "yes") { 
   $_SESSION[ 'name' ] = $_GET['name']; 
   $_SESSION[ 'voorvoegsel' ] = $_GET['voorvoegsel']; 
   $_SESSION[ 'achternaam' ] = $_GET[ 'achternaam' ]; 
   $_SESSION['loggedIn'] = "yes"; 
} elseif ($_GET['loggedIn'] == "no") { 
  $_SESSION['loggedIn'] = "no"; 
} else { 
  $_SESSION['loggedIn'] = "no"; 
}


Lekker handig he, alle situaties afvangen behalve als $_SESSION['loggedIn'] = "yes"; is dus bij de else statement gaat ie op NO de gegevens blijven behouden maar $_SESSION['loggedIn'] gaat wel op no dus doet ie niks meer :P

_/-\o_ print_r functie :P

[ Voor 114% gewijzigd door BierPul op 24-07-2003 20:49 ]

Ja man


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
BierPul schreef op 24 July 2003 @ 20:38:
|:( Problem solved :)

PHP:
1
2
3
4
5
6
7
8
9
10
if($_GET['loggedIn'] == "yes") { 
   $_SESSION[ 'name' ] = $_GET['name']; 
   $_SESSION[ 'voorvoegsel' ] = $_GET['voorvoegsel']; 
   $_SESSION[ 'achternaam' ] = $_GET[ 'achternaam' ]; 
   $_SESSION['loggedIn'] = "yes"; 
} elseif ($_GET['loggedIn'] == "no") { 
  $_SESSION['loggedIn'] = "no"; 
} else { 
  $_SESSION['loggedIn'] = "no"; 
}


Lekker handig he, alle situaties afvangen behalve als $_SESSION['loggedIn'] = "yes"; is dus bij de else statement gaat ie op NO de gegevens blijven behouden maar $_SESSION['loggedIn'] gaat wel op no dus doet ie niks meer :P

_/-\o_ print_r functie :P
Je nieuwe stukje is exact hetzelfde dan je eerst geposte stukje. Wat was nou de
oplossing, ik vind je verhaal niet echt duidelijk.

Overigens, is je code niet echt netjes. $_GET['loggedIn'] == 'yes' triggered de ene reactie in je code, de rest van de mogelijkheden (waaronder 'no' en niet gedefinieerd zijn etc), triggered de andere reactie. Waarom check je dan nog op $_GET['loggedIn'] == 'no' ?

PHP:
1
2
3
4
5
6
7
8
if($_GET['loggedIn'] == "yes") { 
   $_SESSION[ 'name' ] = $_GET['name']; 
   $_SESSION[ 'voorvoegsel' ] = $_GET['voorvoegsel']; 
   $_SESSION[ 'achternaam' ] = $_GET[ 'achternaam' ]; 
   $_SESSION['loggedIn'] = "yes"; 
} else {
  $_SESSION['loggedIn'] = "no"; 
}


Stukje netter. Verder, is het versturen van je loggedIn variabele in je URL nogal onveilig te noemen.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1