Программирование >>  Программный интерфейс приложений 

1 ... 130 131 132 [ 133 ] 134 135 136 ... 264


отводится каталог gp Для Web-узла pit-viper.snake.net страницы в этих двух каталогах будут иметь URL, начинающиеся следующим образом.

http: pit-viper.snake.net/ushl/ http: pit-viper.snake.net/gp/

Например, для страниц с именами index. php доступ можно осуществить так:

http: pit-viper.snake.net/ushl/index.php http: pit-viper. snake .net/gp/mdex. php

Работа с функциями и включаемыми файлами

Сценарии РНР отличаются от сценариев DBI прежде всего тем, что сценарии РНР располагаются в дереве документов Web-сервера, тогда как сценарии DBI обычно размещаются в каталоге cgi-bm, который располагается вне дерева документов Это вызывает проблемы с безопасностью ошибка в конфигурации сервера может привести к тому, что страницы, расположенные в дереве документов, станут доступными для клиентов в виде простых текстовых файлов. Это значит, что опасность того, что имена пользователей и пароли станут легкодоступными для сценариев РНР выше, чем для сценариев DBI.

Переменные языка РНР

в языке РНР нет необходимости объявлять переменные В нашем сценарии используются три переменные $link, $result и $row Ни одна из них нигде не была объявлена (Конечно, в определенных контекстах объявления переменной не избежать Таким примером может служить ссылка на глобальную переменную внутри функции, но об этом позже )

Переменные обозначаются идентификаторами с предшествующим знаком доллара ( $ ) Это справедливо для всех типов переменных, хотя для массивов приходится задавать дополнительную информацию для того, чтобы получить доступ к отдельным элементам Если переменная $х представ-I ляет одно-единственное значение, такое как число или строка, получить ее I можно с помощью выражения $х Но если $х является массивом с числовы-I, ми индексами, доступ к его элементам можно получить с помощью выраже-I НИИ $х[0], $х[1] и тд Если $х является массивом с ассоциативными ин-

I дексами, какими как yellow или large , получить доступ к его элементам 1 можно с помощью выражений $х [ yellow ] или $х [ large ]

II Массивы РНР могут также иметь смешанные элементы (числовые и Г ассоциативные) Например, $х[1] и $x[ large ] могут быть одновре-

менно членами одного и того же массива Если $х представляет собой объект, к его свойствам можно получить доступ с помощью выражения Г $x->property name Например, $x->yellow и $x->large являются ? свойствами $х В качестве имен свойств числа не допустимы Так, кон-1 струкция $х->1 в РНР не допустима

Первоначальный сценарий страницы Исторической Лиги подвержен этой проблеме, так как он содержит литеральные значения имени



пользователя СУБД MySQL и его пароль. Попробуем убрать эти параметры соединения, воспользовавшись двумя возможностями языка РНР: функциями и включаемыми файлами. Для подключения напишем функцию sainp db connect () И поместим ее во включаемый файл - файл, который не является частью главного сценария, но на который можно делать ссылки прямо из главного сценария. Вот несколько очевидных преимушеств использования включаемых файлов

Упрощается программирование подключения к базе данных. Не нужно прописывать все параметры. Таким образом, процедура sainp db connect () производит выборку из базы данных после подключения к ней. Вот так одна функция выполняет работу двух функций РНР. Это позволяет сделать сценарии более понятными и сконцентрировать все внимание на алгоритме сценария, а не на программировании подключения

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

Хотя это не дает 100%-ной гарантии. Если не предпринять каких-то предварительных действий, посетители узла Web-сервера смогут прямо прочесть включаемые файлы Просмотрите раздел Подкгпочение к серверу MySQL Server из Web-сценария в главе 7, Профаммный интерфейс Perl API . И обратите внимание на предостережения относительно конфигурационных файлов интерфейса DB1. Аналогичное предостережение справедливо и для включаемых файлов РНР.

1 Заимствования языка РНР

Если вы имеете опыт программирования на языке С, то, вероятно, заметили, что многие синтаксические конструкции в нашем сценарии очень похожи на те, которые используются для программирования на языке С Действительно, синтаксис языка РНР в основной массе переписан из языка С, таким образом совпадение не случайно Ваш опыт работы с языком С очень поможет при работе с РНР И действительно, когда вы не уверены, как написать выражение или управляющую конструкцию в РНР, сделайте это так, как вы обычно делаете это на языке С Скорее всего это будет правильно

Но несмотря на то, что РНР имеет свои корни главным образом в С, имеют место так же элементы, специфические только для языка Perl Это хорошо видно в синтаксисе написания комментариев

# Комментарий в стиле Perl начиная с символа # до конца строки

Комментарий в стиле С++ или Java начиная с символа до конца строки

/* Комментарий в стиле С от пары символов косая черта и звездочка до пары символов звездочка - косая черта */



Другие аналогии с языком Perl включают оператор конкатенации строк (включая символы .= как аддитивная конкатенация) и способ интерпретации ссылок на переменные и управляющие последовательности в двойных, а не в одинарных кавычках.

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

способствует возможности повторного использования. Это также позволяет легко вносить глобальные изменения во все сценарии, которые пользуются этим включаемым файлом. Например, при переносе базы данных samp db с узла pit-viper на узел boa, нет необходимости перебирать отдельные сценарии, достаточно просто поменять имя узла в файле mysql pconnect (), который содержит функцию samp db connect().

Для того чтобы воспользоваться включаемым файлом, необходимо указать ссьшку на него, чтобы интерпретатор РНР знал, что к нему нужно обратиться. Если система имеет место, где хранятся включаемые файлы, им можно воспользоваться, если нет - воспользуйтесь следующей процедурой для создания места для файлов включения.

1. Создать каталог, в котором интерпретатор РНР хранит включаемые файлы. Этот каталог не должен находиться внутри дерева документов Web-сервера! Автор для этой цели обычно использует каталог включаемых файлов РНР /usr/local/apache/php, который имеет тот же уровень, что и дерево документов (/usr/local/apache/htdocs).

2. Ссылайтесь на файлы включения по полному пути и имени файла или сообщайте интерпретатору РНР, какие каталоги следует просматривать при поиске файлов включения. Последний способ более удобен, так как для использования файла достаточно только имени файла. Для того чтобы в таком случае интерпретатор РНР имел информацию, где производить поиск, достаточно изменить значение переменной includepath в файле инициализации РНР (/usr/local/lib/php3. ini). Если она такого значения не имеет, установите полный путь к новому каталогу файлов включения: include path = /usr/local/apache/php

Если переменная include path уже имеет какое-то значение, добавьте новый путь:

include path = TeKymee 3HatjeHMe:/usr/local/apache/php

3. Создать включаемый файл и поместить его в каталог для включаемых файлов. Сам включаемый файл должен иметь характерное название, например, название sampdb.inc вполне подойдет. Его

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



1 ... 130 131 132 [ 133 ] 134 135 136 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика