Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kysymys sessioneista (PHP)

Sivun loppuun

TH [29.11.2003 23:40:19]

#

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?

Antti Laaksonen [30.11.2003 00:51:22]

#

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.php?tunnus=phpj7

leftover [30.11.2003 07:38:11]

#

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.

Olga [30.11.2003 11:51:38]

#

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.

TH [30.11.2003 19:25:09]

#

Jes, kiitokset kaikille vastauksistanne! :)

TH [04.12.2003 20:38:28]

#

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?

kenkku [06.12.2003 20:21:08]

#

Miksi tuossa on kaksi kertaa session_start?

TH [06.12.2003 23:12:40]

#

Luulin että se pitää aina kirjoittaa ennen kuin tekee jotain sessioneilla.. No, joka tapauksessa sen poistaminen ei vaikuttanut millään tavoin.. :(

tsuriga [06.12.2003 23:26:09]

#

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?

tsuriga [09.06.2004 01:58:19]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta