$tiedot->salasana = "Huiputus"; // Jos kirjautumissivu vanhentunut, ei pääse sisään: if (time() - $hamy > $tuoreusaika) { $_SESSION['tunnistus'] = 'stop!'; $viesti = "Kirjautumisaika ylittyi! Kirjaudu uudelleen!"; $ktunnus = ""; // Ei näytetä turvallisuuden vuoksi. $sisalto = nayta_kirjautuminen($ktunnus, $hamynimi); } else { $_SESSION['tunnistus'] = 'kunnossa'; // Kertoo ajan, jolloin viimeksi käyttäjä jotakin tehnyt: $_SESSION['viim_aktiivisuus'] = time(); // Otetaan kirjautumisaika muistiin. $_SESSION['kirjautumisaika'] = time(); $_SESSION['tiedot'] = $tiedot; aseta_online(true, $_SESSION['tiedot']->id, $tietokantaolio); // Haetaan viimeinen uloskirjautumisaika: $viimeksi_ulos = hae_vika_ulosaika($_SESSION['tiedot']->id, $tietokantaolio); // Tallennetaan viimeinen uloskirjautumisaika sessiomuuttujaan: // (tarvitaan esim. uusien pikakommenttien selvittämisessä) $_SESSION['edellinen_uloskirjausaika_sek'] = $viimeksi_ulos; // Haetaan ikä $alaikainen = true; if (!on_alaikainen_tai_elakkeella($_SESSION['tiedot']->id, $tietokantaolio)) { $alaikainen = false; } /* Luodaan teemat-olio alaikäisyyden huomioon ottoa yms. varten: */ $teemat = new Teemat($alaikainen); // Asetetaan hakuajat sessiomuuttujaan ensimmäisellä kerralla: $teema_idt = $teemat->get_teema_arvot(); // Seuraavassa trim, koska joskus tuli ongelmaa tyhjistä
/** * Kirjaa käyttäjän ulos hänen niin halutessaan tai pakolla kun * aikaa on kulunut laiskasti tietyn ajan verran. Ei aseta headeria ts. * ohjaa kirjautumissivulle. * * * @param <type> $online */ function kirjaa_ulos($tietokantaolio) { $omaid = $_SESSION['tiedot']->id; kirjaa_vierailutiedot($omaid, $_SESSION['kirjautumisaika'], $tietokantaolio); aseta_online(false, $omaid, $tietokantaolio); // Aktiivisuusmerkintä: $viimeksi_aktiivi = time(); $aktiivisuuslaji = Aktiivisuus::$ULOSKIRJAUTUMINEN; paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji); unset($_SESSION['tiedot']); // Vapauttaa muuttujan unset($_SESSION['tunnistus']); // Vapauttaa muuttujan unset($_SESSION['kuvat_katsottu_viimeksi']); unset($_SESSION['ylaluokka_id_lj']); //$tietokantaolio->sulje_tietokanta(); Ei tarpeen ja aiheuttaa varoituksia lokiin. }
/** * Kirjaa käyttäjän ulos eli lopettaa session ja poistaa tiedot muisteista. * @param <type> $omaid * @param <type> $tietokantaolio */ function kirjaudu_ulos($omaid, $tietokantaolio) { if (isset($_SESSION['tiedot'])) { $kayttaja = $_SESSION['tiedot']->etunimi . " " . $_SESSION['tiedot']->sukunimi; aseta_online(false, $_SESSION['tiedot']->id, $tietokantaolio); // Aktiivisuusmerkintä: $viimeksi_aktiivi = time(); $aktiivisuuslaji = Aktiivisuus::$ULOSKIRJAUTUMINEN; paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji); // Nämä ovat tärkeitä. Tiedot tahtovat jäädä muuten jonnekin muistin // perukoille kummittelemaan. unset($_SESSION['tiedot']); // Vapauttaa muuttujan unset($_SESSION['tunnistus']); // Vapauttaa muuttujan //Ohjaa turvallisesti ja nopeasti kirjautumissivulle. header("Location: index.php?id=" . time() . "&ilmoitus_kokon=" . $kayttaja . " " . Tekstit::$ilm_kirjautui_ulos); $tietokantaolio->sulje_tietokanta(); exit; } else { return Tekstit::$virheilm_uloskirjaustoisto; } }
} //============= SUODATUS LOPPU ===================== $html = "<span class='korostus'>Linjoilla</span>\n (viimeksi aktiivinen):<br />"; if (sizeof($aktiivisuustaulukko) == 0) { $html .= "Ei muita kirjautuneita!"; } else { foreach ($aktiivisuustaulukko as $aktiivi) { // Tarkistetaan, onko henkilö ollut liian passiivinen: if ($aktiivi->vika == null) { $html .= $aktiivi->etunimi . " (??)<br />"; // Henkilöllä ei aktiivisuusmerkintöjä. } else { if (time() - $aktiivi->vika > $katkaisuaika) { $sisaan = false; // Ulos! aseta_online($sisaan, $aktiivi->id, $tietokantaolio); $html .= $aktiivi->etunimi . " (Aikakatkaistu!)<br />"; } else { $aika_sek = time() - $aktiivi->vika; $viim_akt = $aktiivi->vika; if ($aika_sek > 3599) { //$viim_akt = "(yli 1 h)"; $viim_akt = round(($aika_sek - 3600) / 60); $viim_akt = "(n. 1h " . $viim_akt . " min)"; } else { if ($aika_sek > 60) { $viim_akt = round($aika_sek / 60); $viim_akt = "(n. " . $viim_akt . " min)"; } else { $viim_akt = "(< 1 min)"; }