Kirjautuminen session avulla PHP:llä
Kirjautumisemme pitäisi toimia seuraavasti: käyttäjä,
joka haluaa kirjautua sivustolle, menee
sivulle login.php, syöttää oikeat
käyttäjätunnuksen ja salasanan ja sitten liikkuu sivuston sivuilla jo kirjautuneena.
Jotta muut sivuston sivut tietäisivät, että käyttäjämme on kirjautunut, meidän täytyy tallentaa sessioon merkintä siitä.
Toistaiseksi kirjautumisemme ei ole aivan toimiva, sillä sessiota emme ole vielä ottaneet käyttöön ja muut sivuston sivut eivät voi tunnistaa, onko käyttäjä kirjautunut vai ei.
Tallennamme kirjautumismerkinnän sessio-muuttujaan
$_SESSION['auth'] - jos sinne
on kirjoitettu true, niin käyttäjä on kirjautunut,
ja jos null - niin ei ole kirjautunut.
Tehdään vastaava muutos koodiimme:
<?php
session_start();
if (!empty($_POST['password']) and !empty($_POST['login'])) {
$login = $_POST['login'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
$_SESSION['auth'] = true;
} else {
// väärä käyttäjätunnus tai salasana
}
}
?>
Nyt missä tahansa sivuston sivussa voimme tarkistaa, onko käyttäjä kirjautunut vai ei, seuraavalla tavalla:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Voit suojata jonkin sivun tekstin kokonaan kirjautumattomilta käyttäjiltä:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>teksti vain kirjautuneille käyttäjille</p>
</body>
</html>
<?php else: ?>
<p>ole hyvä ja kirjaudu sisään</p>
<?php endif; ?>
Voit suojata vain osan sivusta:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>teksti kaikille käyttäjille</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'teksti vain kirjautuneille käyttäjille';
}
?>
<p>teksti kaikille käyttäjille</p>
</body>
</html>
Oletetaan, että sivustollamme, sivun login.php lisäksi,
on myös sivut 1.php, 2.php
ja 3.php. Tee niin, että näille
sivuille pääsevät käsiksi vain kirjautuneet
käyttäjät.
Oletetaan, että sivustollamme on myös sivu
index.php. Tee niin, että osa
tästä sivusta on avoinna kaikille käyttäjille,
ja osa - vain kirjautuneille.
Muokkaa koodiasi niin, että onnistuneen kirjautumisen yhteydessä sessioon tallennetaan myös käyttäjän käyttäjätunnus.
Tee niin, että kun käyttäjä menee mille tahansa sivuston sivulle, kirjautunut käyttäjä näkee oman käyttäjätunnuksensa, ja kirjautumaton - linkin kirjautumissivulle.