Головна

Реєстрація змінних сесії

  1. Квиток №10 мекала! Функції двох змінних
  2. Квитки №11, 12 Похідні і диференціали функції багатьох змінних
  3. В яких випадках проводиться державна реєстрація баз даних?
  4. Взаємозв'язок внутрішніх змінних
  5. Виникнення юридичних осіб. Порядок утворення, установчі документи, державна реєстрація
  6. ЧАС СЕСІЇ
  7. Висування, реєстрація та статус кандидатів

Однак від самих ідентифікатора та імені сесії нам користі для вирішення наших завдань небагато. Ми ж хочемо передавати і зберігати протягом сесії наші власні змінні (наприклад, логін і пароль). Для того щоб цього домогтися, потрібно просто зареєструвати свої змінні:

session_register (імя_переменной1, імя_переменной2, ...);

Зауважимо, що реєструє значення, а імена змінних. Зареєструвати змінну досить один раз на будь-якій сторінці, де використовуються сесії. Імена змінних передаються функції session_register () без знака $. Всі зареєстровані таким чином змінні стають глобальними (т. Е. Доступними з будь-якої сторінки) протягом даноїсесії роботи з сайтом.

Зареєструвати змінну також можна, просто записавши її значення в асоціативний масив $ _SESSION, Т. Е. Написавши

$ _SESSION [ 'Ім'я_змінної'] = 'значеніе_переменой';

У цьому масиві зберігаються всі зареєстровані (т. Е. Глобальні) змінні сесії.

Доступ до таких змінних здійснюється за допомогою масиву $ _SESSION [ 'ім'я_змінної'] (або $ HTTP_SESSION_VARS [ 'ім'я_змінної'] для версії PHP 4.0.6 і більш ранніх). Якщо ж в налаштуваннях php включена опціяregister_globals, То до сесійним змінним можна звертатися ще й як до звичайних змінних, наприклад так: $ ім'я_змінної.

якщо register_globals= Off (відключені), то користуватися session_register () для реєстрації змінних, переданих методами POST або GET, не можна, т. е. це просто не працює. І взагалі, не рекомендується одночасно використовувати обидва методи реєстрації змінних, $ _SESSION и session_register (). (Починаючи з версії PHP 5.3.0 не рекомендується для реєстрації змінних сесії використовувати функцію session_register (); більш того, починаючи з версії PHP 6.0.0, ця функція стане недоступна. Замість цього, для реєстрації змінних сесії рекомендується користуватися масивом $ _SESSION.)

приклад 12.3. Реєстрація змінних

Зареєструємо логін і пароль, що вводяться користувачем на сторінці авторизації.

Login: Password: ";} else {$ _SESSION [ 'login'] = $ _ GET [ 'login']; // Реєструємо змінну login $ _SESSION [ 'passwd'] = $ _ GET [ 'passwd']; // Реєструємо змінну passwd // тепер логін і пароль - глобальні // змінні для цієї сесії if ($ _GET [ 'login'] == "pit" && $ _GET [ 'passwd'] == "123") {Header ( "Location: secret_info.php"); // Перенаправляємо на сторінку // secret_info.php} else echo "Невірний введення, спробуйте ще раз ";} print_r ($ _ SESSION); // Виводимо всі змінні сесії?>

Лістинг 12.3a. authorize.php

Тепер, потрапивши на сторінку secret_info.php, та й на будь-яку іншу сторінку сайту, ми зможемо працювати з введеними користувачем логіном і паролем, які будуть зберігатися в масиві $ _SESSION. Таким чином, якщо змінити код секретної сторінки (зауважте, ми перейменували її в secret_info.php) так:

Secret info </ title> </ head> <body> <p> Тут я хочу ділитися секретами з одним Петром. </ Body> </ html> <p>Лістинг 12.3b. secret_info.php</p> <p>То ми отримаємо в браузері на секретній сторінці наступне:</p> <!--g00gle_2-->Array ([login] => pit [passwd] => 123) Тут я хочу ділитися секретами з одним Петром. <p>В результаті отримаємо <i>список змінних</i>, Зареєстрованих на authorize.php і, власне, саму секретну сторінку.</p> <p>Що це нам дає? Припустимо, хакер хоче прочитати секрети Васі і Петі. І він якось дізнався, як називається секретна сторінка (або сторінки). Тоді він може спробувати просто ввести її адресу в рядку браузера, минаючи сторінку авторизації (введення пароля). Щоб уникнути такого проникнення в наші таємниці, потрібно дописати всього пару рядків у код секретних сторінок:</p><? Phpsession_start (); // Створюємо нову сесію або // відновлюємо текущуюprint_r ($ _ SESSION); // Виводимо всі змінні сессііif (! ($ _SESSION [ 'Login'] == "pit" && $ _SESSION [ 'passwd'] == 123)) // перевіряємо правильність // пароля-логіна Header ( "Location: authorize. php "); // Якщо помилка, то відкривається на // сторінку авторизації?> <Html> <head> <title> Secret info </ title> </ head> ... // тут розташовується // секретна інформація:) </ html> <p>Лістинг 12.3c. 2-я версія secret_info.php</p><br><br><td align=right><a href="/8/8-4/8-49337.html">створення сесії</a></td><td align=center> | </td><td> <a href="/8/8-4/8-49339.html">Видалення змінних сесії</a></td> <!--трафмаг_1--> <hr><p align=center> <a href="/8/8-4/8-49327.html">функція fopen</a> | <a href="/8/8-4/8-49328.html">функція fwrite</a> | <a href="/8/8-4/8-49329.html">функція fread</a> | <a href="/8/8-4/8-49330.html">функція fgets</a> | <a href="/8/8-4/8-49331.html">функція readfile</a> | <a href="/8/8-4/8-49332.html">функція file</a> | <a href="/8/8-4/8-49333.html">Робота з файлами в PHP. Копіювання, перейменування і видалення файлів</a> | <a href="/8/8-4/8-49334.html">авторизація доступу</a> | <a href="/8/8-4/8-49335.html">механізм сесій</a> | <a href="/8/8-4/8-49336.html">Налаштування сесій</a> |</p> </div> <center>© um.co.ua - учбові матеріали та реферати</center> <!--клікандер--> </body> </html>