PHP::Журнал СА 5.2003
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9956
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8164
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8264
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5233
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5920
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 PHP

Архив номеров / 2003 / Выпуск №5 (6) / PHP

Рубрика: Программирование /  Веб-программирование

Сергей Яремчук СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС

PHP

Я думаю, не будет большим секретом, что с помощью простого HTML-кода можно создать лишь статическую страничку. Но этого в современном быстроменяющемся мире уже недостаточно, необходимо быстро реагировать на изменения и выдавать новую информацию пользователю. К тому же возникает необходимость собрать информацию, например, с помощью анкет, автоматически ее обработать и выдать пользователю. С помощью HTML, увы, такие задачи решить невозможно. Какие только технологии не применяются сейчас для придания интерактивности веб-странице: DHTML, ASP, Perl, Java, ColdFusion. Есть в этом немаленьком списке и PHP. Не рассчитывал создатель данного языка Расмус Лердорф (Rasmus Lerdorf), что его язык приобретет такую большую популярность, а первоначально задумывал PHP исключительно для использования в своих личных целях, о чем свидетельствует даже расшифровка аббревиатуры – Personal Home Page (персональная домашняя страница).

Это была невзрачная CGI-оболочка, написанная на языке Perl. Позже, чтобы избавиться от значительных непроизводительных затрат, Perl-оболочка была полностью переписана на языке С. Затем все произошло так, как и с большинством популярных сейчас языков программирования (Perl, Python и т. д.): язык понравился, и программисты захотели использовать его для своих целей. Так в 1995 году появилась первая версия программы, содержавшая всего несколько простейших команд, позволявшая организовать на своей домашней странице счетчик, гостевую книгу и тому подобное. Сейчас PHP – мощный язык, имеющий в своем арсенале средства для работы с обычными файлами и базами данных (поддерживается большинство известных SQL-серверов), поддерживающий практически все протоколы, применяющиеся в сети Интернет (HTTP, FTP, SMTP, POP, IMAP), имеющий механизм регулярных выражений и к тому же прекрасно работающий с наиболее популярным веб-сервером Apache. Даже официальная расшифровка аббревиатуры изменилась на PHP – Hypertext Preprocessor, вот так в рекурсивном UNIX-стиле.

Что же представляет собой PHP? Это интерпретируемый язык, код которого встраивается прямо в обычный HTML-документ. Когда посетитель обращается к вашей страничке, то такая программа обрабатывается не браузером или сервером, а специальной программой-интерпретатором. Для того чтобы сервер знал, кто должен обрабатывать данный файл, его расширение изменяется на .php (.phtml, .php3 и другие, в зависимости от настроек сервера). Программа-интерпретатор, найдя инструкции, выполняет их и выдает полученный результат, который и видит пользователь, сам код остается недоступным. Это, кстати, неплохой способ скрыть комментарии, спрятать их в инструкциях PHP, которые пользователь не получает. При этом статическая часть документа, написанная на языке HTML, фактически является шаблоном, а изменяемая часть формируется при исполнении PHP-инструкций. Синтаксис языка очень напоминает C, а если быть точнее, то Perl. Те, кто программировал на этом языке, найдут много знакомого. Для вставки инструкций PHP в HTML-документ существует четыре варианта, приведу их все, так как на различных сайтах их часто можно встретить.

Первый и, наверное, наиболее предпочтительный, так как принят по умолчанию:

 Второй вариант, сокращенный:

Для того чтобы ваш интерпретатор понимал его, установите значение параметра short_open_tag=On в файле php.ini, который находится в каталоге, куда установлен PHP.

Третий вариант предназначен для тех, кто привык работать с ASP:

<% PHP-инструкции %>

опция asp_tags=ON.

И четвертый – в духе JavaScript:

<script language="php"> PHP-инструкции </script>

Так как самый лучший способ учебы – это пример, то на них и будем потихоньку учиться.

1.<HTML>

2.<HEAD>

3.<TITLE>Hello</TITLE>

4.<META HTTP-EQUIV="pragma" CONTENT="nocache">

5.</HEAD>

6.<BODY>

7.<?php  echo "Hello World";

8.?>

9.</BODY>

10.</HTML>

Примечание: нумерация приведена лишь для удобства, использовать ее в реальном документе не надо. Как видите, обычный HTML-документ. Четвертая строка необходима для указания браузеру, чтобы он не кешировал образовавшийся документ, иначе файлы будут выдаваться из кеша, а не запрашиваться у сервера, и вы можете не увидеть внесенные изменения. Вообще-то для этого можно использовать и встроенную функцию header, для HTTP/1.0 вызов будет таким:

header("Pragma: no-cache")

А строки 7, 8 просто выводят информацию. Результат можете посмотреть на рис. 1. Если необходимо использовать несколько операторов, то все они разделяются между собой «;», кроме последнего: после него ставить точку с запятой необязательно.

Рисунок 1

Рисунок 1

Теперь давайте узнаем всю информацию об установленном PHP. Создайте файл такого содержания:

Рисунок 2

Рисунок 2

Что, мало? А посмотрите, какой выход (рис. 2). Кстати, очень хороший способ узнать все о PHP на том сервере, где вы собираетесь размещать свои скрипты. Пойдем дальше. Как и положено полноценному языку программирования, в скриптах возможно использование переменных, например:

.

    $message="Hello World";

         echo $message

?>

И на выходе получим тот же результат. Это, как вы понимаете, очень удобно, ведь значение переменной можно изменять. Все переменные, как и в языке Perl, в PHP начинаются со знака доллара, после которого обязательно должен идти алфавитный символ (не цифра) или знак подчеркивания. Переменным можно присвоить до восьми различных типов данных:

  • booleans (принимает значения false, true);
  • integers (целые числа);
  • floating point numbers (вещественные);
  • string (строки);
  • array (массивы любых типов данных);
  • objects (объекты);
  • resourses (ресурсы);
  • NULL (никакое значение).

При этом, как и в Perl, значение типа переменной объявлять заранее необязательно, все это происходит автоматически. Чтобы проверить, введите такой пример:

.

    $message="Hello Worl";

    $message=4

         echo $message

?>

Переменной можно присваивать и результат выполнения функции (рис. 3): 

echo "Сегодня $d"

 ?>

Рисунок 3

Рисунок 3

И еще надо помнить, что регистр имеет значение, т.е. $var и $Var – это две различные переменные, будьте внимательны при наборе. Теперь кратко о типах данных.

Integer может принимать следующие значения:

  • $a = 1234 – обычное число;
  • $a = – 1234 – отрицательное;
  • $a = 0123 – восьмеричное;
  • $a = 0x123 – шестнадцатеричное.

Floating point numbers можно записать как в виде $a = 1.234, так и в «научной» нотации $a = 1.2e3. Строка – это данные, помещенные между двумя знаками «». О переменных, пожалуй, пока все, оставшиеся типы рассмотрим по ходу. Теперь попробуем что-нибудь посложнее. Создайте в папке сервера файл hello.inc такого содержания:

<?php

function printtitle() # объявляем функцию

    {

    print "<title>Hello from hello.inc</title>\n";

    }

function printnumbers($start)

    {

    print "<H2>"; // выводим начальный тег

    for($temp=0; $temp < 5; $temp++) 

    {  /*  теперь выведем значение переменной   */

    print $start++ . "<br>\n";

    }

    print "</H2>"; // выводим конечный тег

    }

?>

Теперь создайте файл hello1.php такого содержания:

<HTML>

<?php include("./hello.inc") ?>

<HEAD>

<?php printtitle() ?>

<META HTTP-EQUIV="pragma" CONTENT="nocache">

</HEAD>

<BODY>

Начинаем <p>

<?php

printnumbers(7);

?>

<p> Заканчиваем <p>

</BODY>

</HTML>

Теперь запустите браузер и наберите http://localhost/hello1.php. Результат посмотрите на рис. 4.

Рисунок 4

Рисунок 4

Давайте теперь разберем, что получилось. Начнем с файла hello.inc. Сначала обратите внимание на появившиеся комментарии: они при выполнении скрипта пропускаются и служат для того, чтобы потом можно было разобраться в программе. Дополнительно комментариями можно временно отключать ту или иную часть кода при отладке. Как вы видите, комментарии можно обозначать тремя различными способами. Знаки // и # действуют только до конца текущей строки, если есть необходимость в более длинном комментарии, то воспользуйтесь конструкцией в стиле С /* текст комментария */.

Следующий шаг – это объявление пользовательской функции. Первая функция printtitle() выдает с помощью функции print заголовок, который и выведет браузер. Посмотрите, здесь использована так называемая управляющая последовательность (escaped characters): символ , используемый для перехода на новую строку, в их число входит также символ – знак горизонтальной табуляции.

Функция printnumbers, как видите, уже принимает аргументы, мы просто увеличиваем значение переменной $start после каждого вызова функции print. Здесь используется оператор приращения, пришедший из языка С. Если данный оператор стоит, как в нашем случае, после переменной, то ее значение изменится уже после того, как оператор вернет значение, а если данный оператор поставить перед переменной (++$var), то ее значение изменится до того, как возвращается ее значение. Возможно также применение оператора уменьшения. Для того чтобы соединить две строки, используется точка, а не знак плюс. В конструкции print $start++ . «
» мы это и использовали. Со строками связан еще один интересный момент – подстановка переменных непосредственно в строку. Для этого строку необходимо заключить в двойные кавычки. Попробуйте такой пример:

<?php

   $name="Сергей";

   echo "Добрый день $name\n";

   echo 'Добрый день $name\n'

?>

Рисунок 5

Рисунок 5

Результат посмотрите на рис. 5. Как видите, в первой строке, заключенной в двойные кавычки, выведено значение переменной $name, а во второй строке с одинарными кавычками такой подстановки не произошло. Поэтому если вы хотите отобразить такие символы, как «$», «/», «“», «.» и некоторые другие, то они должны обязательно экранироваться обратным слэшем. А вот с помощью обратных кавычек можно выполнять команды интерпретатора.

<?php  

   echo `pwd`

?>

Рисунок 6

Рисунок 6

И браузер выведет название каталога, из которого запущен скрипт (рис. 6). Это, с одной стороны, придает гибкость, позволяя использовать мощный потенциал, заложенный в систему, а с другой – необходимость заботиться о безопасности, ведь злоумышленник может исполнить и такой скрипт:

<?php 

   $cat=`cat /etc/passwd`;

  echo  "<pre>$cat</pre>"

?>

Рисунок 7

Рисунок 7

И браузер выведет содержимое файла /etc/passwd (рис. 7). Дальше мы столкнулись с оператором цикла. Оператор for используется для итерационного выполнения команд, находящихся в теле цикла. В данном случае, пока переменная $temp не достигнет значения, меньшего или равного пяти, будет печататься значение переменной $start.

При этом возможны, например, и такие конструкции:

for ($i = 1; $i <= 10; print $start++ , $i++) ;

Все, с файлом hello.inc разобрались, давайте перейдем теперь к файлу hello1.php. Оператор include(“./hello.inc”) подключает внешний файл, в котором PHP будет искать информацию, если не найдет ее в основном файле. Использование одного файла позволяет избежать повторения одной и той же информации во всех файлах проекта. Да и в случае изменения какой-либо функции необходимо будет внести изменения только в один файл, а не в сотню. Обратите еще внимание на UNIX-стиль указания текущего каталога. Дальше вызываем на исполнение функцию printtitle(), которая выводит заголовок файла, а функция printnumbers(7), как видите, вызывается с аргументом, который будет передан в тело функции.

Теперь немного информации для тех, кто хочет начать изучать новый для себя язык программирования, но не знает, с чего начать. Для того чтобы полноценно работать с PHP, вам понадобится как минимум три вещи. Первая – собственно интерпретатор, здесь отправная точка – официальный сайт проекта http://www.php.net, где вы дополнительно найдете документацию (на английском) http://www.php.net/manual/en. Еще советую заглянуть на сайт http://www.phpbuilder.com, где также полно документации (опять же на английском), а вот по адресу http://pear.php.net расположен аналог Perl CPAN, называемый PEAR (PHP Extension and Application Repository), где можно найти большое количество готовых скриптов. Для тех, кто программирует под Windows, еще один полезный ресурс: http://www.php4win.com.

Но для полноценной работы необходимо наличие веб-сервера, здесь альтернативы очень удобному бесплатному и наиболее популярному веб-серверу Apache, который есть как для Windows, так и для UNIX-подобных операционных систем, нет. Найти индейца можно по адресу http://www.apache.org или его «русифицированный» вариант, который можно взять с сайта http://apache.lexa.ru.

И третий компонент, который может вам понадобиться – это какой-нибудь SQL-сервер. Здесь выбор большой, я лично использую MySQL http://www.mysql.com. Из редакторов под Windows (кроме блокнота) могу посоветовать CuteHTML или Arisesoft Winsyntax (http://www.winsyntax.com/files/site2/aswsyn20.zip).

http://quanta.sourceforge.net/quantadoc. А HTML-редактор bluefish имеет заготовки практически для всех функций PHP.

Пока все. До следующего раза. Успехов.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru