Tutoriál PHP: Ako si "zaheslovať" webové stránky

Ako si  "zaheslovať" webové stránky

Sprístupňovanie obsahu webových stránok je často riešený problém. V tomto článku sa budeme venovať sprístupneniu obsahu webových stránok na základe zadania mena a hesla prostredníctvom webového formulára. Podobným postupom sa rieši aj prihlasovanie vo webových stránkach, avšak v našom prípade to nie je celkom o prihlasovaní, nakoľko meno a heslo, ktoré budeme používať nebude uložené v databáze MySQL. Ukážeme si, ako sa používa session premenná, a ako sa s ňou pracuje. Session sa označuje ako superglobálna premenná, pomocou ktorej sa prenášajú informácie medzi stránkami. Klasická - lokálna premenná tvorená znakom dolar "$" má platnosť v rámci jedného php dokumentu. Ak by sme ju chceli použiť na inej podstránke, svoju hodnotu by stratila. To neplatí pre premennú session, kde je hodnota uložená a dá sa použiť v rámci celej webovej stránky. Session pri svojej činnosti využíva cookie a tiež aj jedinečné číslo , tzv. identifikátor označovaný ako ID alebo SID.

V princípe ak sa "prihlásime" správnym menom a heslo, v premennej session sa vytvorí nejaký údaj. Ak tento údaj bude existovať, obsah stránky bude sprístupnený. Ak údaj nevznikne, to znamená, že sme nezadali správne meno alebo heslo. Vzniknutým údajom môže byť napr. premenná, v ktorej bude uložený nejaký reťazec alebo číselná hodnota. Na podstránkach, v ktorých budeme chcieť obsah sprístupňovať sa pomocou podmienky if-else overí existencia údaja a jeho hodnoty. Na základe toho sa rozhodne, či obsah podstránky bude alebo nebude vidieť.

Náš príklad bude pozostávať s týchto súborov:
index.php
- vstup na webovú stránku, obsahuje formulár na zadávanie mena a hesla
stranka.php - prvá podstránka, kde sa overí správnosť mena a hesla, vznikne session, vytvorí sa údaj a následne sa rozhodne, či bude alebo nebude vidieť obsah
stranka2.php - druhá podstránka, kde sa pomocou session prenesie údaj, overí sa či existuje a na základe toho sa sprístupní obsah
logout.php
- tzv. odhlasovanie, tento súbor zruší session a údaj v ňom uložený

Tento článok je predovšetkým o skriptovacom jazyku php. Z tohto dôvodu nebudeme v príklade využívať šablónu kaskádových štýlov (CSS).

V ďalšej časti si ukážeme kódy jednotlivých súborov ku ktorým sú pre názornosť dopísané komentáre.
index.php:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>heslovanie www stránky</title>
</head>
<body>
<p>meno:janko, heslo:hrasko</p>
<form action="stranka.php" method="post">
   <label>meno:</label><input type="text" name="user" size="10"> 
   <label>heslo:</label><input type="password" name="pass" size="10"> 
<input type="submit"  value="prihlásiť">
</form>
</body>
</html>

stranka.php

<?php
session_start(); // zapnutie sessions

if (!isset($_SESSION['prihlaseny']))
{
// odchytenie údajov z formulára do globalnych premennych - meno a heslo
$_SESSION['meno'] = $_POST['user'];
$_SESSION['heslo'] = $_POST['pass'];
$_SESSION['prihlaseny'] = "nie"; /*údaj, ktorého existenciu budeme overovať*/
}
// overenie správnosti mena a hesla  (janko, hrasko)

    if ($_SESSION['meno'] == "janko" and $_SESSION['heslo'] == "hrasko")
	  {
		  $_SESSION['prihlaseny'] = "ano";
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>heslovaný obsah</title>
</head>
<body>
<h3>prihlásený používateľ: <? echo $_SESSION['meno']?>, 
<a href="logout.php">[odlasit]</a></h3>

<a href="stranka2.php">na dalsiu stranku</a>
<a href="index.php">[späť]</a>

</body>
</html>	  
<?php	  
	  }
	else
	  {
		  echo "<center>zadali ste zle meno alebo heslo.</center>";
		  echo "<center><a href=\"index.php\">[na formular]</a></center>";
	  }

?>

stranka2.php:

<?php
session_start(); 

    if ($_SESSION['prihlaseny'] == "ano")
	  {
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>heslovaný obsah</title>
</head>
<body>
<h3>prihlásený používateľ: <? echo $_SESSION['meno']?>, 
<a href="logout.php">[odlasit]</a></h3>

<p>toto je už druhá podstránka</p>
<a href="stranka.php">[späť]</a>

</body>
</html>	  
<?php	  
	  }
	else
	  {
		  echo "<center>zadali ste zle meno alebo heslo.</center>";
		  echo "<center><a href=\"index.php\">[na formular]</a></center>";
	  }

?>

logout.php

<?php
// subor s kodom, ktory zrusi globalnu premennu sessions
session_start();
session_destroy(); // zahodenie (zrusenie) sessions


?>
<h3>boli ste odhlaseny,<a href="index.php">[formular]</a></h3>
Rubriky: