Pahoittelen typeryyttäni, mutta.. Pitääkö sessionit määrittää joka sivulla jotenkin, vai ovatko ne olemassa niin kauan kunnes ne erikseen lopetetaan? Katoavatko ne, jos selain suljetaan tai käyttäjä vaihtaa kokonaan toiselle sivulle? Entä jos käyttäjä vaihtaa sivua samalla sivustolla kirjoittamalla uuden osoitteen, esim. www.o.soite.net/jotain/abc.php --> www.o.soite.net/jotain/def.php. Loppuuko sessionit tällöin?
Istunto aloitetaan session_start-funktiolla. Istunnot ovat voimassa yhden selainistunnon ajan. Jos siirrytään välillä toiselle sivulle, istunto on edelleen voimassa. Mutta jos selain suljetaan, istunto päättyy. Istuntomuuttujan voi toki poistaa aikaisemminkin unset-funktiolla. Katso: https://www.ohjelmointiputka.net/oppaat/opas.
Vielä tarkennusta eli siis istunto lakkaa olemasta vasta kun kyseisen selaimen kaikki ikkunat on suljettu. Jos sulkee vain session-sivun ikkunan/tabin mutta samassa ohjelmassa on auki muita ikkunoita/tabeja, istunto jää voimaan.
Eikös se php.ini-tiedostossa määritetä, onko sessio voimassa automaattisesti myös sivuilla joissa sitä ei ole käynnistetty? Siis jos arvo session.auto_start=0, session_start() tulee läiskäistä jokaiselle sivulle missä session haluaa jatkuvan.
Jes, kiitokset kaikille vastauksistanne! :)
Vihdoinkin sain tehtyä kirjautumissysteemin, mutta uloskirjautuminen ei jostain syystä toimi.
Onkohan seuraavassa jotain vikaa, vai kenties palvelimella ongelmaa sessioneiden kanssa?
<?php session_start(); $user_logged = $_SESSION["user_logged"]; if ($user_logged == "yes") { session_start(); unset($_SESSION["user_logged"]); unset($_SESSION["user_id"]); } header("location: index.php"); ?>
Minulla on sessioneissa "user_logged" ja "user_id". Ensimmäisessä on arvona "yes" jos käyttäjä on kirjautunut, ja toisessa käyttäjän id-tunnus..
Mutta jostain syystä aina kun olen kirjautunut ja kirjaudun ulos tällä, kaikki missä katsotaan onko käyttäjä kirjautunut, toimivat tavalliseen tapaansa, mutta id:n tilalla ei ole mitään.. Enkä ole mistään muualtakaan löytänyt vikaa. Onko "yes" arvo yhä jotenkin tallella mutta "user_id" vain kadonnut?
Miksi tuossa on kaksi kertaa session_start?
Luulin että se pitää aina kirjoittaa ennen kuin tekee jotain sessioneilla.. No, joka tapauksessa sen poistaminen ei vaikuttanut millään tavoin.. :(
Minulla on samanlainen ongelma, ohjaus uudelle sivulle on vain hoidettu tyyliin meta http-equivilla. Sillä sivulla, missä suoritetaan unset, sessio ei enää ole voimassa, mutta uuden sivun latautuessa se on taas paikoillaan.
EDIT: Kysynpä samassa, jotta saakos sessioneiden avulla tarkastettua jotenkin ketkä käyttäjät ovat kirjautuneet sisään?
Uloskirjauksen voi hoitaa session_destroy() -funktiolla. Sitten, sessioiden avulla saa tehtyä tuon tarkastuksen suurinpiirtein näin (en ole vielä kokeillut):
hakee sessiotiedostot kansiosta, jonne sessiot talletetaan serverillä (session_save_path) (tähän ei välttämättä aina riitä oikeudet jos admini on niin halunnut) ja lukee niistä ketkä ovat kirjautuneet sisään.
Aihe on jo aika vanha, joten et voi enää vastata siihen.