Сессии в PHP
Состав работы
|
|
|
|
Работа представляет собой zip архив с файлами (распаковать онлайн), которые открываются в программах:
- Microsoft Word
Описание
В разнообразных конференциях, посвященных программированию меня в первую очередь всегда интересуют такие разделы, как "Web-программирование" и "Скрипты". По большей части, вопросы о PHP в таких форумах довольно простые, требующие лишь общего понимания PHP, тем не менее, самый часто задаваемый вопрос по моим наблюдениям, это: "Что такое сессии в PHP и с чем/как их можно кушать?". Хотелось бы разъяснить этот вопрос раз и навсегда.
С самого начала PHP все приняли на ура, но как только на этом языке стали создавать достаточно крупные проекты, разработчики столкнулись с новой проблемой - в PHP отсутствовало понятие глобальных переменных! То есть, выполнялся некий скрипт, посылал сгенерированную страницу клиенту, и все ресурсы, используемые этим скриптом уничтожались. Попробую проиллюстрировать: предположим есть две страницы одного сайта, index.php и dothings.php. Исходники к этим страницам выглядят так:
- index.php -
<?php
$a = "Меня задали на index.php";
?>
<html><body>
<?php
echo $a;
?>
</body></html>
- dothings.php -
<html><body>
<?php
echo $a;
?>
</body></html>
Если выполнить эти два скрипта, то на первой странице мы увидим надпись "Меня задали на index.php", а вторая страница будет пустой.
Разработчики web-сайтов, недолго думая, стали использовать cookie для хранения глобальных переменных на стороне клиента. Процесс выглядел примерно так: пользователь приходит на главную страницу сайта, делает какие-то действия, и вся информация, связанная с этим пользователем, которая может потребоваться на других страницах сайта, будет храниться у него в браузере в виде cookie. Этот метод меет довольно серьезные минусы, из-за которых от PHP в своё время отвернулось немало разработчиков. Например, нам нужно авторизовать пользователя, чтобы разрешить ему доступ к закрытым (или принадлежащим только ему) разделам сайта. Придёться <кидать> пользователю cookie, который будет служит его последующим идентификатором на сайте. Такой подход становится очень громоздким и не удобным, как только сайт начинает собирать всё больше и больше сведений о поведении пользователя, ведь всю информацию, посылаемую пользователю, желательно кодировать, чтобы её нельзя было подделать. Ещё совсем недавно подделкой cookie можно было <повалить> не один чат, а порой и пробраться в чужую почту. К тому же есть ещё на свете странные люди, у которых браузер cookie не поддерживает.
При использовании сессий вся информация хранится не на стороне клиента, а на стороне сервера, и потому лучше защищена от манипуляций злоумышленников. Да и работать с сессиями куда проще и удобнее, так как все данные автоматически проходят через алгоритмы криптографии модуля PHP. В броузере клиента, лишь хранится уникальный идентификатор номера сессии, либо в форме cookie, либо в виде переменной в адресной строке броузера, какой из двух способов использовать для передачи идентификатора сессии между страницами интерпретатор PHPвыбирает сам. Это на 100 безопасно, так как идентификатор сессии уникален, и подделать его практически невозможно (об этом чуть далее, в разделе о безопасности сессий).
С самого начала PHP все приняли на ура, но как только на этом языке стали создавать достаточно крупные проекты, разработчики столкнулись с новой проблемой - в PHP отсутствовало понятие глобальных переменных! То есть, выполнялся некий скрипт, посылал сгенерированную страницу клиенту, и все ресурсы, используемые этим скриптом уничтожались. Попробую проиллюстрировать: предположим есть две страницы одного сайта, index.php и dothings.php. Исходники к этим страницам выглядят так:
- index.php -
<?php
$a = "Меня задали на index.php";
?>
<html><body>
<?php
echo $a;
?>
</body></html>
- dothings.php -
<html><body>
<?php
echo $a;
?>
</body></html>
Если выполнить эти два скрипта, то на первой странице мы увидим надпись "Меня задали на index.php", а вторая страница будет пустой.
Разработчики web-сайтов, недолго думая, стали использовать cookie для хранения глобальных переменных на стороне клиента. Процесс выглядел примерно так: пользователь приходит на главную страницу сайта, делает какие-то действия, и вся информация, связанная с этим пользователем, которая может потребоваться на других страницах сайта, будет храниться у него в браузере в виде cookie. Этот метод меет довольно серьезные минусы, из-за которых от PHP в своё время отвернулось немало разработчиков. Например, нам нужно авторизовать пользователя, чтобы разрешить ему доступ к закрытым (или принадлежащим только ему) разделам сайта. Придёться <кидать> пользователю cookie, который будет служит его последующим идентификатором на сайте. Такой подход становится очень громоздким и не удобным, как только сайт начинает собирать всё больше и больше сведений о поведении пользователя, ведь всю информацию, посылаемую пользователю, желательно кодировать, чтобы её нельзя было подделать. Ещё совсем недавно подделкой cookie можно было <повалить> не один чат, а порой и пробраться в чужую почту. К тому же есть ещё на свете странные люди, у которых браузер cookie не поддерживает.
При использовании сессий вся информация хранится не на стороне клиента, а на стороне сервера, и потому лучше защищена от манипуляций злоумышленников. Да и работать с сессиями куда проще и удобнее, так как все данные автоматически проходят через алгоритмы криптографии модуля PHP. В броузере клиента, лишь хранится уникальный идентификатор номера сессии, либо в форме cookie, либо в виде переменной в адресной строке броузера, какой из двух способов использовать для передачи идентификатора сессии между страницами интерпретатор PHPвыбирает сам. Это на 100 безопасно, так как идентификатор сессии уникален, и подделать его практически невозможно (об этом чуть далее, в разделе о безопасности сессий).
Другие работы
Контрольная работа. История России.1-й семестр. 15-й вариант:
MrNik91
: 6 февраля 2014
Уважаемый слушатель, дистанционного обучения,
Оценена Ваша работа по предмету: История России
Вид работы: Контрольная работа
Оценка:Отлично
Дата оценки: 26.01.2014
Рецензия:Уважаемый .....
Вы представили отличный ответ
50 руб.
Гидравлика и нефтегазовая гидромеханика Хабаровск ТОГУ Задача 34 Вариант 0
Z24
: 25 ноября 2025
Определить время, за которое разность уровней в двух резервуарах уменьшится с Н1 до Н2 (рис.30). Уровень воды в правом резервуаре поддерживается постоянным, диаметр левого резервуара D, резервуары соединены между собой трубопроводом диаметром d (эквивалентная абсолютная шероховатость kэ=0,5).
220 руб.
Контрольная работа по дисциплине: Теоретические основы современных технологий беспроводной связи. Вариант 03
Roma967
: 5 февраля 2023
Введение
Задание и исходные данные
Таблица 1 – Исходные данные
Вариант: 3
Стандарт: AMPS
f, МГц: 800
F, МГц: 10.0
P, %: 15
Pb: 0.03
Na, тыс.: 70
Gbs, дБ: 12
Pms, дБВт: -105
S, км^(2): 200
Hbs, м: 45
Определить параметры сотовой сети для города и мощность передатчика базовой станции Pbs, необходимую для обеспечения заданного качества связи.
Для составления полного частотного плана сети подвижной радиосвязи (СПРС), т.е. плана внедрения конкретных номиналов частот для каждой из базовых станций
1500 руб.
Техническая термодинамика Контрольная работа 1 Задача 10
Z24
: 26 ноября 2025
Смесь идеальных газов задана объемными долями: rCO2 = 0,4, rO2 = 0,35 и rN2 = 0,25. Общая масса смеси М = 10 кг. В начальном состоянии параметры смеси р1 = 0,9 МПа и t1 = 330ºС. В результате адиабатного расширения объем смеси увеличивается до значения V2 = 7,5 м³. Определить объем смеси в начальном состоянии, температуру и давление смеси в конечном состоянии, работу расширения и изменение внутренней энергии смеси. Считать, что теплоемкость газов на зависит от температуры и определяется по табл.
250 руб.