Webmaster общности: Predpriemach.com | SearchEngines.bg

    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