Sesijas un sīkdatnes ļauj saglabāt informāciju par lietotāju starp dažādiem lapu pieprasījumiem. Bez tām katra lapa būtu pilnīgi neatkarīga — serveris nezinātu, kas ir lietotājs.
Sesijas (sessions)
Sesija saglabā datus serverī un identificē lietotāju ar unikālu sesijas ID (kas glabājas sīkdatnē). Sesija dzīvo, kamēr pārlūkprogramma ir atvērta vai līdz norādītajam termiņam.
Sesijas sākšana un datu saglabāšana
<?php
session_start(); // Obligāti jāizsauc katra faila sākumā pirms jebkādas izvades!
$_SESSION['lietotājs'] = 'Jānis';
$_SESSION['loma'] = 'admin';
$_SESSION['pieslēdzies'] = time();
echo "Sesija izveidota!";
?>
Sesijas datu nolasīšana
<?php
session_start();
if (isset($_SESSION['lietotājs'])) {
echo "Sveiks, " . $_SESSION['lietotājs'] . "!";
} else {
echo "Nav pieteicies.";
}
?>
Sesijas beigšana (izrakstīšanās)
<?php
session_start();
$_SESSION = []; // Notīrīt visus sesijas datus
session_destroy(); // Iznīcināt sesiju
echo "Izrakstījies!";
?>
Praktisks piemērs: pieteikšanās
<?php
session_start();
// Pieteikšanās
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$lietotājvārds = $_POST['lietotajvards'] ?? '';
$parole = $_POST['parole'] ?? '';
// Vienkāršots piemērs — praksē izmanto datubāzi!
if ($lietotājvārds === 'admin' && $parole === 'parole123') {
$_SESSION['lietotājs'] = $lietotājvārds;
header('Location: profils.php');
exit;
} else {
$kļūda = "Nepareizs lietotājvārds vai parole.";
}
}
?>
<form method="post">
<?php if (!empty($kļūda)): ?>
<p style="color:red"><?= $kļūda ?></p>
<?php endif; ?>
<label>Lietotājvārds: <input type="text" name="lietotajvards"></label><br>
<label>Parole: <input type="password" name="parole"></label><br>
<button type="submit">Pieteikties</button>
</form>
Sīkdatnes (cookies)
Sīkdatnes glabā datus lietotāja pārlūkprogrammā. Tās var dzīvot arī pēc pārlūkprogrammas aizvēršanas.
Sīkdatnes iestatīšana
<?php
// setcookie(nosaukums, vērtība, derīguma_termiņš, ceļš)
setcookie('valoda', 'lv', time() + 86400 * 30, '/'); // 30 dienas
setcookie('tēma', 'tumša', time() + 86400 * 365, '/'); // 1 gads
?>
setcookie() jāizsauc pirms jebkādas HTML izvades.
Sīkdatnes nolasīšana
<?php
$valoda = $_COOKIE['valoda'] ?? 'lv';
$tēma = $_COOKIE['tēma'] ?? 'gaiša';
echo "Valoda: $valoda, tēma: $tēma";
?>
Sīkdatnes dzēšana
<?php
// Iestata derīguma termiņu pagātnē
setcookie('valoda', '', time() - 3600, '/');
?>
Sesija vs sīkdatne
| Sesija | Sīkdatne |
|---|---|
| Dati glabājas serverī | Dati glabājas pārlūkprogrammā |
| Drošāka (lietotājs nevar mainīt) | Mazāk droša (var rediģēt) |
| Dzīvo kamēr atvērta pārlūkprogramma | Dzīvo līdz norādītajam termiņam |
| Piemērota: pieteikšanās, sensitīvi dati | Piemērota: valodas izvēle, tēma, atcerēties mani |










