Често в сайтовете се налага ограничаване на достъпа до някои части от съдържанието, например до определени директории или страници. Следващият пример е за проста форма на HTML и PHP за логване и достъп до определени зони от сайт, защитени с парола и потребителско име.
HTML кодът на формата може да бъде следния:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login Форма</title>
<body>
<h2>Login форма</h2>
<form action="login.php" method="post">
Потребител:
<input type="text" name="potrebitel" />
Парола:
<input type="password" name="parola" />
<input type="submit" value="Влез">
</form>
</body>
</html>
Съхранете горната страница като loginform.html. В браузъра тя ще изглежда по следния начин:
Сега трябва да направим скрипта login.php. Той може да бъде следния:
<?php
$user = $_POST["potrebitel"];
$pass = $_POST["parola"];
if ($user == "user1" && $pass == "pass1")
{
header("location: https://goodexample.eu");
}
else
{
echo "<p style=\"font-weight:bold;\">Грешно потребителско име или парола!</p>";
}
?>
Съхранете кода във файл login.php и го разположете в същата директория като loginform.html.
В горния код чрез масива $_POST взимаме от формата съдържанието на полетата за потребителско име и парола като задаваме в квадратните скоби ключовете за тези стойности, т.е. имената на полетата, които са potrebitel и parola. Присвояваме ги като стойности съответно на променливите $user и $pass.
След това чрез конструкцията if-else задаваме на скрипта следната задача:
Ако е изпълнено условието стойността на променливата $user да е user1 и стойността на променливата $pass да е pass1, тогава да се зареди уеб адресът https://goodexample.eu.
Ако това условие не е изпълнено, тогава покажи съобщението „Грешно потребителско име или парола!„.
Това означава, че ако използвате в login формата потребителско име user1 и парола pass1, в браузъра ви ще се зареди страницата, до която желаете да има ограничен достъп.
Ако искате достъпът да е с друго потребителско име и парола трябва да замените user1 и pass1 с друго съчетание от букви и/или цифри.
За пренасочване на браузъра използваме функцията header(), чийто синтаксис е:
header(Location: URL)
На мястото на уеб адреса (URL) може да се изпише пълния адрес на страницата, която трябва да се зареди (както е в примера), а може да се укаже и само името на страницата, ако тя се намира в същата папка (директория), в която се намират формата и скрипта. Тогава редиректването ще е във вида:
header("location: secretpage.php");
В този пример са зададени само една парола и едно потребителско име за достъп до защитената страница. С помощта на конструкцията switch може да направим множество идентификации за различни потребители, които да имат достъп до различни части от сайта и да ползват за целта различни потребителски имена и пароли. В този случай скриптът login.php може да изглежда по следния начин:
<?php
$user = $_POST["potrebitel"];
$pass = $_POST["parola"];
switch(true)
{
case ($user == "user1" && $pass == "pass1"): header("location: https://goodexample.eu");
break;
case ($user == "user2" && $pass == "pass2"): header("location: secretdir2/secretpage2.php");
break;
case ($user == "user3" && $pass == "pass3"): header("location: anothersecretpage.php");
break;
default: echo "<p style=\"font-weight:bold;\">Грешно потребителско име или парола!</p>";
}
?>
Чрез горния скрипт се задават три идентификации за достъп съответно user1/pass1, user2/pass2 и user3/pass3, които водят до различни страници от сайта.