Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

web - tec / PHP 5 для начинающи

.pdf
Скачиваний:
71
Добавлен:
12.06.2015
Размер:
26.79 Mб
Скачать

812 Приложение Д

} else {

print "\n\nПодпись готова\n";

}

fclose($sigfile);

}

?>

Сначала открывается поток стандартного ввода, который остается открытым вплоть до получения последнего ответа пользователя. Затем из каждого последующе+ го пользовательского ввода извлекается первых 100 символов. Эти символы переда+ ются функции trim(), так как, к сожалению, нажатие пользователем клавиши <Enter> передает сценарию жесткий перевод строки. После получения от пользова+ теля всех данных поток ввода закрывается и открывается файл с именем, которое вы+ брал пользователь. Составленная из ответов пользователя подпись записывается в этот файл, после чего он закрывается.

Windows+пользователи могут применить тот же сценарий, заменив строку

shell_exec("touch $sig");

на

'copy con $sig ^Z \n';

Сохраните файл. Сценарий генерирует примерно следующий вывод:

> php sigfile

PHP-генератор файла подписей. Введите свое полное имя: David Mercer

Введите свой адрес (улицу): 148 Mystreet Введите название города: Cape Town Введите название штата: WP

Введите свой почтовый индекс: 8001 Введите номер телефона: 021 555-1234

Введите e-mail-адрес: davidm@doggiesrugby.co.za

Как Вы хотите обозначить эту подпись: MySig

Подпись готова

Заключение

Очевидно, что PHP CLI обладает той же гибкостью и эффективностью, что и PHP в Web+среде. Можно с уверенностью утверждать, что потенциальные варианты приме+ нения ограничены только мощностью самого PHP, что, вообще говоря, нельзя назвать серьезным ограничением. Интерактивность, обеспечиваемая потоками, является осо+ бенно полезной. Системные администраторы могут использовать PHP CLI для решения своих повседневных задач, например, для резервного копирования, рассылки систем+ ных уведомлений и любых других административных функций. Выполняемые по распи+ санию CLI+сценарии совместно с Web+приложениями могут реализовывать такие воз+ можности, о которых раньше разработчики программ на PHP могли только мечтать.

Â

Конфигурация PHP5

Важную роль в работе PHP играет конфигурационный файл, который называется php.ini. При запуске PHP считывает конфигурационный файл и устанавливает за+ данные в нем параметры. Если PHP установлен в виде серверного модуля, то файл считывается один раз; если PHP работает как CGI, то файл считывается для каждого запускаемого экземпляра PHP.

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

С дистрибутивом PHP поставляется две версии ++++++ php.ini: php.inirecommended и php.ini-dist. Согласно рекомендациям создателей PHP dist+файл подходит для разработки, тогда как для реальной среды лучше всего использовать файл recommended. В этом файле имеется несколько параметров, которые предна+ значены для повышения производительности, но могут нарушать работу старых сце+ нариев, особенно это касается настроек register_global, которые отключены (и не будут использоваться в будущих версиях PHP). В этом приложении описывается содержимое файла php.ini-dist.

Описание файла php.ini-dist

Как уже было сказано, файл php.ini-dist подходит для разработки сценариев, но не рекомендуется для работающих сайтов. В начале книги указывалось, где распо+ ложен этот файл и как PHP находит его во время запуска, а также описывалась орга+ низация php.ini (с примерами многих инструкций и допустимых для них значений).

;;;;;;;;;;;

; ВНИМАНИЕ ;

;;;;;;;;;;;

;Это стандартный файл для новых инсталляций PHP.

;По умолчанию PHP устанавливается с конфигурацией подходящей для

814 Приложение Е

;целей разработки, а *НЕ* для использования на работающих сайтах.

;По некоторым соображениям, связанным с безопасностью

;перед размещением сайта в сети, рекомендуется изучить файл

;php.ini-recommended и страницу

;http://php.net/manual/en/security.php.

;;;;;;;;;;;;;;;;;;;

; Об этом файле ;

;;;;;;;;;;;;;;;;;;;

;Этот файл содержит большинство установок РНР. Чтобы РНР смог

;его прочитать, он должен называться 'php.ini'. PHP ищет файл в

;текущем каталоге, в случае неудачи — в каталоге, указанном в

;переменной окружения PHPRC, и, наконец, в каталоге, заданном при

;компиляции РНР (именно в таком порядке). В Windows путь,

;указанный при компиляции, соответствует каталогу Windows. Папка,

;в которой будет производиться поиск файла 'php.ini', может быть

;также переназначена с использованием ключа -с командной строки.

;

;Синтаксис файла крайне прост. Пробельные символы (пробелы,

;переводы строк, символы табуляции и т. д.) и строки,

;начинающиеся с точки с запятой (;), игнорируются (как вы,

;наверное, уже догадались). Заголовки разделов (например, [Foo])

;также пропускаются, хотя, возможно, будут учитываться в будущем.

;Директивы задаются следующим образом:

;directive=value

;Имена директив *чувствительны к регистру символов*, т.е. foo=bar

;не то же самое, что FOO=bar.

;Значение (value) может быть строкой, числом, константой РНР

;(например, Е_ALL или М_PI), одной из INI-констант (On, Off,

;True, False, Yes, No или None), выражением (например, Е_ALL &

;~E NOTICE), а также строкой в кавычках ("foo").

;В выражениях могут использоваться только побитовые операторы, а

;также скобки:

;| поразрядное ИЛИ (OR)

;& поразрядное И (AND)

;~ поразрядное НЕ (NOT)

;! логическое отрицание (NOT)

;В качестве логических флагов со значением "истина" могут быть

;использованы значения 1, On, True или Yes. Значение "ложь" дают

;0, Off, False и No.

;Пустая строка может быть задана, если после знака равенства не

;указать ничего или указать ключевое слово None:

;foo = ; устанавливаем foo равным пустой строке

; foo=none

; аналогично

; foo="none"

; устанавливаем foo равным строке 'none'

;

 

;Если в качестве значения директивы используется константа,

;определяемая в динамически загружаемом расширении

;

;(РНР-расширении или Zend-расширении), то это значение должно

;быть указано *после* строки, которая загружает расширение.

;

;Все значения в файле php.ini-dist соответствуют встроенным

;значениям по умолчанию (т.е. если php.ini не задействуется, или

;же из него удалены некоторые строки, то будут установлены

;значения по умолчанию).

Конфигурация PHP5 815

Настройки языка

Настройки языка представляют собой конфигурационные параметры, которые непосредственно влияют на режим работы PHP. Например, значение On директивы short_open_tag позволяет вместо тегов <?php и ?> использовать для ограничения PHP+кода теги <? и ?> (хотя рекомендуется все+таки использовать длинные теги).

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

Пример настройки безопасного режима: комбинация параметров safe_mode = on

и safe_mode_exec_dir = my_safe_mode_exec_dir (имя каталога вымышленное). При включенном безопасном режиме, с помощью PHP+команды exec можно запус+ кать только те исполняемые файлы, которые находятся в каталоге, указанном дирек+ тивой safe_mode_exec_dir (если он существует).

Еще один хороший пример использования безопасного режима касается перемен+ ных среды. Если разрешить пользователям устанавливать переменные среды, то это может привести к появлению серьезной бреши в безопасности всей системы, поэто+ му, когда безопасный режим включен, директива safe_mode_allowed_env_vars по умолчанию разрешает пользователям изменять только те переменные окружения, ко+ торые начинаются с префикса PHP. Отключение этой настройки позволяет изменять все переменные окружения. Директива safe_mode_protected_env_vars идет еще дальше и не позволяет изменять переменные (заданные списком отделенных друг от друга запятой имен) независимо от того, какой префикс задан в директиве safe_mode_allowed_env_vars.

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

;;;;;;;;;;;;;;;;;;;;

;Настройки языка ;

;;;;;;;;;;;;;;;;;;;;

;Разрешает работу РНР для сервера Apache. engine=On

;Разрешает использовать короткий тэг <?. Иначе будут

;распознаваться только тэги <?php и <script>.

;ПРИМЕЧАНИЕ: использования коротких тегов следует избегать при

;разработке приложений или библиотек, которые задуманы для

;распространения или будут использоваться на чужих PHP-серверах,

;поскольку короткие теги на этих серверах могут не поддерживаться.

;Для создания переносимого распространяемого кода короткие теги

;использовать не следует

short_open_tag=On

; Позволяет использовать тэги в стиле ASP <% %>. asp_tags=Off

816 Приложение Е

;Число значащих цифр после запятой, которые отображаются для

;чисел с плавающей точкой.

precision=12

;Признак коррекции дат (проблема 2000 года, которая может

;вызвать непонимание со стороны не рассчитывающих на это

;браузеров)

y2k_compliance=Off

;Использование буферизации вывода. Позволяет посылать заголовки

;(включая cookie) после вывода текста. Это происходит ценой

;незначительного замедления вывода.

;Можно разрешить буферизацию во время выполнения сценария путем

;вызова функций буферизации, или же включить ее для всех файлов

;с помощью следующей директивы. Чтобы ограничить размер буфера,

;в качестве значения этой директивы можно использовать

;количество байтов вместо слова 'On'

;(например, output_buffering=4096).

output_buffering=Off

;Весь вывод сценария можно передать какой-либо функции.

;Например, если установить параметр output_handler равным

;"mb_output_handler", то кодировка символов будет прозрачно

;преобразована в заданную кодировку.

;Установка любого обработчика вывода автоматически включает

;буферизацию вывода.

;Примечание: при написании переносимых сценариев не следует

;полагаться на эту директиву. Вместо этого необходимо

;явно задать обработчик буфера с помощью функции

;ob_start().

;Использование этой директивы может вызвать проблемы,

;если не известно, что делает сценарий.

;Примечание: использовать одновременно оба значения

;"mb_output_handler" и "ob_iconv_handler" нельзя.

;Также нельзя одновременно использовать значения

;"ob_gzhandler" и "zlib.output_compression".

;output_handler =

;Прозрачное сжатие вывода с помощью библиотеки zlib

;Значениями этого параметра могут быть 'off', 'on' или

;определенный размер буфера, используемого для сжатия

;(по умолчанию 4 Кб)

;Примечание: размер результирующего блока может отличаться из-за

;сжатия. PHP в результате сжатия выводит блоки по

;несколько сотен байт. Чтобы использовать больший

;размер для повышения производительности, необходимо

;в дополнение к этому включить буферизацию вывода.

;Примечание: вместо стандартной директивы output_handler

;необходимо использовать zlib.output_handler

;иначе вывод будет поврежден.

zlib.output_compression = Off

;Если активизировано zlib-сжатие, то задавать дополнительные

;обработчики буфера нельзя. Этот параметр делает то же, что и

;output_handler, но в другом порядке.

;zlib.output_handler =

;Директива неявной отсылки говорит РНР о том, что выводимые

;данные нужно автоматически передавать браузеру после вывода

;каждого блока данных. Ее действие эквивалентно вызовам функции

;flush() после каждого использования print() или echo() и после

;каждого HTML-блока. Включение этой директивы серьезно замедляет

;работу, поэтому ее рекомендуется применять лишь в отладочных

;целях.

implicit_flush=Off

Конфигурация PHP5 817

;Функция обратного вызова будет вызываться (с именем

;неопределенного класса в качестве параметра), если

;десериализатор обнаружит неопределенный класс, объект которого

;должен быть создан. Появляется предупреждение, если указанная

;функция не определена, или если функция не включает/реализует

;недостающий класс. Поэтому этот параметр следует устанавливать,

;только если действительно необходимо реализовать функцию

;обратного вызова.

unserialize_callback_func=

;Параметр serialize_precision определяет количество сохраняемых

;при сериализации значимых цифр в дробной части

;float- и double-чисел. Значение по умолчанию гарантирует, что

;десериализуемые с помощью функции unserialize float-данные

;останутся такими же, как до сериализации.

serialize_precision = 100

;Следующий параметр определяет, должен ли РНР при выполнении

;сценария всегда передавать функциям аргументы по ссылке. Этот

;метод устарел, и, скорее всего, он не будет поддерживаться в

;будущих версиях PHP/Zend. Описание того, каким способом должен

;быть передан аргумент — по ссылке или по значению —

;рекомендуется указывать при объявлении функции. Лучше всего,

;если вы попробуете установить параметр в Off и проверите, все

;ли сценарии по-прежнему работают. Если это так, то все в

;порядке, и сценарии будут совместимы и с будущими версиями

;РНР. В противном случае вы будете получать предупреждения

;каждый раз, когда аргументы передаются по значению там, где

;должны передаваться по ссылке.

allow_call_time_pass_reference = On

;Безопасный режим

safe mode = Off

;По умолчанию в безопасном режиме при открытии файлов

;выполняется проверка UID. Чтобы смягчить строгость до проверки

;GID, необходимо включить директиву safe_mode_gid.

safe_mode_gid = Off

;Когда безопасный режим включен, не проверять UID/GID при подключении файлов,

;находящихся в указанном каталоге и его подкаталогах (кроме этого, каталог

;также должен быть записан в директиве include_path или при подключении файлов

;должен быть задан полный путь).

safe_mode_include_dir =

;При включенном безопасном режиме разрешается выполнять с помощью exec-функций

;только файлы, находящиеся в каталоге, указанном в директиве safe_mode_exec_dir.

safe_mode_exec_dir =

;Установка некоторых переменных окружения может потенциально породить

;"дыры" в защите сценариев.

;Следующая директива содержит разделенный

;запятыми список префиксов. При включенном безопасном режиме

;пользователь сможет изменять только те переменные окружения, имена

;которых начинаются с перечисленных префиксов.

;По умолчанию пользователь имеет возможность устанавливать только

;те переменные окружения, имена которых начинаются с префикса

;РНР_ (например, PHP_FOO=BAR).

;Замечание: если значение этой директивы не указано, РНР позволяет

;пользователям модифицировать любые переменные окружения!

safe_mode_allowed_env_vars=PHP_

818 Приложение Е

;Следующая директива содержит разделенный запятыми список имен

;переменных окружения, которые конечный пользователь не

;сможет изменять путем вызова putenv(). Эти переменные будут

;защищены даже в том случае, если директива

;safe_mode_allowed_env_vars разрешает их изменять.

safe_mode_protected_env_vars = LD_LIBRARY_PATH

;Директива open_basedir (если она установлена) разрешает

;использовать файловые операции только в пределах заданного каталога

;и его подкаталогов. Лучше всего, если эта директива будет

; использоваться для отдельных каталогов или для конфигурационного

;файла виртуального сервера. Директива действует независимо от того,

;включен безопасный режим или нет!

;open_basedir =

;Следующая директива дает возможность запрещать вызовы некоторых

;функций из соображений безопасности. Список задается в виде имен

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

;независимо от того, включен безопасный режим или нет!

disable_functions =

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

;из соображений безопасности. Список задается в виде имен классов,

;отделенных друг от друга запятыми. Директива действует независимо

;от того, включен безопасный режим или нет!

disable_classes =

;Цвета для режима подсветки синтаксиса. Можно использовать любой

;цвет, допустимый в тэге <font color=??????>.

;highlight.string = #DD0000 ;highlight.comment = #FF8000 ;highlight.keyword = #007700 ;highlight.bg = #FFFFFF ;highlight.default = #0000BB

;highlight.html

= #000000

;

; Другие директивы

;

;Следующая директива указывает, должен ли РНР добавлять свою

;сигнатуру в заголовки, посылаемые браузеру, и, таким образом,

;обнаруживать себя. Это никак не может повлиять на безопасность

;сценария, однако позволяет пользователю определить, использовался

;РНР для генерации страницы или нет.

expose_php = On

Ограничения ресурсов

Для решения задач все приложения используют серверные ресурсы. Ограничения ресурсов включают в себя ограничения циклов процессора, дискового пространства и т.д. Конфигурационный файл php.ini содержит параметры, ограничивающие ис+ пользование PHP+интерпретатором этих ресурсов.

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

;;;;;;;;;;;;;;;;;;;;;;;;

; Ограничения ресурсов ;

;;;;;;;;;;;;;;;;;;;;;;;;

 

Конфигурация PHP5 819

max_execution_time = 30 ; Максимально возможное время выполнения

;

сценария в секундах.

max_input_time = 60

; Максимально возможное время

;

синтаксического анализа данных запроса

memory_limit = 8M

; Максимальный объем памяти, выделяемый

;

сценарию (8MB)

Обработка и протоколирование ошибок

В зависимости от параметров этого раздела PHP может по+разному обрабатывать ошибки. В ходе разработки Web+приложения целесообразно оставить стандартные па+ раметры вывода сообщений об ошибках, поскольку это позволит быстрее находить ошибки в программе. С другой стороны на реальном Web+сайте PHP+ошибки могут со+ общать конечным пользователям информацию, которую предоставлять нежелательно, и, таким образом, создавать потенциальные проблемы безопасности Web+сайтов. Кроме всего прочего, ошибки в Web+приложении ставят разработчика в неудобное положение. В таком случае рекомендуется использовать протоколирование ошибок, при котором ошиб+ ки незаметно записываются в журнал, который не доступен конечным пользователям.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Обработка и протоколирование ошибок ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Директива error_reporting должна задаваться в виде битового

;поля. Его значение можно устанавливать с помощью следующих

;констант:

; Е_ALL

- Все предупреждения и ошибки.

; Е_ERROR

- Критические ошибки времени выполнения.

; Е_WARNING

- Предупреждения времени выполнения (не

;критические ошибки).

;

Е_PARSE

-

Ошибки трансляции.

;

Е_NOTICE

-

Замечания времени выполнения (

;предупреждения, которые, скорее всего,

;свидетельствуют о логических ошибках в

;сценарии, — например, использовании

;неинициализированной переменной в расчете на

;автоматическую инициализацию с пустой строкой).

; Е_STRICT

- Замечания времени выполнения. Эта константа

;позволяет PHP предлагать изменения кода,

;которые обеспечат наилучшие возможности

;взаимодействия и совместимость с будущими

;версиями PHP.

;

Е_CORE

ERROR

-

Критические ошибки

в момент запуска РНР.

;

Е_CORE

WARNING

-

Предупреждения (не

критические ошибки) во время

;запуска РНР.

; Е_COMPILE ERROR

- Критические ошибки времени трансляции.

; Е_COMPILE WARNING

- Предупреждения времени трансляции.

; Е_USER ERROR

- Сгенерированные пользователем ошибки.

; Е_USER WARNING

- Сгенерированные пользователем предупреждения.

; Е_USER NOTICE

- Сгенерированные пользователем замечания.

;Примеры:

;показывать все ошибки, за исключением замечаний

;error_reporting = E_ALL & ~E_NOTICE

;показывать только сообщения об ошибках

;error_reporting=E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR

;отображать все ошибки, кроме замечаний и предупреждений о нарушении

;стандартов написания кода

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

820 Приложение Е

;Печать ошибок и предупреждений прямо в браузер. Для готовых сайтов

;настоятельно рекомендуется отключать следующую директиву и

;использовать вместо нее протоколирование (см. ниже). Включенная

;директива display_errors в "рабочих" сайтах может открыть

;пользователю доступ к секретной информации, например, полный путь к

;документу на Web-сервере, имя используемой базы данных и т.д.

display_errors = On

;Даже если display_errors включена, ошибки, возникающие во время

;запуска РНР, не отображаются. Рекомендуется оставлять этот параметр

;выключенным за исключением случая, когда он необходим для отладки.

display_startup_errors = Off

;Сохранять ли сообщения об ошибках в файле журнала. Журнал может

;определяться настройками сервера, быть связанным с потоком stderr

;или же задаваться директивой error_log, описанной ниже. Как уже

;было сказано, в коммерческих проектах желательно записывать ошибки

;в журнал, а не отображать ошибки в браузер.

log_errors = Off

;Следующая директива устанавливает максимальный размер сообщения об

;ошибках, записываемого в журнал. В журнал добавляется информация о

;файле с исходным кодом. Стандартное значение этого параметра равно

;1024 значение 0 снимает всякие ограничения на размер записываемых

;сообщений.

log_errors_max_len = 1024

;Не записывать повторяющиеся сообщения. Если директива

;ignore_repeated_source включена, то будут игнорироваться ошибки,

;возникающие в одной и той же строке одного файла.

ignore_repeated_errors = Off

;Не записывать имя файла с ошибкой. Когда значение этого параметра

;равно On, повторяющиеся сообщения из различных файлов или разных

;строк не будут записываться в журнал.

ignore_repeated_source = Off

;Если значение следующего параметра равно Off, то утечки памяти не

;будут показываться (на stdout или в журнале). Это имеет значение

;только в отладочной компиляции, и если разрешено выводить

;предупреждения (E_WARNING)

report_memleaks = On

;Сохранять ли последнее сообщение об ошибке или предупреждение в

;переменной $php_errormsg (boolean).

track_errors = On

;Не включать в сообщения об ошибках HTML-теги

;Примечание: этот параметр не следует использовать для "реальных"

;сайтов.

;html_errors = Off

;Если HTML-теги включаются в сообщения об ошибках, то PHP

;генерирует ссылки, ведущие на страницы с подробным описанием

;ошибок или функций, вызвавших ошибки. Со страницы

;http://www.php.net/docs.php можно скачать копию руководства по PHP

;и указать в директиве docref_root базовый URL локальной копии

;документации, включая символ косой черты в начале пути. Кроме того,

;необходимо указать расширение, которое будет использоваться,

;включая точку.

;Примечание: не следует использовать этот параметр для "рабочих

;сайтов".

;docref_root = "/phpmanual/" ;docref_ext = .html

Конфигурация PHP5 821

; Строка, которая выводится перед сообщением об ошибке.

;error_prepend_string = "<font color=ff0000>"

; Строка, которая отображается после сообщения об ошибке.

;error_append_string="</font>"

; Записывать журнал в указанный файл. ;error_log = filename;

;Использовать системный журнал (в Windows NT – Журнал событий,

;использовать этот параметр в Windows 95 нет смысла)

;error_log = syslog

Обработка данных

Самый важный параметр в этом разделе, а возможно и во всей конфигурации ++++++

register_globals. Эта директива позволяет автоматически преобразовывать вход+ ные данные в переменные, например, поле ввода с именем last_name в HTML+форме автоматически преобразовывается в переменную $last_name, которую затем можно использовать в сценарии. Такая мощная функция дает возможность очень быстро раз+ рабатывать приложения. Вместе с тем, если register_globals используется не пра+ вильно, то может возникнуть путаница и серьезный риск для безопасности (это, воз+ можно, единственная самая распространенная причина проблем с безопасностью PHP+ приложений), поэтому, чтобы обезопасить сайт, следует аккуратно использовать эту функцию и всегда тщательно проверять входные данные. Те, кто долгое время исполь+ зовал PHP, привыкли включать register_globals, потому что некогда эту функцию невозможно было отключить. В настоящее время по умолчанию функция выключена.

Также стоит упомянуть директиву magic_quotes_gpc. Она способствует повыше+ нию безопасности приложений, автоматически экранируя ‘‘опасные’’ символы. Обычно это делается для того, чтобы предотвратить атаки с использованием SQL+кода (SQL in+ jection). Если приложение уже обрабатывает входные данные таким способом, то ди+ рективу следует отключить, иначе некоторые символы будут экранированы дважды, а во входных строках будут появляться лишние символы обратной косой черты.

;;;;;;;;;;;;;;;;;;;;

; Обработка данных ;

;;;;;;;;;;;;;;;;;;;;

;

;Замечание: директива track_vars всегда включена, начиная с РНР

;4.0.3.

;Здесь указывается символ-разделитель для отделения друг от друга

;аргументов в генерируемых PHP URL. По умолчанию используется

;амперсанд "&".

;arg_separator.output = "&"

;В следующей директиве задается разделитель (или список

;разделителей), которые используются в PHP для преобразования URL в

;переменные. По умолчанию используется амперсант "&".

;Замечание: разделителем считается каждый символ в этом списке.

;arg_separator.input = ";&"

;Следующая директива определяет, в каком порядке РНР будет

;регистрировать GET- и POST-данные, данные, полученные из

;cookie-файлов, а также переменные окружения и встроенные переменные

;(соответственно, значение задается буквами G, Р, С, Е и S,

;например, EGPCS или GPC). Регистрация производится по этой строке

;слева направо, новые значения переопределяют старые.

variables_order="EGPCS"

Соседние файлы в папке web - tec