Magtiging deur Sessie in PHP
Ons magtiging moet so werk: 'n gebruiker
wat op die webwerf wil magtig, gaan na
die bladsy login.php, voer die korrekte
gebruikersnaam en wagwoord in en beweeg dan
deur die webwerf se bladsye as gemagtig.
Sodat ander bladsye van die webwerf weet dat ons gebruiker gemagtig is, moet ons 'n aanduiding hiervan in die sessie stoor.
Tans is ons magtiging nie heeltemal werkend nie, aangesien ons die sessie nog nie gekoppel het nie en ander webwerf-bladsye nie kan verstaan of die gebruiker gemagtig is of nie.
Ons sal die magtigingsaanduiding in die sessieveranderlike
$_SESSION['auth'] stoor - as daar
true geskryf is, is die gebruiker gemagtig,
en as daar null is - dan is hy nie gemagtig nie.
Kom ons maak die ooreenstemmende wysiging in ons kode:
<?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 {
// verkeerde gebruikersnaam of wagwoord ingevoer
}
}
?>
Nou kan ons op enige bladsy van die webwerf nagaan of die gebruiker gemagtig is of nie, op hierdie manier:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Jy kan die teks van 'n bladsy heeltemal toegesluit maak vir 'n ongemagtigde gebruiker:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>teks slegs vir gemagtigde gebruiker</p>
</body>
</html>
<?php else: ?>
<p>magtig asseblief</p>
<?php endif; ?>
Jy kan slegs 'n gedeelte van die bladsy toemaak:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>teks vir enige gebruiker</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'teks slegs vir gemagtigde gebruiker';
}
?>
<p>teks vir enige gebruiker</p>
</body>
</html>
Veronderstel op ons webwerf, behalwe die bladsy login.php,
is daar ook bladsye 1.php, 2.php
en 3.php. Maak dit so dat slegs gemagtigde
gebruikers toegang tot hierdie bladsye kan kry.
Veronderstel op ons webwerf is daar ook 'n bladsy
index.php. Maak dit so dat 'n deel
van hierdie bladsy oop is vir alle gebruikers,
en 'n deel - slegs vir gemagtigdes.
Wysig jou kode sodat met suksesvolle magtiging die gebruiker se gebruikersnaam ook in die sessie geskryf word.
Maak dit so dat wanneer 'n gebruiker na enige bladsy van die webwerf gaan, 'n gemagtigde gebruiker sy gebruikersnaam sien, en 'n ongemagtigde gebruiker - 'n skakel na die magtigingsbladsy.