Doorgeven van een variabele

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

John Peels

John Peels

11/06/2015 22:58:05
Quote Anchor link
Hallo allemaal.

Ik ben net begonnen met PHP..

Ik heb nu 3 scripts gemaakt, waar ik bovenin (in de header) de gebruikersnaam heb staan van degene die is ingelogd. Ik heb deze in $_SESSION ['gebruikersnaam'] gezet, zodat de andere 2 scripts ook deze gebruikersnaam tonen.
Maar als ik nu in een tweede venster ook inlog met een andere gebruikersnaam... dan gaat het mis, want nu staat er in het eerste scherm ook opeens de gebruikersnaam van het tweede scherm.

Hoe los ik dit nu op ?

Hoe kan ik de gebruikersnaam laten gelden als een soort constante voor alle drie de scripts ? Met $_SESSION lukt dat dus niet ?

Alvast bedankt.
 
PHP hulp

PHP hulp

25/10/2020 09:08:14
 
- SanThe -

- SanThe -

11/06/2015 23:26:40
Quote Anchor link
De session geldt voor de verbinding tussen de browser en de server.
Dus als jij in een ander venster inlogt onder een andere naam dan wijzig je dezelfde session.
Wat jij wilt kan alleen met verschillende browsers.
Dus inloggen met Firefox en inloggen met Chrome bijvoorbeeld.
 
Ozzie PHP

Ozzie PHP

12/06/2015 01:11:58
Quote Anchor link
Nog even ter aanvulling op SanThe ...

>> Maar als ik nu in een tweede venster ook inlog met een andere gebruikersnaam... dan gaat het mis

Je zou dus ook niet meer moeten kunnen inloggen op het moment dat je al bent ingelogd. Bij het inlogscherm dien je dus te controleren of iemand al is ingelogd. Zo ja, dan kom je automatisch in de ingelogde omgeving en wordt het inlogscherm dus 'overgeslagen'.
 
Paco de Wulp

Paco de Wulp

12/06/2015 10:33:55
Quote Anchor link
Er zijn 4 manieren om variabelen door te geven:
$SESSION
Cookies
$GET
$POST
De eerste manier vervalt, probeer één van de andere drie methodes.
 
Ozzie PHP

Ozzie PHP

12/06/2015 10:40:19
Quote Anchor link
@Paco

Voor het opslaan en hergebruiken van variabelen tijdens een sessie (ofwel sessievariabelen) gebruik je normaliter $_SESSION en geen van de andere opties die jij noemt. (Overigens heb je alle opties verkeerd gespeld, dus die zullen geen van allen werken, maar dat even terzijde.)
 
Randy vsf

Randy vsf

12/06/2015 11:10:12
Quote Anchor link
Paco de Wulp op 12/06/2015 10:33:55:
Er zijn 4 manieren om variabelen door te geven:
$SESSION
Cookies
$GET
$POST
De eerste manier vervalt, probeer één van de andere drie methodes.




Hij wilt de gebruikersnaam onthouden, dus POST en GET heeft hij niks aan.
Gewijzigd op 12/06/2015 11:11:52 door Randy vsf
 
John Peels

John Peels

12/06/2015 15:56:15
Quote Anchor link
Maar hoe los ik het nu op ?
Hoe kan ik de gebruikersnaam na inloggen nu doorgeven aan andere scripts ?
 
- SanThe -

- SanThe -

12/06/2015 16:12:49
Quote Anchor link
Gewoon in een session zoals je al deed.
Alleen twee verschillende inlogsessions in dezelfde browser gaat niet lukken.
 
John Peels

John Peels

12/06/2015 16:29:03
Quote Anchor link
Dus ik moet controleren of er al een session aanwezig.

iets van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if(session_id() == '' || !isset($_SESSION)) {
    // session isn't started
    session_start();
}
Gewijzigd op 12/06/2015 16:32:28 door John Peels
 
Thomas van den Heuvel

Thomas van den Heuvel

12/06/2015 16:59:54
Quote Anchor link
Beter is om te controleren of er al een gebruikersnaam is ingevuld.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
// start altijd eerst je sessie, anders heb je niet de beschikking over deze informatie
// je gebruikt session_start tevens om een eerder gestarte sessie voort te zetten

session_start();
// ik ga er even van uit dat je de volgende controle uitvoert als je opnieuwe probeert in te loggen terwijl je al ingelogd bent
if (isset($_SESSION['gebruikersnaam'])) {
    header('Location: jebentalingelogd.htm');
    exit;
}

?>

En misschien nog beter is om het id van een gebruiker op te slaan, en elke page-request deze informatie opnieuw op te halen uit de database. Als je namelijk in je profiel-gegevens je gebruikersnaam kan aanpassen, en je hebt deze informatie opgeslagen in je sessie, dan blijft verouderde informatie in je sessie "hangen" totdat je opnieuw inlogt. Tenzij je dus elke page-access opnieuw alle data ophaalt uit je database.
 
John Peels

John Peels

12/06/2015 18:59:20
Quote Anchor link
Dank jullie wel.

Toevoeging op 12/06/2015 20:43:00:

@Thomas
Jouw oplossing werkt goed.

Maar nu het volgende:
Als een gebruiker nu uitlogt, met mijn button=uitloggen, doe ik session_destroy(). So far so good.

Maar wanneer een gebruiker gewoon in het script het 'venster' sluit wordt er geen session_destroy() gedaan.

Als ik nu weer in wil loggen kan dat niet, omdat de sessie nog actief is. Hoe kan ik dit 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.