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









/ Трябва да сте регистриран за да напишете коментар /
От: WindowsXP
22:28 29-04-2010
Не е лошо и един logout.php
Съдържание:

От: WindowsXP
22:29 29-04-2010
session_start();
session_destroy();
От: viksasoft94
4:02 21-05-2010
Не е лошо!
От: Fakeheal
16:33 01-10-2010
Добре е да се поясни, ако някой начинаещ в момента учи това и "не му се получава кода" трябва да оправи тагът :)
От: BorislawBotew
2:40 02-02-2011
Да, само logout му липсва иначе е полезно ! :)
1