Сессии в PHP

Сессии в PHP

Рассмотрим пример простой сессии, работающей с четырьмя страницами. Первая страница (page1.php) представляет собой простенькую формочку, где пользователь вводит имя, которое потом «запоминается».

После того, как пользователь нажал «Enter», он попадает на страницу page2.php, при посещении которой открывается сессия и регистрируется переменная $username.

После этого, пользователь нажимает на ссылку и попадает на страницу page3.php, при этом, как видно, его имя «не забыто», т.е. переменная сессии не уничтожается, когда пользователь перешел на другую страницу сайта.

При нажатии на ссылку, пользователь попадает на страницу page4.php, в результате чего происходит разрегистрация сеансовой переменной и уничтожение сессии.

После разрегистрации сеансовой переменной значение массива $_SESSION[‘username’] уже недоступно.

Более подробно о работе с сессиями вы можете почитать в нашем учебнике по языку PHP в разделе — Сессии и cookie в PHP

Первая страница (page1.php)

Вторая страница (page2.php)
Открывается сессия и регистрируется переменная $username.
Третья страница (page3.php)
Сессия сохранена. Имя пользователя не забыто.
Четвертая страница (page4.php)
Разрегистрация сеансовой переменной и уничтожение сессии.

Проверка: включены ли cookie у пользователя

Как проверить включен ли cookie у пользователя с помощью php?код ниже поможет решить данный вопрос

Отправка почты на php (Функция mail)

Отправка почты осуществляется с помощью специального созданного PHP клаccа для отправки сообщений

Сохраните класс отправки почты под именем mail_class.php. Скрипт проверки можете сохранить под любым именем, например sendmail.php.
Внимание! В тексте скрипта предварительно подставьте реальный почтовый адрес. Запустите на выполнение проверочный скрипт sendmail.php. Если все сработало правильно, то вам придет письмо на тот адрес, что вы указали в проверочном скрипте.
… Хотя в некоторых случаях подобное письмо может не дойти до адресата. Например, оно может быть заблокировано антиспамовыми фильтрами.

Проверочный скрипт (senmail.php)

Подсчёт числа строк в программном проекте

Функция предназначена для подсчёта числа строк в программных проектах, состоящих из множества вложенных директорий. Конечно, число строк не может свидетельствовать в полной мере о затраченных усилиях и времени на программный проект, но является важным показателем в оценке сложности проекта.

Код рекурсивной фукнции scan_dir, которая обходит директории

Воспользоваться результатами можно при помощи следующего кода

Код вызова функции scan_dir()

nette-logo-oval

Работа с формами


Предусмотрена валидация как на стороне клиента (javascript), так и на стороне сервера. Присутствует встроенная защита от атак (XSS и CSRF). Несколько доступных режимов рендеринга формы. Интернационализация (i18n) позволяет создавать мультиязычные формы.

В целом, по функциональности и конструкциям похоже на формы Zend Framework, но как-то более легко и свежо. Вместо страшных зендовских декораторов – более понятные на первый взгляд wrappers.

 

Собственный шаблонизатор


Latte. С хитрыми макросами, встроенными в HTML-теги. На вид, гораздо более читаемо, чем нативный PHP.

Важно, что шаблонизатор эскейпит переменные по умолчанию при выводе на страницу, что не позволяет забыть об этом. Упоминается некоторая умная технология Context-Aware Escaping, позволяющая автоматически корректно эскейпить различные переменные. Собственно, громких названий в этом фреймфорке хватает. Но, может, это не так и страшно.

Шаблонизатор должен быть быстрым, так как компилит шаблоны в чистый PHP код и сохраняет их в кэше.

В целом, шаблонизатор более простой и понятный, по сравнению с Smarty.

 

Конфиги


Удобные конфиги. Предлагается их писать в формате
NEON. Весьма любопытный формат, вероятно, добавит читаемости огромных деревьям конфигурации. Конфиги можно делить на файлы и мерджить с приоритетами. Одна из черт, которая допускает использование этого фреймворка в больших проектах.

 

Кроме того


Механизм для сессий с поддержкой секций во избежание конфликтов имен в больших проектах. Проработанная система кэширования, с разными вариантами хранения значений, тегами и приоритетами. Автолоадер, которому можно указать директории, которые он просканирует на предмет наличия классов и интерфейсов и сохранит эту информацию в кэше.

 

Пример загрузки файлов на сервер (upload) на языке php

Приложение для загрузки файлов на сервер представляет собой HTML-форму (upload.html) и скрипт upload.php для ее обработки.

Замечание: Вы можете загрузить промышленную версию системы загрузки файлов на сервер из раздела downloads. Система Image Java Editor позволит вам не только загрузить файл на сервер, но и изменить его размер, фон и др.

Код формы (upload.html)

Код скрипта обработки формы (upload.php)

Атрибут entype формы определяет вид кодировки, которую браузер применяет к параметрам формы. Для того чтобы отправка файлов на сервер действовала, атрибуту entype необходимо присвоить значение multipart/form-data. По умолчанию этот атрибут имеет значение application/x-www-form-urlencoded.

Элемент ввода этой формы должен иметь тип file.

После того, как получен HTTP-запрос, содержимое загруженного файла записывается во временный файл, который создается в каталоге сервера, заданном по умолчанию для временных файлов, если другой каталог не задан в файле php.ini (директива upload_tmp_dir).

Характеристики загруженного файла доступны через двумерный массив $_FILES.

Cкрипт upload.php загружает файл на сервер и копирует его в каталог /path/to/file/.

В некоторых случаях требуется ограничить размер файла, который может быть загружен на сервер. К примеру, чтобы разрешить загрузку на сервер только файлов с размером не более 3 Мбайт, в приведенном скрипте содержится код:

Максимальный размер загружаемого файла можно также задать при помощи директивы upload_max_filesize, значение которой по умолчанию равно 2 Мбайт:

Отправка почты на php (Функция mail)

Функция предназначена для отправки письма с сайта с вложенным файлом и разработана участниками нашего форума Trianon и elenaki во время совместного обсуждения. Создадим HTML-форму, предназначенную для заполнения пользователем

HTML-форма index.php

Обработчик simple_mail.php HTML-формы index.php может выглядеть следующим образом

Обработчик simple_mail.php

Замена строки во всех файлах директории с неограниченным числом вложенных поддиректорий

Функция предназначена для рекурсивного спуска по всем вложенным поддиректориям корневой директории и замене заданной подстроки во всех встреченых файлах.

Код рекурсивной фукнции scan_dir(), которая обходит директории

Воспользоваться результатами можно при помощи следующего кода

Код вызова функции scan_dir()

Постраничная навигация на файлах

Скрипт предназначен отображения определённого числа позиций из файла и генерации ссылок на следующие позиции. Пусть имеется файл text.txt следующего формата.

Файл данных text.txt

Тогда скрипт, выводящий по три позиции на странице может выглядеть так, как это представлено ниже

Постраничная навигация

Резервное копирование на PHP

Наверняка многие имеют в хояйстве внешний жёсткий диск (стоит удовольствие около 100$) или Flash-ку внушительных размеров (дороже, но компактнее), однако до резервного копирования критически важных данных руки не доходят, так как их занимают критически важные задачи :))). При помощи PHP можно осуществлять резервное копирование при помощи нажатии одной клавиши мыши или кнопки Enter. Допустим производится копирование всей информации с диска D: на диск H:, причём таким образом, чтобы все данные, предварительно записанные на диск H: уничтожались. Решить эту задачу можно при помощи рекурсивного спуска по дереву каталогов, так как это описывается ниже.

Можно, конечно запускать этот скрипт через локальный Apache, но боюсь, что вам это надоест через неделю — хорошо бы организовать что-то попроще. Для того чтобы в Windows скрипты воспринимались как исполняемые программы, необходимо привязать обработчик PHP к расширению *.php. Для этого выделите любой PHP-файл и в контекстном меню выберите пункт Свойства. После чего, нажмите кнопку Изменить. В открывшемся окне выберите кнопку Найти. В открывшемся диалоговом окне выберите файл C:\PHP\php.exe

В корневой директории PHP находится три исполняемых модуля: php.exe, php-cgi.exe и php-win.exe. php-cgi.exe предназначен для совместной работы с Web-сервером, именно он обрабатывает запросы к PHP-скриптам, если PHP установлен не модулем. php.exe предназначен для консольной обработки скриптов, при его запуске появляется чёрное окно консоли, в которую выводится весь внешний вывод скрипта. php-win.exe позволяет запускать PHP-скрипты без открытия окна консоли в качестве процесса со скрытым окном. Если вы не хотите, чтобы при запуске PHP-скриптов открывались окна, можно выбрать именно этот обработчик.

Теперь можно и иконку скрипта на рабочий стол вытащить — по крайней мере перед глазами будет. Однако лень человеческая не знает границ, иначе бы не появились компьютеры. Хорошо бы заставить это чудо инженерной мысли самостоятельно запускать процесс резеврного копирования. Обычно для этого применяют cron.

Классическую реализацию cron для Windows можно загрузить по адресу http://www.nncron.ru/download.shtml. На странице представлено две версии cron — nnCron, условно бесплатная программа с Windows-интерфейсом и nnCron LITE — бесплатная программа, с классическим интерфейсом через конфигурационный файл crontab. Рекомендуется использовать именно nnCron LITE, так как знание синтаксиса конфигурационного файла cron.tab позволит без труда работать с UNIX-версией cron на сервере хост-провайдера. На странице http://www.nncron.ru/download.shtml можно также обнаружить русскую документацию по синтаксису cron.tab и различные плагины к nnCron.

Столь не хитрые манипуляции избавят вас от проблемы резервного копирования и организации рейд-массивов в домашних условиях, которые на платах начального уровня работают через пень колоду.