PHP : Защита на уеб страници чрез сесии
За да дам пример за проста сесия ще използвам код от миналия урок.
Така може да проследите и логиката ми.
Ето формуляра от миналия урок като този път ще се казва sessionform.html (примерно).
<html>
<head></head>
<body>
<FORM ACTION="sessionstart.php" METHOD=POST>
Потребител:
<INPUT TYPE="text" NAME="potrebitel" value=""><br>
Парола:
<INPUT TYPE="password" NAME="pas"><br>
<INPUT TYPE=submit VALUE="ВХОД">
</body>
</html>Следващия файл ще се казва sessionstart.php и кода му е :
<?
session_start();
?>
<?
//Скрипта получава данните от формуляра
$potrebitel= $HTTP_POST_VARS['potrebitel'];
$pas= $HTTP_POST_VARS['pas'];
//Тук се проверява дали сте написали правилното име и парола
if ($potrebitel!='bobi' || $pas!='2233')
{echo "Вие нямате достъп до тази страница";
exit;}
else
{
//Ако сме написали коректно "парола" и "потребител"
//създава се сесиина променлива с името bobi.
$HTTP_SESSION_VARS['potrebitel']= $potrebitel;
echo "Здрасти ";
echo $potrebitel;
echo "<br><a href=pro.php>NEXT</a>";
}
?>Както се вижда ако сте написали правилно потребител и парола се създава сесиина променлива и
се появява линк към друга страница.
Тук вече няма нужда да да се пишат парола.
Следващата страница трябва да ви „познае“ по създадената сесиина променлива, която вече си има
име -> potrebitel и стойност->bobi .
Следващия скрипт pro.php ще може да провери дали съществува сесиина променлива и каква стойност има тя.Ако е създадена променлива с името potrebitel тя ще допусне потребителя до съдържанието и ще може да разбере кой е потребителя по стойността на сесиина променлива .
Ето го и него:
<?
session_start();
?>
<?
//Проверява има ли отворена сесия и ако няма ни изкарва "Нямате достъп до тази страница"
//Ако има променливата $potrebitel приема стойността на сесиината променлива
// която в случая е bobi
if (isset($HTTP_SESSION_VARS['potrebitel']))
{
$potrebitel=$HTTP_SESSION_VARS['potrebitel'];
}
else
{
echo "Нямате достъп до тази страница";
exit;
}
echo "Здрасти за втори път ";
echo $potrebitel;
echo "<br><a href=pro2.php>Next</a>";
?>Ето го и следващия скрипт, който се казва pro2.php
Той също ще разреши достъп само ако има отворена сесия .
<?
session_start();
?>
<?
//Проверява има ли отворена сесия и ако няма ни изкарва "Нямате достъп до тази страница"
//Ако има променливата $potrebitel приема стойността на сесиината променлива
// която в случая е bobi
if (isset($HTTP_SESSION_VARS['potrebitel']))
{
$potrebitel=$HTTP_SESSION_VARS['potrebitel'];
}
else
{
echo "Нямате достъп до тази страница";
exit;
}
echo "Здрасти отново за трети път";
echo $potrebitel;
echo "<br><a href=pro.php>Връщане към pro.php</a>";
?>
В случая се връщаме към pro.php където следва пак проверка дали потребителя се е логнал.
Всяка една от тези страници ще изведе „Нямате достъп до тази страница“ ако потребителя не е минал през формуляра и не е написал коректно потребителско име и парола.Ще бъде отрязан още в
началото и няма да види съдържанието.
Ето и всичко стъпка по стъпка :
Създавате 4 файла.
sessionform.html – формуляр в който се попълват потребителско име и парола.
sessionstart.php – този php файл проверява дали потребителя е написал правилното име и парола
след което създава сесиина променлива с име potrebitel и стойност bobi
pro.php – проверява дали има създадена сесиина променлива с име potrebitel.
Ако не е – спира изпълнението на скрипта и изкарва съобщение „Нямате достъп до тази страница“ .
Ако съществува сесия с такова име – допуска потребителя до съдържанието на страницата.
pro2.php – Прави същото като pro.php .
Koe e общото:
Всички PHP файлове започват с
<?
session_start();
?>Без този ред сесиината променлива ще се унищожи.
Тоест – трябва този код да съществува във всички страници, които
ползват по някаква причина сесиината променлива.
Урока е подготвен специално за http://web-tourist.net


