PHP-de sessiya arkaly awtorizasiýa
Bizimiň awtorizasiýamyz şeýle işlemeli: saýda awtorizasiýadan
geçmek isleýän ulanyjy, login.php sahypasyna gire,
dogry login we paroly girizýär we ondan soň saýdyň sahypalary
boýunça awtorizasiýadan geçen bolup geze.
Saýdyň beýleki sahypalarynyň bizimiň ulanyjymyzyň awtorizasiýadan geçendigini bilmegi üçin, biz bu hakda bellikni sessiyada sakamaly.
Häzirki wagtda bizimiň awtorizasiýamyz ýetirçilikli işlemeýär, sebäbi biz heniz sessiany goşup goýmadyk we saýdyň beýleki sahypalary ulanyjynyň awtorizasiýadan geçen ýa-da geçmedigini anyklap bilmeýär.
Awtorizasiýa hakdaky belligi sessia üýtgeýjisinde $_SESSION['auth']
sakarys - eger ol ýerde true ýazylan bolsa, onda ulanyjy awtorizasiýadan
geçendir, eger null bolsa - onda awtorizasiýadan geçmedi.
Geliň, kodymyza degişli düzediş girizeliň:
<?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 {
// logini ýa-da paroly nädogry girizdi
}
}
?>
Indi saýdyň islendik sahypasynda ulanyjynyň awtorizasiýadan geçen ýa-da geçmedigini şeýle ýollary barlaýp bileris:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Awtorizasiýadan geçmedik ulanyja bir sahypanyň tekstini tutuşlygyna ýapmak bolýar:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>tekiz awtorizasiýadan geçen ulanyjylar üçin tekst</p>
</body>
</html>
<?php else: ?>
<p>haýyş edýäris, awtorizasiýadan geçiň</p>
<?php endif; ?>
Diňe bir sahypanyň bölegini ýapmak bolýar:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>isli bir ulanyjylar üçin tekst</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'tekiz awtorizasiýadan geçen ulanyjylar üçin tekst';
}
?>
<p>isli bir ulanyjylar üçin tekst</p>
</body>
</html>
Bizimiň saýdyzda, login.php sahypasyndan başga-da,
1.php, 2.php we 3.php sahypalary
hem bar diýeliň. Bu sahypalara diňe awtorizasiýadan
geçen ulanyjynyň girip bilmegini üpjün ediň.
Bizimiň saýdyzda ýene bir index.php sahypasy hem
bar diýeliň. Bu sahypanyň bir bölegi ähli ulanyjylar üçin
açyk, ýöne beýleki bölegi diňe awtorizasiýadan geçenler
üçin açyk bolşy ýaly ediň.
Sessiýa ýazylyşda, üstünlikli awtorizasiýadan soň, ulanyjynyň loginy hem ýazylyşy ýaly kodyňyzy üýtgediň.
Saýdyň islendik sahypasyna girilende, awtorizasiýadan geçen ulanyjynyň öz logini görünýändigi, ýöne awtorizasiýadan geçmedigiň bolsa awtorizasiýa sahypasyna çykgyt görünýändigi ýaly ediň.