Eli tarvitsisin pientä viilausta sisäänkirjautumisen kanssa. Itse saan vain sotkua aikaiseksi kun yritän säätää noita, joten käännyn teidän puoleen.
Ensinnäkin pitäisi saada erilliset sivut joissa olisi esim. "Väärä tunnus tai salasana" ja "Et ole kirjautunut sisään" -ilmoitukset. Nyt tulee vain "Kirjauduit ulos" (eli logout.php) molemmissa tapauksissa.
Sitten pitäisi saada erillinen lista tunnuksista (joita vain minä voin lisätä ja poistaa) joko erilliseen tiedostoon (esim. tunnukset.txt) tai jotenkin ujutettua tuohon koodiin. Ja mitään erillistä admin-aluetta tai rekisteröintiä ei siis tarvita.
lomake.php (sivu jolta kirjaudutaan): <form method="post" action="index.php"> Tunnus<br /> <input type="text" name="tunnus" /><br /> Salasana<br /> <input type="password" name="salasana" /><br /> <input type="submit" value="Kirjaudu" /> </form>
// login.php (jokaisen salatun sivun alkuun) <?php $tunnus = $_POST['tunnus']; $salasana = $_POST['salasana']; session_start(); $_SESSION["tunnus"] = "$tunnus"; $_SESSION["salasana"] = "$salasana"; ?>
// index.php (jokainen salattu sivu tähän tapaan) <?php include_once("login.php");?> <?php session_start(); $tunnus = $_SESSION["tunnus"]; $salasana = $_SESSION["salasana"]; if($salasana == salasana && $tunnus == tunnus){ ?> <p><b>Tervetuloa, <?php echo "$tunnus";?>!</b></p> <p>muu salatun sivun sisältö tähän</p> <?php } else { header("Location: logout.php"); } ?>
// logout.php <?php session_start(); unset($_SESSION["tunnus"]); unset($_SESSION["salasana"]); ?> <p>Kirjauduit ulos. Jos yritit äsken kirjautua sisään, tunnuksesi tai salasanasi oli todennäköisesti väärin.</p>
Tässä tulee pikku esimerkki kirjautumisen teosta:
<!-- lomake.php --> <form action="sisaan.php" method="post"> <p>Tunnus: <input type="text" name="tunnus"></p> <p>Salasana: <input type="password" name="ss"></p> <p><input type="submit" value="Lähetä"></p> </form>
<?php // sisaan.php // käyttäjät ja salasanat $tiedot["pepe"] = "aaa"; $tiedot["repe"] = "bbb"; $tiedot["sepe"] = "ccc"; if ($tiedot[$_POST['tunnus']] == "" || $tiedot[$_POST['tunnus']] <> $_POST['ss']) { die("Tunnus tai salasana on väärin!"); } else { session_start(); // asetetaan istuntomuuttuja $_SESSION['tunnus'] = $_POST['tunnus']; // siirrytään etusivulle header("Location: index.php"); } ?>
<?php // index.php session_start(); // kirjautumisen tarkistus if (isset($_SESSION['tunnus'])) { echo "<p>Olet kirjautunut sisään tunnuksella "; echo "<b>" . $_SESSION['tunnus'] . "</b>.</p>"; echo "<p><a href=\"ulos.php\">Kirjaudu ulos</a></p>"; } else { echo "<p>Et ole kirjautunut sisään.</p>"; echo "<p><a href=\"lomake.php\">Kirjaudu sisään</a></p>";} ?>
<?php // ulos.php session_start(); // poistetaan istuntomuuttuja unset($_SESSION['tunnus']); // siirrytään etusivulle header("Location: index.php"); ?>
Tässä käyttäjien tiedot on tallennettu tiedostoon sisaan.php taulukkoon $tiedot. Kun jollain sivulla pitää tarkistaa, onko käyttäjä kirjautunut, pitää katsoa, onko istuntomuuttujaa tunnus olemassa. Lisää tietoa istuntojen käytöstä on oppaassa.
Paljon kiitoksia, juuri sellainen mitä ajattelinkin! :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.