Информационные технологии язык программирования Java

Замена переменных в двойном интеграле

Машиностроительное черчение
Выполнение сечений
Правила выполнения технических чертежей
Виды аксонометpических пpоекций
Эскиз детали
Нанесение размеров на чертежах
Чтение сборочных чертежей
Основные способы проецирования
Сопротивление материалов
Сопромат задачи
Сопротивление материалов примеры
Кинематика примеры решения задач
Статика примеры решения задач
Физика, электротехника
Электротехника
Электромагнетизм
Расчет режимов трехфазных цепей
Расчет электрических цепей постоянного и переменного тока
Методы расчета электрических цепей
Примеры  решения типовых задач по электротехнике
Физика оптика Курс лекций
Примеры решения задач по классической физике
Примеры решения задач контрольной работы по физике
Физика решение задач
Молекулярная физика и термодинамика
Курс лекций по атомной физике
Ядерная модель атома
Квантовая механика
Рентгеновские спектры
Первый газовый лазер
Металлы, диэлектрики и полупроводники по зонной теории.
Полупроводниковые диоды и триоды (транзисторы)
Радиоактивное излучение и его виды
Ядерные реакция

Понятие о ядерной энергетике

Информатика
Лекции Java
Язык JavaScript
Интернет
Язык PHP
Архитектура ПК
Высшая математика
Вычисление интегралов и рядов
Примеры вычисления интеграла
Примеры выполнения контрольной работы по математике
комплексные числа
Последовательности
Предел функции
Непрерывные функции
Дифференциальное исчисление
Формула Тейлора
Определенныеинтегралы
Двойной интеграл
Тройные интеграл
Криволинейные интегралы
Элементы теории поля
Интегралы от параметра
Элементы тензорного
исчисления
Примеры решения задач
Теория множеств
Построения графика функции
Элементарная математика
Интегралы
Кратные интегралы
Векторный анализ
Аналитическая геометрия
Интегральное исчисление
Дифферинциальные урав.
Элементарная математика
Математический анализ
Мат. анализа часть 3
Комплексные числа
 


1. ВВЕДЕНИЕ В JAVA

2. ПЕРВОЕ ПРИЛОЖЕНИЕ

3. ПЕРВЫЙ АПЛЕТ

4. РИСОВАНИЕ В ОКНЕ АПЛЕТА

5. СОБЫТИЯ

6. КОМПОНЕНТЫ

7. РАБОТА С СИСТЕМОЙ LAYOUT MANAGER

8. РАБОТА С ПАНЕЛЯМИ

9. ОКНА И ДИАЛОГОВЫЕ ПАНЕЛИ

10. МНОГОПОТОЧНОСТЬ

11. РАБОТА С ФАЙЛАМИ

12. СОЗДАНИЕ СЕТЕВЫХ ПРИЛОЖЕНИЙ

13. РАСТРОВЫЕ ИЗОБРАЖЕНИЯ И АНИМАЦИЯ

14. ЗВУК В АПЛЕТАХ JAVA

Работа с сессиями

Создание сессии

Первое, что нужно сделать для работы с сессиями (если они уже настроены администратором сервера), это запустить механизм сессий. Если в настройках сервера переменная session.auto_start установлена в значение "0" (если session.auto_start=1, то сессии запускаются автоматически), то любой скрипт, в котором нужно использовать данные сессии, должен начинаться с команды

session_start();

Получив такую команду, сервер создает новую сессию или восстанавливает текущую, основываясь на идентификаторе сессии, переданном по запросу. Как это делается? Интерпретатор PHP ищет переменную, в которой хранится идентификатор сессии (по умолчанию это PHPSESSID) сначала в cookies, потом в переменных, переданных с помощью POST- и GET-запросов. Если идентификатор найден, то пользователь считается идентифицированным, производится замена всех URL и выставление cookies. В противном случае пользователь считается новым, для него генерируется новый уникальный идентификатор, затем производится замена URL и выставление cookies.

Команду session_start() нужно вызывать во всех скриптах, в которых предстоит использовать переменные сессии, причем до вывода каких-либо данных в браузер. Это связано с тем, что cookies выставляются только до вывода информации на экран.

Получить идентификатор текущей сессии можно с помощью функции session_id().

Для наглядности сессии можно задать имя с помощью функции session_name([имя_сессии]). Делать это нужно еще до инициализации сессии. Получить имя текущей сессии можно с помощью этой же функции, вызванной без параметров: session_name();

 

Пример 12.2. Создание сессии

Переименуем наш файл index.html, чтобы обрабатывались php-скрипты, например в Index.php, создадим сессию и посмотрим, какой она получит идентификатор и имя.

<?

session_start();

 // создаем новую сессию или

 // восстанавливаем текущую

echo session_id();

 // выводим идентификатор сессии

?>

<html>

<head><title>My home page</title></head>

... // домашняя страничка

</html>

<?

echo session_name();

 // выводим имя текущей сессии.

 // В данном случае это PHPSESSID

?>

Пример 12.2. Создание сессии (html, txt)

Если проделать то же самое с файлом authorize.php, то значения выводимых переменных (id сессии и ее имя) будут такими же, если перейти на него с index.php и не закрывать перед этим окно браузера (тогда идентификатор сессии изменится).

Регистрация переменных сессии

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

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().

Пример 12.3. Регистрация переменных

Зарегистрируем логин и пароль, вводимые пользователем на странице авторизации.

<?

session_start();

  // создаем новую сессию или

 // восстанавливаем текущую

if (!isset($_GET['go'])){

  echo "<form>

 Login: <input type=text name=login>

  Password: <input type=password

 name=passwd>

 <input type=submit name=go value=Go>

 </form>";

}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 "Неверный ввод,

 попробуйте еще раз<br>";

}

print_r($_SESSION);

 // выводим все переменные сессии

?>

Листинг 12.3a. authorize.php (html, txt)

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

<?php

session_start();

 // создаем новую сессию или

 // восстанавливаем текущую

print_r($_SESSION);

 // выводим все переменные сессии

?>

<html>

<head><title>Secret info</title></head>

<body>

<p>Здесь я хочу делиться секретами

с другом Петей.

</body>

</html>

Листинг 12.3b. secret_info.php (html, txt)

То мы получим в браузере на секретной странице следующее:

Array ( [login] => pit [passwd] => 123 )

Здесь я хочу делиться секретами

с другом Петей.

В итоге получим.список переменных, зарегистрированных на authorize.php и, собственно, саму секретную страничку.

Что это нам дает? Допустим, хакер хочет прочитать секреты Васи и Пети. И он как-то узнал, как называется секретная страничка (или странички). Тогда он может попытаться просто ввести ее адрес в строке браузера, минуя страницу авторизации (ввода пароля). Чтобы избежать такого проникновения в наши тайны, нужно дописать всего пару строк в код секретных страничек:

<?php

session_start();

 // создаем новую сессию или

 // восстанавливаем текущую

print_r($_SESSION);

 // выводим все переменные сессии

if (!($_SESSION['login']=="pit" &&

 $_SESSION['passwd']==123)) 

 // проверяем правильность

 // пароля-логина

 Header("Location: authorize.php");

 // если ошибка, то перенаправляем на

 // страницу авторизации

?>

<html>

<head><title>Secret info</title></head>

... // здесь располагается

 //секретная информация :)

</html>

Листинг 12.3c. 2-я версия secret_info.php (html, txt)

Удаление переменных сессии

Кроме умения регистрировать переменные сессии (т.е. делать их глобальными на протяжении всего сеанса работы), полезно также уметь удалять такие переменные и сессию в целом.

Функция session_unregister(имя_переменной) удаляет глобальную переменную из текущей сессии (т.е. удаляет ее из списка зарегистрированных переменных). Если регистрация производилась с помощью $_SESSION ($HTTP_SESSION_VARS для версии PHP 4.0.6 и более ранних), то используют языковую конструкцию unset(). Она не возвращает никакого значения, а просто уничтожает указанные переменные.

Где это может пригодиться? Например, для уничтожения данных о посетителе (в частности, логина и пароля) после его ухода с секретной странички. Если правильные логин и пароль сохранятся и окно браузера после посещения сайта не закрыли, то любой другой пользователь этого компьютера сможет прочитать закрытую информацию.

Пример 12.4. Уничтожение переменных сессии

В файл secret_info.php добавим строчку для выхода на главную страницу:

<?php

// ... php код

?>

<html>

<head><title>Secret info</title></head>

... // здесь располагается

 // секретная информация :)

<a href="index.php">На главную</a>

</html>

Пример 12.4a. secret_info.php (html, txt)

В Index.php уничтожим логин и пароль, введенные ранее:

<?

session_start();

session_unregister('passwd');

 // уничтожаем пароль

unset($_SESSION['login']);

 // уничтожаем логин

print_r($_SESSION);

 // выводим глобальные переменные сессии

?>

<html>

<head><title>My home page</title></head>

... // домашняя страничка

</html>

Пример 12.4b. Index.php (html, txt)

Теперь, чтобы попасть на секретную страницу, нужно будет опять вводить логин и пароль.

Для того чтобы сбросить значения всех переменных сессии, можно использовать функцию session_unset();

Уничтожить текущую сессию целиком можно командой session_destroy(); Она не сбрасывает значения глобальных переменных сессии и не удаляет cookies, а уничтожает все данные, ассоциируемые с текущей сессией.

<?

session_start(); // инициализируем сессию

$test = "Переменная сессии";

$_SESSION['test']= $test;

// регистрируем переменную $test.

// если register_globals=on,

// то можно использовать

// session_register('test');

 

print_r($_SESSION);

// выводим все глобальные переменные

 

echo session_id();

// выводим идентификатор сессии

 

echo "<hr>";

session_unset();

// уничтожаем все глобальные

// переменные сессии

print_r($_SESSION);

echo session_id();

echo "<hr>";

session_destroy(); // уничтожаем сессию

print_r($_SESSION);

echo session_id();

?>

Пример 12.5. Уничтожение сессии и глобальных переменных (html, txt)

В результате работы этого скрипта будут выведены три строки: в первой - массив с элементом test и его значением, а также идентификатор сессии, во второй - пустой массив и идентификатор сессии, в третьей - пустой массив. Таким образом, видно, что после уничтожения сессии уничтожается и ее идентификатор, и мы больше не можем ни регистрировать переменные, ни вообще производить какие-либо действия с сессией.

Высшая математика Лекции, конспекты, курсовые, примеры решения задач