ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Сесії в PHP
         

     

    Інформатика, програмування

    Сесії в PHP

    Сесія - Це час, протягом якого відвідувач знаходиться на сайті. Часто виникає потреба в тому, що б на протязі сеансу користувача супроводжували деякі змінні. Можна записати ці змінні в cookie, але якщо змінних багато, то цей спосіб не дуже зручний. Набагато ефективніше в такий ситуації є використання сеансових змінних. Про це і піде мова в цієї статті.

    Механізм роботи сесій

    Напевно вам цікавий механізм роботи сесій. Ну що ж, я розповім. Приміром при вході на сайт користувачеві надається випадковий ідентифікатор - SID. Він зберігається на комп'ютері користувача в cookie c ім'ям PHPSESSID. Взагалі це ім'я виставляється у файлі php.ini, але мова зараз не про це. Якщо ж у браузері відвідувача вимкнено отримання cookie, то цей ідентифікатор із значенням чіпляється до всіх url протягом сесії. Під час створення сесії на сервері створюється файл, ім'я якого збігається з PHPSESSID. У цьому файлі містяться всі сеансові змінні. Однак сеансові змінні так само можуть бути збережені і в базі даних - все залежить від конфігурації PHP. За замовчуванням ці змінні зберігаються у файлі в тій дірректоріі, в якій лежить скрипт, який створив сеанс. При зверненні до сеансовий змінної сервер відкриває (або робить запит до бази даних) сеансовий файл і шукає там значення потрібної змінної.

    Створення сесії

    Сесія створюється за допомогою функції session_start (). Коли Ви робите вона перевіряє, чи існує вже створена сесія. Якщо ні, то вона створює сесію. Синтаксис функції:

    boolean session_start ();

    При створення сеансу функція спочатку присвоює користувачеві SID, відправляє cookie і створює файл з сеансовий змінними. Дуже легко і зручно.

    Знищення сесії

    Якщо вам з якихось причин закортіло знищити сесію, то скористайтеся функцією session_destroy (). Синтаксис функції:

    boolean session_destroy ();

    Ця функція знищує сеансові змінні і сеансовий файл (якщо ці змінні були в ньому). Зверніть увагу, що ця функція не знищує cookie з SID на ком'ютера відвідувача.

    Створення сеансових змінних

    Ну а тепер про те, заради чого взагалі замислювалася технологія сесій - про створення сеансових змінних. Цим займається функція session_register (). Синтаксис функції:

    boolean session_register (mixed name [, Mixed ...]);

    Слід помітити, що ця функція лише створює сеансові змінні, і нічого більше. Прісвайвать значення їм доведеться самостійно. Робиться це як у випадку з звичайними змінними. До того ж ця функція неявно викликає session_start (). Втім з такого прикладу буде все ясно.

    Як дізнатися, чи була зареєстрована мінлива

    Це можна дізнатися за допомогою функції session_is_registered (). Синтаксис функції:

    booleansession_is_registered (string name);

    Перший приклад

    Тепер ви знаєте достатньо, що б користуватися сеансовий змінними. На основі отриманих знань можна реалізувати, наприклад, найпростіший лічильник відвідувань. Він буде рахувати скільки сторінок переглянув користувач за один сеанс.

    session_start (); //створюємо сесію

    // якщо мінлива page_hits не була зареєстрована

    // то реєструємо її та присвоюємо початкове значення

    if (! session_is_registered ( 'page_hits')) (

    session_register ( 'page_hits');

    $ page_hits = 0;

    )

    $ page_hits ++;

    echo "Ви проглянули вже $ page_hits сторінок";

    ?>

    Такий код можна розмістити на будь-якій сторінці вашого сайту.

    Знищення сеансових змінних

    Сеансовий змінні знищуються функцією session_unregister () з таким же успіхом, як і створюються. Синтаксис функції:

    boolean session_unregister (string name);

    Це може бути корисним у тому випадку, якщо вам не потрібна більше сеансовий мінлива і ви хочете використовувати її як звичайну змінну.

    переглянути/Отримання SID

    Отримати або змінити поточний сеансовий ідентифікатор легко. Досить скористатися функцією session_id (). Синтаксис функції:

    string session_id ([string sid ]);

    Якщо був переданий параметр sid, то сеансовий ідентифікатор змінюється. В іншому випадку функція просто повертає SID.

    Збереження та відновлення сеансових змінних

    В PHP збереження та відновлення сеансових змінних зведено до використання функцій session_encode () і session_decode (). Це дуже зручно, оскільки функція session_encode () формує рядок яку можна де не будь зберегти і надалі розшифрувати функцією session_decode (). Цей рядок дуже зручно зберігати в базі даних, оскільки не потрібно створювати окремі поля та й обьем скрипта зменшується. Отже, синтаксис цих фукнцій:

    boolean session_encode ();

    string session_decode (string data);

    З першою функцією більш менш зрозуміло. А другий функції необхідно передати зашифровану функцією session_encode () рядок. Без прикладу сприймається не дуже легко. Давайте розглянемо простенький приклад.

    Припустимо, що сесія вже розпочато і в змінній $ u_id зберігається код користувача.

    ...

    // де то в скрипті

    $ id = Session_id ($ u_id);

    // підключаємося до бази

    mysql_pconnect ( "localhost", "root", "") or die ( "Не можу підключитися до базі ");

    mysql_select_db ( "mysite"); //вибираємо базу

    // тут вибирається поле зі збереженою рядком сеансових змінних

    $ query = "SELECT s_data FROM saved_users_data WHERE uid = '$ id'";

    $ result = mysql_query ($ query) or die ( "Query '$ query' failed ");

    $ user_s_data = mysql_result ($ result, 0, 's_data');

    // тепер наша стркоа зберігається в змінній $ user_s_data

    session_decode ($ user_s_data);

    // припустимо, що серед збережених сеансових змінних

    // була мінлива $ my_str

    echo $ my_str;

    // буде виведений рядок, що була збережена в попередньому сеансі

    ...

    ?>

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.soch.imperium.by

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status