PHP/FI Version 2.0




PHP/FI Version 2.0


    Оглавление
    Оглавление Краткая Хронология Инструкции по установке Итак, что я могу сделать с помощью PHP/FI? Переадресация CGI Проблемы безопасности Установление подлинности HTTP Замечания по модулю Apache Ди...
    Краткая Хронология
    Краткая Хронология Модуль PHP начал жизнь как простая небольшая cgi оболочка, написанная на Perl. Я написал это за полдня между контрактами, поскольку нуждался в быстром инструменте для отслеживан...
    Контроль доступа
    Контроль доступа Если вы решили включить контроль доступа - при компиляции пакета, Вы добавьте ?config к любому URL, чтобы редактировать файл управления доступом. То есть. http://your.machine.doma...
    Регистрация Доступа
    Регистрация Доступа Регистрация Доступа - другая опциональная особенность, которую можно разрешить во время компиляции, отвечая Yes на вопрос в скрипте установки. Данные регистрации доступа могут...
    Пример 1
    Пример 1 msqladmin create phpfi Затем подредактируйте ваш msql.acl файл, и удостоверитесь, что разрешения на доступ к базе данных правильны. Что - нибудь вроде следующего должно удовлетворить:...
    Пример 2
    Пример 2 database=phpfi read=* write=nobody,your user id access=local Для каждого пользователя, для которого Вы хотите сохранять данные регистрации, нужно создать две таблицы. msqllog шелл скрипт...
    Пример 3
    Пример 3 msqllog user id и скрипт создаст соответствующие таблицы. Возможно вам придется подредактировать скрипт, для того чтобы отразить, где размещаются вещи в системе. Возможно вы захотите взгл...
    Пример 4
    Пример 4 http://your.machine.domain/cgi-bin/php.cgi/path/log.html По умолчанию, если Вы компилировали PHP с включенной регистрацией доступа, то на ваших страницах появятся нижние колонтитулы, соде...
    Относительный против Абсолютного URL - или, почему не отображаются мои изображения?
    Относительный против Абсолютного URL - или, почему не отображаются мои изображения? Общая проблема для всех программ CGI состоит в том, что программа HTTPD изменяет текущий каталог на тот, в котор...
    Пример 1
    Пример 1 http://my.machine/~rasmus/file.html Фактический HTML файл мог бы быть:...
    Пример 2
    Пример 2 ~rasmus/public_html/file.html Если внутри файла file.html у меня есть тэг:...
    Пример 3
    Пример 3 IMG SRC=pic.gif В случае если file.html загружен обычным образом то gif файл, как и ожидается, будет в ~rasmus/public_html/pic.gif. Однако, если он загружен через программу CGI с URL подо...
    Пример 4
    Пример 4 http://my.machine/cgi-bin/php.cgi/~rasmus/file.html то HTTPD устанавливает текущий каталог на /cgi-bin (или на тот, на который указывает директива ScriptAlias) и впоследствии, когда стран...
    Пример 5
    Пример 5 IMG SRC=/~rasmus/pic.gif то не было бы никакой проблемы. Но дело в том что использование абсолютного URL не всегда желательно, так как это делает страницы менее переносимыми. Очевидный во...
    Пример 6
    Пример 6 IMG SRC= ? ECHO $PATH_DIR/pic.gif Используя вышеприведенную запись, Вы можете перемещать файл, содержащий этот тэг куда угодно, и тэг всегда будет ссылаться на файл pic.gif в том же самом...
    Как программа PHP обрабатывает методы данных GET и POST
    Как программа PHP обрабатывает методы данных GET и POST PHP обнаруживает оба метода GET и POST , исходящие из HTML формы. Одна важная деталь, для понимания - это то что метод, POST всегда обрабаты...
    Пример 1
    Пример 1 /cgi-bin/php.cgi/file.html?abc+def+EMAIL_ADDR=rasmus@vex.net&var==value Соответствующие компоненты таблицы идентификаторов PHP будут:...
    Пример 2
    Пример 2 $argc = 4 $argv[0] = abc $argv[1] = def $argv[2] = EMAIL_ADDR=rasmus@vex.net&var==value $EMAIL_ADDR = rasmus@vex.net $var = value Обратите внимание, как EMAIL_ADDR часть данных присутству...
    Пример 3
    Пример 3 ?EMAIL_ADDR= К любым линкам на странице, где известен email адрес пользователя, Вы можете передавать это значение следующей странице. Система регистрации PHP, будет автоматически просматр...
    SELECT MULTIPLE и PHP
    SELECT MULTIPLE и PHP Тэг SELECT MULTIPLE в конструкции HTML позволяет пользователям сделать множественный выбор из списка. Выбранные объекты впоследствии передаются обработчику формы. Проблема со...
    Пример 4
    Пример 4 SELECT NAME=var MULTIPLE Каждая выбранная опция будет передана обработчику формы в виде: var=option1 var=option2 var=option3 Каждая опция затрет предыдущее содержимое переменной $var. Реш...
    Пример 5
    Пример 5 SELECT NAME=var[] MULTIPLE Это сообщает PHP/FI, чтобы он обработывал переменную var как массив, каждое присвоение значения переменной var[] добавляет элемент к массиву. Первый элемент ста...
    IMAGE SUBMIT и PHP
    IMAGE SUBMIT и PHP При передаче формы на рассмотрение, можно использовать картинку, вместо стандартного представления кнопки. Это можно сделать, указав тэг:...
    Пример 6
    Пример 6 input type=image src=image.gif name=sub Когда пользователь нажимает где-нибудь на изображение, сопровождающая форма будет передана серверу с двумя дополнительными переменными, sub_x и sub...
    GD (графическая библиотека для создания GIF) Поддержка в PHP
    GD (графическая библиотека для создания GIF) Поддержка в PHP PHP поддерживает библиотеку GD версии 1.2 написанной Томасом Бутеллом. Непосредственно в PHP нет никакого кода GD . Если Вы хоттите исп...
    PHP/FI и виртуальные сервера
    PHP/FI и виртуальные сервера PHP прекрасно работает на виртуальных хостах, которые поддерживаются некоторыми дэймонами http. Одна проблема, которая может произойти при такой установке, связана с р...
    Поддержка закачки файлов
    Поддержка закачки файлов PHP/FI автоматически обнаруживает попытку закачки файла из броузера, который поддерживает закачку файлов, основанную на базе форм, как это предложено Е. Небелем и Л. Мазин...
    Поддержка Cookie
    Поддержка Cookie PHP/FI поддерживает HTTP cookies как определено Спецификациями Netscape . Cookies - механизм для сохранения данных в удаленном броузере и таким образом трэкинг или идентификация в...
    Пример 1
    Пример 1 SetCookie(MyCookie[],Rasmus Lerdorf, time()+3600); Обратите внимание, что cookie заменит предыдущий cookie с тем же именем в вашем броузере, если толькко путь или домен не отличаются. Так...
    Пример 2
    Пример 2 $Count++; SetCookie(Count,$Count, time()+3600); SetCookie(Cart[$Count],$item, time()+3600);...
    Поддержка mSQL
    Поддержка mSQL mSQL это мини-SQL и это небольшой и простой SQL сервер баз данных, написанный Дэвидом Хьюджесом. Он доступен по ftp://ftp.bond.edu.au/pub/Minerva/msql PHP/FI обладает богатым наборо...
    Поддержка Postgres95
    Поддержка Postgres95 Postgres95 - мощная база данных являющаяся паблик домен, которая реализует значительное подмножество языка SQL . Она поддерживает множество типов данных и команды, которые не...
    Пример 1
    Пример 1 ? $conn = pg_Connect(localhost, 5432, , , mydb); if (!$conn) { echo An error occured.\n; exit; } $result = pg_Exec($conn, select * from table1); if (!$result) { echo An error occured.\n;...
    Инструкции по установке
    Инструкции по установке Прежде, чем Вы начнете Если Вы абсолютно не имеете никакого опыта работы с Unix, Вы можете попросить кого-либо, имеющего хотя бы немного знаний по Unix, помочь Вам с устано...
    Шаги Установки Шаг 1.
    Шаги Установки Шаг 1. Выполните программу установки: ./install Вам будет задан ряд вопросов. Если Вы их не понимаете, то просто нажимайте Return. Заданный по умолчанию набор должен удовлетворять т...
    Шаг 2. Войдите в каталог src...
    в каталог cgi-bin вашей системы. Если у вас нет прав сделать это и вы желаете установить пакет в ваш собственный персональный каталог, вы можете сделать это, но в таком случае нужно установить set...
    Шаг 4. (Если Вы устанавливаете...
    Шаг 4. (Если Вы устанавливаете программу в виде модуля Apache) Перейдите в каталог src Apache, в который должны быть скопированы файлы mod_php.c и mod_php.h. Если они еще не были скопированы, что...
    Регулярные Выражения
    Регулярные Выражения Регулярные выражения используются для сложного манипулирования строками в PHP/FI. Поддержка интерфейса между скриптом и регулярными выражениями осуществляется через следующие...
    Пример 1
    Пример 1 ?$string = This is a test; $cnt = reg_match(\(\w*\).*\(\) echo $cnt; echo $regs[0]; echo $regs[1]; echo $regs[2]; Вышеупомянутое сначала напечатает количество совпавших символов (14 в это...
    Скрипт язык PHP/FI
    Скрипт язык PHP/FI Скрипт язык PHP подобен по синтаксису языку C по многим показателям. Он поддерживает переменные, массивы, обращения к функциям, различные типы переменных и множество других веще...
    Синтаксис
    Синтаксис Каждая команда PHP начинается с тэга ? и заканчивается . Или команды могут быть сгруппированы внутри одной пары ? и отделяться друг от друга символом ; . Поддерживаются переменные, имена...
    Пример 1
    Пример 1 ?$a = 5 ?echo $a Это можно записать также в виде:...
    Пример 2
    Пример 2 ; $a = 5; echo $a Или даже:...
    Пример 3
    Пример 3 $a = 5; echo $a; Лишние символы пробела, табуляции и новой строки игнорируются. Это нужно для того чтобы форматировать блоки программы PHP, для болшего удобства чтения. Регистр написания...
    Переменные
    Переменные Поддерживаются три типа переменных. Длинные целые (long int) , двойной точности с плавающей запятой (double) и символьные строки (strings) . Тип переменных обнаруживается автоматически....
    Пример 4
    Пример 4 ?$a = 5 Заставляет $a стать переменной типа INTEGER....
    Пример 5
    Пример 5 ?$a = 5.0 Заставляет $a стать переменной типа DOUBLE....
    Пример 6
    Пример 6 ?$a = 5 Заставляет $a стать переменной типа STRING. Тип переменной вообще-то не очень важен. Каждая переменная, независимо от типа, преобразуется в любой из трех типов, внутренне и различ...
    Пример 7
    Пример 7 ? $a[0] = 5; $a[hello] = 6; echo $a[0]; echo $a[hello]; Обратите внимание, что, если имя переменной используется, и как массив и как обычная переменная, то имя обычной переменной является...
    Пример 8
    Пример 8 $a = 1; Это тоже самое что:...
    Пример 9
    Пример 9 $a[0] = 1; PHP/FI также поддерживает не-индексированные массивы. Не-индексированный массив генерирует собственный индекс, по мере добавления элементов к нему. Например:...
    Пример 10
    Пример 10 $a[] = Hello; $a[] = There; Первому элементу, вставляемому в не-индексированный массив, всегда присваивается индекс 0, второму 1 индекс, и т.д. Следовательно вышеупомянутые элементы могу...
    Пример 11
    Пример 11 echo $a[0]; echo $a[1]; Вы можете использовать функцию count() , для того чтобы определить количество элементов для любого массива. Еще одно свойство языка, это то что тип переменной опр...
    Пример 12
    Пример 12 $a = $b + $c; Может вести себя двояко. Если $b это число, то числовое значение $c добавляется к $b, и сумма сохраняется в $a. В этом случае тип $c не важен. Операция управляется типом пе...
    Ассоциативные массивы
    Ассоциативные массивы В предыдущем разделе мы познакомились с ассоциативными массивами. Ассоциативный массив - это массив, в котором индекс не обязательно должен быть последовательным рядом числов...
    Ссылки на переменные
    Ссылки на переменные Иногда удобно иметь способ ссылаться на имена переменных . То есть имя переменной может установливаться и использоваться динамически. Нормальной переменной присваивается значе...
    Пример 13
    Пример 13 $a = hello; При использовании ссылки на переменную берется значение переменной и обрабатывается как имя переменной. В вышеупомянутом примере, hello , может использоваться как имя перемен...
    Пример 14
    Пример 14 $$a = world; На этот момент определены две переменных и сохранены в дереве символов PHP/FI:...
    Пример 15
    Пример 15 Имя переменной Содержимое переменной a hello hello hello world Следовательно, оператор:...
    Пример 16
    Пример 16 echo $a $$a; Произведет точно такой же вывод как и:...
    Пример 17
    Пример 17 echo $a $hello; То есть. Они выведут строку: hello world...
    Конструкции Языка
    Конструкции Языка Раз уж затронуты языковые конструкции, следует сказать, что язык PHP совершенно прост. Следующие команды используются, для управления ходом выполнения: if(условие) else elseif(ус...
    Пример 18
    Пример 18 ? if($a==5 $c = 100 + $a / $b; endif; Этот пример может быть записан в стандартном синтаксисе C:...
    Пример 19
    Пример 19 ? if($a==5 } Нет никакого различия между двумя синтаксисами. Мне лично больше нравится использовать endif, endswitch и endwhile, так что я точно знаю, какую конструкцию я заканчиваю. Одн...
    Пример 20
    Пример 20 ?if($a==5 bNormal html text/b ?endif Этом пример наглядно демонстрирует, почему иногда желательнее использовать ключевое слово endif вместо закрывающей фигурной скобки. Это намного более...
    Пример 21
    Пример 21 ?if($a==5 bNormal html text/b ? } Обе версии верны, и они будут делать одно и тоже....
    Функции определяемые пользователем
    Функции определяемые пользователем Вы можете определять функции внутри программы PHP со следующим синтаксисом:...
    Пример 22
    Пример 22 ? Function Test ( echo This is a test\n; ); Эта функция теперь может быть вызвана из любого места в программе, после ее определения. Типичный вызов может быть:...
    Пример 23
    Пример 23 ? Test(); Определяемые пользователем функции действуют подобно внутренним функциям PHP, Вы можете передавать им аргументы получать возвращаемое значение. Ниже приводится синтаксис для оп...
    Пример 24
    Пример 24 ? Function Sum $a,$b,$c ( return($a+$b+$c); ); echo Sum($a,$b,$c); Оператор return используется для возврата значения из функции. Только одиночное значение может быть передано, используя...
    Область видимости переменных
    Область видимости переменных Область видимости переменной это контекст, внутри которого она определена. Главным образом все переменные PHP/FI имеют только одину область. Однако, внутри определяемы...
    Пример 25
    Пример 25 $a=1; /* глобальная переменная */ Function Test ( echo $a;/* ссылка на локальную переменную */ ); Test(); Эта программа ничего не выведет, так как оператор echo работает с локальной верс...
    Пример 26
    Пример 26 $a=1; $b=2; Function Sum $first,$second ( global $a,$b; $b = $a + $b; ); Sum(); echo $b; Эта прграмма выведет 3. После объявления $a и $b глобальными внутри функции, все ссылки к любой и...
    Пример 27
    Пример 27 Function Test ( $a=0; echo $a; $a++; ); Эта функция совершенно бесполезна, так как, каждый раз при вызове, она устанавливает $a в 0 и печатает 0. Оператор $a++, который увеличивает перем...
    Пример 28
    Пример 28 Function Test ( static $a=0; echo $a; $a++; ); Теперь, каждый раз при вызове функции Test(), она будет печатать значение $a и затем увеличивать его. Без статических переменных не обойтис...
    Пример 29
    Пример 29 Function Test ( static $count=0; $count++; echo $count; if($count 10 { Test(); } );...
    Математические Выражения
    Математические Выражения PHP поддерживает полный набор математических операций, в выражениях. Учитывается порядок операций. Следующие операторы допустимы:...
    Пример 30
    Пример 30 ? $a = 2 + 1 Сложение ? $a = 2 - 1 Bычитание ? $a = 2 * 1 Умножение ? $a = 2 / 1 Деление ? $a = 2 % 1 Деление по модулю Поддерживаются и скобки и порядок операций, так что следующая запи...
    Пример 31
    Пример 31 ?$a = (2+1)*3+6/3 Поддерживаются C-подобные операторы увеличения += и уменьшения -= . То есть....
    Пример 32
    Пример 32 ? $a += $b Это эквивалентно:...
    Пример 33
    Пример 33 ? $a = $a + $b Поддерживаются C-подобные поразрядные операторы = и |=. То есть....
    Пример 34
    Пример 34 ? $a Это эквивалентно:...
    Пример 35
    Пример 35 ? $a = $a...
    Циклы While
    Циклы While Вы можете зацикливать управление внутри программы PHP, используя конструкцию while(); endwhile;....
    Пример 36
    Пример 36 ? $a=0; while($a 100) { $a++; echo $list[$a]; } Вышеупомянутый пример показывает использование цикла while, чтобы отобразить содержимое массива. ПРЕДУПРЕЖДЕНИЕ , хотя язык PHP поддержива...
    Конструкция Switch
    Конструкция Switch...
    Пример 37
    Пример 37 PHP поддерживает switch конструкцию очень похожую на эквивалентную в C. ? $a=0; switch($a) { case 1; echo a is 1; break; case hello; echo a is hello; break; default; echo a is unknown; b...
    Безопасные Переменные - Победа над взломами метода GET
    Безопасные Переменные - Победа над взломами метода GET В предыдущих разделах говорилось относительно методво GET и POST и переменных. Если Вы задумаетесь об этом, Вы можете увидеть проблемы защиты...
    Пример 38
    Пример 38 ?SecureVar(data) Где-нибудь в начале нашей второй страницы, то прием с методом GET не cработает. Переменная data, появилась бы пустой, если бы не была получена непосредственно из формы м...
    Пример 39
    Пример 39 ?SecureVar(.*data.*) Отметит любую переменную со словом data где-нибудь в имени, как являющуюся безопасной. Пожалуйста обратите внимание, что формам метода POST не свойственно безопаснос...
    Перегруженные Операторы и работа с типами данных
    Перегруженные Операторы и работа с типами данных Перегруженный оператор - это оператор подобный например '+' , который может делать различные, основываясь на типах выражений, к которым он применяе...
    Пример 40
    Пример 40 $a = 1; Тип будет integer $b = 1.5; Тип будет double $c = 1; Тип будет string Теперь, что произойдет, если Вы сделаете что-нибудь вроде:...
    Пример 41
    Пример 41 $d = $a + $c; Синтаксический анализатор рассматривает первую часть арифметического выражения и использует его для результата а также характер действия, которое должно быть выполнено. В в...
    Пример 42
    Пример 42 $d = 2 Тип integer Следовательно:...
    Пример 43
    Пример 43 $d = $c + $a Результаты в:...
    Пример 44
    Пример 44 $d = 11 Тип - string Вышесказанное имеет смысл для меня, и как только Вы поймете это, это будет возможно осуществимо и для вас. Однако, когда используются более сложные выражения, это мо...
    Пример 45
    Пример 45 $a = 1; Внутри в таблице идентификаторов я сохраняю 3 версии....
    Пример 46
    Пример 46 Integer: 1 --- flag Double: 1.0 String: 1 Функция SetType() может перемещать флажок, указывающий тип переменной....
    Пример 47
    Пример 47 SetType($a,double); Это вынудит рассматривать $a, как double в дальнейшем. Функция GetType() возвращает тип. GetType($a) вернет, в этом случае, double . Также существуют функции для того...
    Пример 48
    Пример 48 IntVal($a) вернет 1 DoubleVal($a) вернет 1.0 StrVal($a) вернет 1 Перегруженный оператор не изменяет характер переменных PHP, но дает Вам некоторые инструментальные средства, для лучшей р...
    Подавление Ошибок при обращении к функциям
    Подавление Ошибок при обращении к функциям Иногда бывает желательно игнорировать фатальные ошибки, о которых могут сообщать специфические функции PHP. Например, Вы захотите игнорировать ошибки от...
    Пример 49
    Пример 49 $err_code = @dbmopen($filename,w); Реальное сообщение об ошибке, которое должно было бы быть выведено, может быть проверено во внутренней переменной PHP, $phperrmsg . Более общий подход,...
    Пример 50
    Пример 50 SetErrorReporting(0); Это выключает все сообщения об ошибках. Им можно затем разрешить снова с помощью вызова:...
    Пример 51
    Пример 51 SetErrorReporting(1);...
    Добавление ваших собственных внутренних функций к PHP/FI
    Добавление ваших собственных внутренних функций к PHP/FI Может случиться так, что набор функций, обеспечиваемых PHP/FI не включает в себя специфическую функцию, в которая может вам потребоваться....
    Шаг 1 - Определение грамматики вашей Функции
    Шаг 1 - Определение грамматики вашей Функции если ваша функция принимает от 0 до 6 аргументов, то доступны - предопределенные грамматики. Вы можете пропустить этот шаг. Грамматика вашей функции оп...
    Шаг 2 - Добавление вашей функции к хэш-таблице лексического анализатора
    Шаг 2 - Добавление вашей функции к хэш-таблице лексического анализатора чтобы сделать это, подредактируйте lex.c, и найдите хэш-таблицу вблизи верхней части файла. Найдите строку, static cmd_table...
    Пример 1
    Пример 1 { time,INTFUNC0,UnixTime }, Этот запись отображает строку на лексему INTFUNC0. Вы можете поискать грамматику для лексемы INTFUNC0 в parse.raw, и увидете, что это - общая грамматика для вн...
    Шаг 3 - Написание вашей реалбной функции
    Шаг 3 - Написание вашей реалбной функции Вы можете фактически писать вашу функцию на любом языке, который вам нравится, лишь бы только он поддерживал соглашение о вызовах для нормальных функций C,...
    Пример 2
    Пример 2 void UnixTime(void) { char temp[32]; sprintf(temp,%ld,(long)time(NULL)); Push(temp,LNUMBER); } Обратите внимание, что функция является фунцией void.Это указывает, что она не возвращает ни...
    Шаг 4 - Добавление прототипа вашей функции в php.h
    Шаг 4 - Добавление прототипа вашей функции в php.h В нижней половине файла php.h Вы найдете полный список прототипов всех функций в php. Они сгруппированы по файлам, в которых они появляются. Прос...
    Пример 3
    Пример 3 void UnixTime(void);...
    Шаг 5 - Компилирование
    Шаг 5 - Компилирование Вы должны помнить о том что нужно переделывать синтаксический анализатор всякий раз, когда измененяется файл parse.raw. Введите: make parser , чтобы сделать это. Затем сдела...
    Шаг 6 - Вышлите мне ваши добавления!
    Шаг 6 - Вышлите мне ваши добавления! Если Вы хотите, чтобы ваши функции, были добавленны к следующему выпуску PHP/FI, пошлите их мне. Возможно самый лучший способ это сделать - это с помощью конте...
    Пример 4
    Пример 4 { crypt,CRYPT,NULL }, Обратите внимание, что последний элемент - NULL, в этом случае обращение к функции обрабатывается прямо в parse.raw. Если Вы использовали INTFUNC грамматику, то Вы п...
    Пример 5
    Пример 5 /* * If mode is non-zero, a salt is expected. * If mode is zero, a pseudo-random salt will be selected. */ void Crypt(int mode) { #if HAVE_CRYPT Stack *s; char salt[8]; char *enc; salt[0]...
    Примечания для хакания кода
    Примечания для хакания кода Управление памятью внутри PHP/FI - сложная вещь. Так как пакет может выполняться как модуль сервера, мы должны быть очень осторожны относительно ресурсов памяти. Програ...
    Внутренние функции
    Внутренние функции PHP имеет целый ряд встроенных функций. Функции точно также как и в языке C. Некоторые из них имеют один или более аргументов, некоторые возвращают значения, которые затем могут...
    Пример 1
    Пример 1 ?$t=time() Эта запись присваивает значение, возвращаемое функцией time(), переменной t....
    Алфавитный Список функций
    Алфавитный Список функций Abs(arg) Abs возвращает абсолютное значение аргумента. BinDec(binary_string) BinDec возвращает десятичный эквивалент двоичного числа, представленного параметром binary_st...
    Пример 2
    Пример 2 ? Reset($array); $first_key = key($array); End($array); $k = key($array); while($k != $first_key); echo $array[$k]; prev($array); $k = key($array); endwhile; echo $array[$k]; EscapeShellC...
    Пример 3
    Пример 3 ?system(EscapeShellCmd($cmd)) Eval(string) Eval берет содержимое строки аргумента и, обрабатывает, это подобно мини PHP/FI скрипту. Выполняется как отдельный скрипт PHP/FI. Любые установк...
    Пример 4
    Пример 4 $a = echo phpversion();; eval($a); eval(echo phpversion();); eval(\$a=1; echo \$a;); Exec(command_string [, array [,return_var]]) Exec выполняет заданную команду unix, однако ничего при э...
    Пример 5
    Пример 5 $fp = fopen(/home/rasmus/file.txt,r); fputs(fp,string) Fputs() записывает строку в файл, открытый функцией fopen() . Параметры - указателя дескриптора файла, который возвращается fopen()...
    Пример 6
    Пример 6 ? $name = bob; $result = msql($database,select * from table where firstname='$name'); $num = msql_numrows($result); echo $num records found!p; $i=0; while($i $num); echo msql_result($resu...
    Пример 7
    Пример 7 ? $result = msql_listtables(dbname); $i=0; while($i msql_numrows($result)); $tb_names[$i]=msql_tablename($result, $i); echo $tb_names[$i]; echo "BR"; $i++; endwhile; Эта функция доступна...
    Пример 8
    Пример 8 ? Reset($array); $i=0; while($i count($array)); echo key($array); next($array); $i++; endwhile; OctDec(octal_number) OctDec преобразовывает восьмиричное число в десятичное число. См. такж...
    Пример 9
    Пример 9 ? Reset($array); $i=0; while($i count($array)); echo $array[]; /* pointer automatically moves ahead one */ $i++; endwhile; return(value) Return возвращает управление из текущего вызова фу...
    Пример 10
    Пример 10 SetCookie(TestCookie,Test Value); SetCookie(TestCookie,$value,time()+3600); /* expire in 1 hour */ SetCookie(TestCookie,$value,time()+3600,/~rasmus/,.utoronto.ca,1); Обратите внимание, ч...
    Пример 11
    Пример 11 echo $TestCookie; SetErrorReporting(arg) SetErrorReporting устанавливает текущее значение состояния выдачи ошибок, по значению параметра arg. Если ненулевое, ошибки будут выводится, и ес...
    Пример 12
    Пример 12 ?srand(date(s) strchr(string,arg) Strchr и strstr - фактически идентичные функции. Они могут взаимозаменямы при использовании и включены обе в целях завершенности. Они возвращают часть с...
    Пример 13
    Пример 13 ? $string = This is an example string; $tok = strtok($string, ); while($tok); echo Word=$tokbr; $tok = strtok( ); endwhile; Обратите внимание, что только первое обращение к strtok исполь...
    Итак, что же я могу делать с PHP/FI?
    Итак, что же я могу делать с PHP/FI? Во-первых, обратите внимание, если страница обрабатывается PHP/FI, то добавляется нижний колонтитул с информацией относительно количества обращений к вашей стр...
    Пример 1
    Пример 1 FORM ACTION=/cgi-bin/php.cgi/~userid/display.html METHOD=POST INPUT TYPE=text name=name INPUT TYPE=text name=age INPUT TYPE=submit /FORM Ваш display.html файл мог бы в этом случае содержа...
    Пример 2
    Пример 2 ?echo Hi $name, you are $age years old!p Это так просто! PHP/FI автоматически создает переменную для каждого поля ввода в вашей форме. Вы можете впоследствии использовать эти переменные в...
    Пример 3
    Пример 3 ? if($age50); echo Hi $name, you are ancient!p; elseif($age30); echo Hi $name, you are very old!p; else; echo Hi $name.; endif; PHP/FI обеспечивает очень мощный язык, который будет делать...
    Переадресация CGI
    Переадресация CGI Apache Хороший способ выполнять PHP/FI - используя модуль переадресации cgi с http сервером Apache. Обратите внимание, что вам не нужно волноваться относительно модулей переадрес...
    Пример 1
    Пример 1 union align { /* Types which are likely to have the longest RELEVANT alignment * restrictions... we don't do much with doubles. */char *cp; void (*f)(); long l; FILE *fp; }; Нужно добавит...
    Пример 2
    Пример 2 union align { /* Types which are likely to have the longest RELEVANT alignment * restrictions... we don't do much with doubles. */char *cp; void (*f)(); long l; FILE *fp; double d; }; Про...
    Проблемы защиты
    Проблемы защиты PHP/FI не читает никакие .htaccess файлы, которые могут присутствовать в каталоге. Это означает что если у вас есть файлы, которые защищены с использованием стандартного, основанно...
    Установление подлинности HTTP
    Установление подлинности HTTP Ловушки HTTP аутентикации в PHP/FI доступны только в случае, если пакет выполняется как модуль Apache. В программе для PHP/FI в виде модуля Apache , возможно использо...
    Пример 1
    Пример 1 ? if(!$PHP_AUTH_USER) { Header(HTTP/1.0 401 Unauthorized); Header(WWW-authenticate: basic realm=\My Realm\); exit; } else { echo Hello $PHP_AUTH_USER.P; echo You entered $PHP_AUTH_PW as y...
    Примечания к модулю Apache
    Примечания к модулю Apache Выполнение PHP/FI в виде модуля Apache это наиболее эффективный способ использования пакета. В случае если пакет выполняется в виде модуля, то это означает что функциона...
    Директивы конфигурации Модуля Apache
    Директивы конфигурации Модуля Apache Следующие директивы могут быть помещены или в файл srm.conf , или внутри тэгов Directory ... /Directory в файле access.conf или внутри тэгов Location /path ......
    Поддержка FastCGI
    Поддержка FastCGI PHP/FI может быть скомпилирован с поддержкой FastCGI. Но прежде вам нужно будет выбрать и скомпилировать FCGI Development Kit для вашей платформы. А также рабочий модуль переадре...








Начало