Kuinka PHP -skripti pystyy tarkistamaa, löytyykö sessionit, että käyttäjä pysyy kirjautuneena?
https://www.ohjelmointiputka.net/oppaat/opas.
hei käyttäisit edes 1 minuutin etsimiseen ennen ku alat kyselee.
Hei kuule ihan tiedoksi vaan, että käytin ainakin 2 min... Ja toiseksi olen lukenut ton koko opassarjan läpi miljoonaan kertaan, ja tossa ei ole suoraa vastausta kysymykselleni...
Jos taulukossa $_SESSION on tyhjää, niin käyttäjä ei ole kirjautuneena.
*** sisaan.php <?php session_start(); $_SESSION["nimi"] = "Matti"; ?>
*** tarkistus.php <?php session_start(); if ($_SESSION["nimi"] == "") { echo "Et ole kirjautunut sisään."; } else { echo "Moikka, " . $_SESSION["nimi"] . "!"; } ?>
No siis periaatteessa ton mä tajusin, mutta miten voidaan asettaa sessionit, niin että jos sä vaihdat sivua ja palaat takaisin edelliseen sivuun, niin tiedot on edelleenkin tallella? Voiko sessioneihin asettaa jotain voimassaoloaikaa kuten evästeisiin?
https://www.php.net/session, löytyy muutamakin asetus session voimassaoloaikaan.
Istuntomuuttujaan voi myös sijoittaa oman aikalaskurin:
*** sisaan.php <?php session_start(); $_SESSION["nimi"] = "Matti"; $_SESSION["aika"] = time() + 5 * 60; ?>
*** tarkistus.php <?php session_start(); if ($_SESSION["nimi"] == "" || $_SESSION["aika"] < time()) { echo "Et ole kirjautunut sisään."; } else { echo "Moikka, " . $_SESSION["nimi"] . "!<br>"; echo "Istunto on voimassa vielä "; echo $_SESSION["aika"] - time(); echo " sekuntia."; } ?>
Triton kirjoitti:
- - jos sä vaihdat sivua ja palaat takaisin edelliseen sivuun, niin tiedot on edelleenkin tallella?
Voisitko vielä selventää tätä? Jos joka sivun alussa kutsutaan funktiota session_start, niin istunnon pitäisi kyllä säilyä.
Mulla se istunto ei jostain syystä jatku jos vaihtaa sivua ja kaikissa sivuissa on session_start()...
Mitäs jos laittasit vaikka vähän omaa koodia näkyviin tänne niin olisi helpompi analysoida vikaa.
Tossa on nyt se kirjatumisjuttu:
<?php session_start(); //Muodostetaan yhteys ja valitaan tietokanta $yhteys = mysql_connect("localhost","root","kissa2"); mysql_select_db("customdata",$yhteys); //Tuodaan tunnus ja salasana -tiedot turvallisesti sovellukseen ja hashataan salasana $pass = md5($_POST['pass']); $user = $_POST['user']; //MySQL -kysely: Etsii oikeita pareja tietokannasta $kysely = mysql_query("SELECT * FROM customdata WHERE Tunnus = ('$user') AND Salasana = ('$pass')"); lomake(); //Tarkistetaan tunnusparit if (mysql_fetch_array($kysely,MYSQL_ASSOC) == true) { session_register('session_user'); $sess_user = $_SESSION['session_user'] = $user; echo "<br><br> Kirjautuneena: \n $sess_user ";} else echo "<br><br> Tunnus ei täsmännyt!"; function lomake() { //Kirjautumislomake echo'<table cellspacing="0" cellpadding="0" style = "margin-left:45; margin-top:50;">'; echo'<form action = "kirjautuminen.php" method = "POST">'; echo'<tr>'; echo'<td>Käyttäjätunnus:</td>'; echo'<tr>'; echo'<td><input name = "user" size = "14"></td>'; echo'</tr>'; echo'</tr>'; echo'<tr>'; echo'<td>Salasana:</td>'; echo'<tr>'; echo'<td><input type = "password" name = "pass" size = "14"></td>'; echo'</tr>'; echo'<tr>'; echo'<td><input type = "submit" value = "Kirjaudu"></td>'; echo'</tr>'; echo'</form></table>'; } ?>
Kannattaa varmaan vaihtaa salasana kaikilla niillä nettisivuilla ja muuallakin, missä käytät tuota tuossa koodissa näkyvää. Jos siis sitä jossain käytät.
Juu no en mä tota passua käyty, laitoin tohon nyt vaan jonkun...
Aihe on jo aika vanha, joten et voi enää vastata siihen.