Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Передача идентификатора сессии



Для того, что бы сервер определял каждый последующий запрос к сайту с одного и того же клиента как уже идентифицированный, а не новый, нужно выполнить ряд следующих условий. Идентификатор можно передать лишь двумя способами - в cookies или POST/GET запросом. Эти параметры можно задавать в файле php.ini, с помощью команды ini_set(), или файлах настройки веб-сервера, задавая следующие свойства:

session.use_cookies (значение 1- идентификатор передается в куках, 0- не передается)

session.use_trans_sid (значение 1- PHP передает идентификатор, добавляя его к URL и формам, 0- не передает)

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

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

9. Багатофайлові сценарії PHP. Включення файлів, принцип роботи include, include_once, require, require_once

Posted in: Многофайловые сценарии PHP, By: admin, At: Сентябрь 15th, 2008

Всегда хорошей практикой является максимально подробное разбиение сценариев на модули, то есть проектирование функций таким образом, чтобы их можно было использовать в других РНР-сценариях. В этом отношении, по мере того, как вы будете накапливать растущую библиотеку функций, правильная их организация становится все более важной. В РНР такая организация достигается разделением сценариев на множество файлов и включением их по необходимости. К тому же, размещая важную статическую информацию (такую, как параметры подключения к базе данных) в различных файлах, ее можно надежнее защитить от общего доступа, располагая вне дерева каталогов Web-сервера. Независимо от причин, включение внешних файлов осуществляется PHP-директивами include, include_once, require и require_once. Как и можно предположить, из этих четырех директив только include и require существенно отличаются друг от друга, и на их различиях будет сосредоточено внимание. Сначала посмотрим, как каждая из этих вещей работает.
НА ЗАМЕТКУ -
Единственная разница между include/require и include_once/require_once связана с тем, скопько раз данный файл загружается. Когда испопьэуются операторы include_once/ require_once, файл не может быть загружен или выполнен множество раз.

Оператор require_once() подключает/include и вычисляет специфицированный файл в процессе выполнения скрипта. Это поведение напоминает оператор require() с той только разницей, что, если код из файла уже был подключён, он не будет подключён ещё раз. См. в документации к require() информацию о работе этого оператора.

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

Оператор require() подключает/include и вычисляет определённый файл.

require() и include() идентичны почти во всём, за исключением того, как они обрабатывают неудачное выполнение. include() выдаёт Warning!, а require() выдаёт Fatal Error. Иначе говоря, не бойтесь использовать require(), если вам нужно, чтобы отсутствующий файл останавливал обработку страницы. include() не работает таким образом: скрипт всё равно продолжит работу. Убедитесь также в наличии соответствующей установки include_path.

Примечание: до версии PHP 4.0.2 применялись следующие правила: require() всегда пыталась читать файл назначения, даже если строка, в которой он указан никогда не выполнялась. Условный оператор не влиял на require(). Однако, если строка, в которой появляется require(), не выполнялась, не выполнялся и никакой код целевого файла. Аналогично циклические структуры не влияли на поведение require(). Хотя код, содержащийся в целевом файле, всё ещё является субъектом цикла, сама require() появлялась только один раз.

Оператор include_once() подключает и вычисляет специфицированный файл в ходе выполнения скрипта. Поведение аналогично оператору include(), но, если код файла уже был подключён, он не будет подключён вновь. Как следует из названия, он будет подключён только однократно.

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

Оператор include() подключает и вычисляет специфицированный файл.

Нижеследующая документация применима также к require(). Эти две конструкции идентичны во всём, кроме обработки облома. include() выводит Warning!, а require() выдаёт Fatal Error. Иначе говоря, используйте require(), если вы хотите, чтобы отсутствие файла останавливало процессинг страницы. include() не работает таким образом, скрипт продолжит выполнение. Не забудьте также о соответствующей установке include_path.

Когда файл подключён/included, содержащийся в нём код наследует область видимости переменной строки, на которой возникло подключение. Любые переменные, доступные на этой строке в вызывающем файле, будут доступны в вызываемом файле, вперёд от этой точки.

Если подключение возникает внутри функции в вызывающем файле, то весь код, содержащийся во включаемом файле, будет работать так, как если бы он был определён внутри. Так что он будет следовать области видимости переменной.

Когда файл подключается, разбор переходит из режима PHP в режим HTML в начале целевого файла и вновь продолжает после конца. Исходя из этого, любой код внутри файла назначения, который должен выполняться как PHP-код, обязан быть заключён в правильные стартовый и конечный тэги РНР.

Если "URL fopen-оболочки" включены в PHP (как в конфигурации по умолчанию), вы можете специфицировать файл, подключаемый с использованием URL (через HTTP), вместо локального pathname. Если целевой сервер интерпретирует целевой файл как PHP-код, переменные могут передаваться в подключаемый файл с использованием URL-строки запроса, как в HTTP GET. Строго говоря, это не то же самое, что подключение файла и наследование им области видимости переменных родительского файла; ведь скрипт работает на удалённом сервере, а результат затем подключается в локальный скрипт.

Поскольку include() и require() являются специальными конструкциями языка, вы обязаны заключить их в блок операторов, если это внутри условного блока.

Обработка возвращает: можно выполнить оператор return() внутри подключённого файла, чтобы прервать обработку этого файла и возвратиться в скрипт, вызвавший его. Также можно возвращать значения из подключённых файлов. Вы можете принять значение вызова include как обычно.

Примечание: в PHP 3 возвращаемое значение может не появиться внутри блока, если это не блок функции; в этом случае return() применяется к этой функции, а не ко всему файлу.

10. Створення класу, синтаксис опису. Створення об'єкта





Дата публикования: 2015-07-22; Прочитано: 348 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.05 с)...