Общие теоритические сведения

PHP – это язык серверных скриптов (server scripting language), встраиваемый в HTML, который интерпретируется и выполняется на сервере.

Изначально аббревиатура РНР расшифровывалась как Personal Home Page (личная домашняя страничка). Этот язык был создан в 1994 году Расмусом Лердорфом (Rasmus Lerdorf), чтобы отслеживать пользователей, просматривавших его домашнюю страничку с резюме. Позже, когда функциональность РНР значительно расширилась и профессионалы начали использовать этот язык для создания сложных сайтов, сокращение стали расшифровывать как «гипертекстовый препроцессор» РНР: Hypertext Preprocessor.

Определение означает, что данные в этом языке обрабатываются до того, как становятся HTML-страницей (HTML – язык гипертекстовой разметки). Согласно официальному сайту РНР (www.php.net.), РНР является серверным межплатформенным встроенным в HTML языком написания сценариев. Это может показаться довольно сложным определением, но оно станет простым и понятным, если рассмотреть его по частям.

Во-первых, слово «серверный» означает, что операции РНР выполняются на стороне сервера (в противоположность клиенту, компьютеру пользователя, с которого последний просматривает Web-сайт).

Сервер – это специальный компьютер. На нем хранятся страницы, которые вы видите, когда заходите по указанному в браузере адресу, например Navigator или Internet Explorer.

Определение «межплатформенный» означает, что язык РНР может использоваться под Unix, Windows NT, Macintosh, OS/2 и другими серверными, но не клиентскими операционными системами. При этом вы можете переносить свою работу на другую платформу почти или вообще без изменений. Разумеется, PHP-сценарии также можно разрабатывать в любой операционной системе, как и в случае HTML-страниц.

Словосочетание «встроенный в HTML» означает, что РНР может быть внедрен в код HTML, с помощью которого строятся все Web-страницы. Поэтому реальное программирование на РНР может быть лишь немного сложнее, чем создание кода вручную на HTML.

Наконец, РНР является языком написания сценариев, а это свойство немногих языков программирования.

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

<?php

$a=3;

$b=4;

$c=-1;

$d=($a*$b)/abs($c);

echo $d;

?>

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

В PHP поддерживаются все математические функции, логические операции и многое другое.

Вывод результата на экран осуществляется при помощи функции echo, если нужно выводить результат в столбик, то добавляем HTML-тег <br>, в результате вывод на экран будет производиться в столбик.

Еще одна особенность PHP это работа с HTML кодом, благодаря которому можно оформить скрипты, сделать интерфейс страницы.

Инструкции выбора: If, switch. Очень просто организуются функции выбора действия. Здесь условие представляет собой логическое выражение (которое может принимать одно из двух значений: ИСТИНА или ЛОЖЬ). Заданная инструкция будет выполнена, если условие окажется истинным. В противном случае (если условие окажется ложным) заданная инструкция игнорируется.

Пример конструкции if выглядит так:

If (условие) {действие 1;} else {действие 2;};

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

Оператор Отношение
< меньше
> больше
<= меньше или равно
>= больше или равно
== равно
<> не равно

Инструкция switch обеспечивает многонаправленное ветвление. Она позволяет делать выбор одной из множества альтернатив.

Пример конструкции switch:

Switch(переменная);

{

Case условие 1: действие 1; break;

Case условие 2: действие 2; break;

Case условие 3: действие 3; break;

break;

}

В данной инструкции обязательно нужно указывать функцию break, которая позволяет завершить выполнение инструкции, также можно использовать функцию continue, она позволяет перейти к выполнению следующей команды в программе.

Циклы. Также в PHP используются циклы, с пост- и предусловием и заданным шагом.

Цикл for, чтобы выполнить определенное количество раз последовательность программных инструкций, необходимо организовать цикл. Самый простейший способ организации цикла, это цикл for. Следует понимать, что условное выражение всегда тестируется в начале выполнения цикла for. Это значит, что если первая же проверка условия даст значение ЛОЖЬ, код тела цикла не выполнится ни разу.

Пример конструкции цикла for:

For (начальное значение; конечное значение; шаг цикла)

{}

Также можно использовать другую конструкцию:

For (начальное значение;;шаг цикла)

{ Инструкция выбора, при достижении желаемого результата использование функции break;} – при использовании данной конструкции цикл выполнится хотя бы один раз.

Также используются циклы с пред- и пост- условиями.

Общая форма цикла с предусловием(While) выглядит так:

While(инструкция):

{действие}

Endwhile;

Элемент инструкция выполняется до тех пор, пока условное выражение возвращает значение ИСТИНА. Как только это условие становится ложным, управление передается инструкции, которая следует за этим циклом.

Цикл с постусловие (do while) конструкция выглядит следующим образом:

Do

{действие}

While(инструкция);

Данный цикл выполняется хотя бы один раз, т.к. условие проверяется после выполнения действия и пока инструкция возвращает значение истины цикл будет выполняться.

Основные HTML теги. Для того чтобы сделать интуитивно понятный и дружественный интерфейс необходимо воспользоваться HTML разметкой страницы. Все тэги HTML начинаются с «<» (левой угловой скобки) и заканчиваются символом «>» (правой угловой скобки). В основном теги существуют парами: стартовый и завершающий теги, но бывают и исключения так, например, тег «Комментария», этот тег позволяет вставлять в тело документа комментарии, которые сохраняются при передаче документа по сети, но браузером не отображаются.

Синтаксис комментария:

<! - Это комментарий ->

Для выполнения данной лабораторной работы приведены базовые HTML теги.

Основные теги:

<html></html> указывает программе просмотра страниц, что это HTML документ;

<head></head> определяет место, где помещается различная информация не отображаемая в теле документа. Здесь располагается тег названия документа и теги для поисковых машин;

<body></body> определяет видимую часть документа.

Атрибуты тела документа:

<body bgcolor=«?»> устанавливает цвет фона документа, используя значение цвета в виде RRGGBB – пример: FF0000 – красный цвет;

<body text=«?»> устанавливает цвет текста документа, используя значение цвета в виде RRGGBB – пример: 000000 – черный цвет;

<body link=«?»> устанавливает цвет гиперссылок, используя значение цвета в виде RRGGBB – пример: 00FF00 – зеленый цвет;

<body vlink=«?»> устанавливает цвет гиперссылок на которых вы уже побывали, используя значение цвета в виде RRGGBB – пример: 333333 – серый цвет;

<body alink=«?»> устанавливает цвет гиперссылок при нажатии.

Форматирование:

<p></p> создает новый параграф;

<p align=«?»></p> выравнивает параграф относительно одной из сторон документа, значения: left, right, или center;

<br> вставляет перевод строки;

<blockquote></blockquote> создает отступы с обеих сторон текста;

<dl></dl> создает список определений;

<dt> определяет каждый из терминов списка;

<dd> описывает каждое определение;

<ol></ol> создает нумерованный список;

<li> определяет каждый элемент списка и присваивает номер;

<ul></ul> создает ненумерованный список;

<li> предваряет каждый элемент списка и добавляет кружок или квадратик.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Для создания нового проекта необходимо запустить среду разработки phpDesigner 7 из меню «Пуск» -> «Все программы» и создать новый проект из меню «File» -> «New» -> «PHP».

В результате этих действий будет открыто основное окно разработки в среде PhpDesigner 7. Это окно уже содержит готовый текстовый шаблон для создания программы.

После создания главной формы необходимо написать код web-приложения, создание так называемого «скелета», который в дальнейшем будет модифицирован, с добавлением создаваемых сценариев.

<html>

<head> </head>

<body>

<p align=”center”> Приложение помощи в решении анаграмм </p>

</body>

<?php

?>

</html>

Создание базовых сценариев. После создания главной формы, необходимо создать базовые сценарии, которые будут выполняться по запросам пользователей. Такими сценариями являются счетчик посещений, защита от «ботов», решение анаграмм и помощь в поиске слов – палиндромов.

Для создания сценария «Счетчик посещений», необходимо создать пустой PHP документ, а также несколько текстовых файлов, в которых будет храниться информация о посетителях (рис.3.1).

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

общие теоритические сведения - student2.ru

Рис. 3.1. Создание директории счетчик

Листинг сценария счетчик:

<?php

$file_name = "counter.txt";

if ( !file_exists($file_name ) ) {

$fp = fopen ($file_name, "w");

fwrite ( $fp, "0");

fclose ( $fp );

}

$fp = fopen($file_name, "r");

$counter = fread($fp, 10);

fclose ($fp);

$counter++;

$fp = fopen($file_name, "w");

fwrite($fp, $counter);

fclose($fp);

$file_namev = "counterv.txt";

if ( !file_exists($file_namev ) ) {

$fp = fopen ($file_namev, "w");

fwrite ( $fp, "0");

fclose ( $fp );

}

$fp = fopen($file_namev, "r");

$counterv = fread($fp, 10);

fclose ($fp);

// опрашиваем значение cookie

if(!isset($_COOKIE['visitor'])) {

setcookie("visitor", "yes");

$counterv++;

$fp = fopen($file_namev, "w");

fwrite($fp, $counterv);

fclose($fp);

}

//счет посетителей за последние 24 часа

$file_n = "count.txt";

/* если не существует, создаем пустой файл с нулем посещений по умолчанию */

if(!file_exists($file_n)) file_put_contents($file_n,0);

$count = file_get_contents($file_n);

if(!isset($_COOKIE['visitor24'])) {

setcookie("visitor24", "yes");

$count++;

file_put_contents('count.txt',$count);

}

?>

Данный сценарий считывает количество посещений приложения, конечный результат подсчета выводит в файл count.txt.

Созданием следующего сценария является защита от «ботов».

Бот – программа, автоматически выполняющая действия на компьютере вместо людей.

CAPCHA – Completely Automated Public Turing test to tell Computers and Humans Apart.

Сценарий позволяет предотвратить обращения к сайту «ботов», что позволяет снизить нагрузку на приложение. Далее защиты от ботов будем именовать «Капча». Данный сценарий содержит в себе директорию из 4 файлов (рис. 3.2).

общие теоритические сведения - student2.ru

Рис. 3.2. Директория «Капча»

Листинг сценария «Капча» состоит из трех подсценариев.

Сценарий генерации картинки.

<?php

$width = 100; //Ширина изображения

$height = 60; //Высота изображения

$font_size = 16; //Размер шрифта

$let_amount = 4; //Количество символов, которые нужно набрать

$fon_let_amount = 30; //Количество символов на фоне

$font = "cour.ttf"; //Путь к шрифту

//набор символов

$letters = array("a","b","c","d","e","f","g");

//цвета

$colors = array("90","110","130","150","170","190","210");

$src = imagecreatetruecolor($width,$height); //создаем изображение

$fon = imagecolorallocate($src,255,255,255); //создаем фон

imagefill($src,0,0,$fon); //заливаем изображение фоном

for($i=0;$i < $fon_let_amount;$i++) //добавляем на фон буковки

{

//случайный цвет

$color = imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100);

//случайный символ

$letter = $letters[rand(0,sizeof($letters)-1)];

//случайный размер

$size = rand($font_size-2,$font_size+2);

imagettftext($src,$size,rand(0,45),

rand($width*0.1,$width-$width*0.1),

rand($height*0.2,$height),$color,$font,$letter);

}

for($i=0;$i < $let_amount;$i++) //то же самое для основных букв

{

$color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],

$colors[rand(0,sizeof($colors)-1)],

$colors[rand(0,sizeof($colors)-1)],rand(20,40));

$letter = $letters[rand(0,sizeof($letters)-1)];

$size = rand($font_size*2-2,$font_size*2+2);

$x = ($i+1)*$font_size + rand(1,5); //даем каждому символу случайное смещение

$y = (($height*2)/3) + rand(0,5);

$cod[] = $letter; //запоминаем код

imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter);

}

$cod = implode("",$cod); //переводим код в строку

session_start();

$_SESSION['code']=$cod;

header ("Content-type: image/gif"); //выводим готовую картинку

imagegif($src);

?>

Сценарий проверки введенного кода.

<?php

session_start();

$code=$_SESSION['code'];

if($_POST['captcha_code']=="" || $_POST['captcha_code']==" ")

{

die("Введите символы!");

}

else

{

$p_code=$_POST['captcha_code'];

if($p_code!=$code)

{

die("Неверно введены символы!");

}

else

{

//Тут делаем все что должно быть,

//если капча введена верно

}

}

?>

Сценарий интерфейса «Капча».

<html>

<head>

</head>

<img src="captcha.php" />

<form action="check.php" method="POST">

<input type="text" name="captcha_code">

<input type="submit" value="OK" name="req">

</form>

</html>

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

Так как язык PHP является серверным, то для того чтобы считывать пользовательские данные необходимо создать два файла string.txt, в котором хранятся символы, и char.txt, который содержит данные о количестве символов в слове (рис. 3.3).

общие теоритические сведения - student2.ru

Рис. 3.3. Вспомогательные файлы сценария «Анаграмма»

Листинг сценария «Анаграмма»:

<html>

<head></head>

<body>

<p align="center">

<?php

$fp=fopen('string.txt','r');

while(!feof($fp))

{

$str=fgets($fp);

$str=rtrim($str);

}

fclose($fp);

$n=$str;

$fp1=fopen('char.txt','r');

while(!feof($fp1))

{

$str1=fgets($fp1);

$str1=rtrim($str1);

}

fclose($fp1);

$m=$str1;

$arr1 = str_split($n);

$flag=0;

$x=(pow(10,$m)-1)/$m;

$y=(pow(10,$m-1));

for ($i=$y;$i<$x;$i++)

{

$arr3=str_split($i);

if (($arr3[0]<>$arr3[1]) and ($arr3[0]<>$arr3[2]) and ($arr3[1]<>$arr3[2]))

{

$b=$i;

if ($flag<>1)

{

for ($j=0;$j<$m;$j++)

{

if ($b%10<$m)

{

$arr2[$j]=$b%10;

$b=$b/10;

}

else

{

$flag=1;

}

}

}

if ($flag<>1)

{

for ($j=0;$j<$m;$j++)

{

$b=$arr2[$j];

print_r($arr1[$b]);

}

echo("</br>");

}

$flag=0;

}

}

?>

</p>

</body>

</html>

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

Создание второстепенного сценария «Палиндром», этот сценарий содержит базу слов-палиндромов, которую пользователи смогут просматривать в целях повышения эрудиции. Для этого создаем два файла палиндром.php и база.txt (рис. 3.4).

общие теоритические сведения - student2.ru

Рис. 3.4. Создание палиндром.php и база.txt.

Листинг сценария «Палиндром».

<html>

<body>

<body text="dark green">

<p align="justify">

<?php

$fp=fopen('база.txt','r');

while(!feof($fp))

{

$str=fgets($fp);

echo($str);

$str=rtrim($str);

}

fclose($fp);

?>

</p>

</body>

</html>

База содержит примеры слов – палиндромов (рис. 3.5).

общие теоритические сведения - student2.ru

Рис. 3.5. Слова – палиндромы

ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ

Выполните общие команды по пункту 3.

Создайте собственную программу в соответствии с вашим индивидуальным заданием.

Оформить отчет согласно требованиям.

Варианты:

1. Создать сценарий, позволяющий производить проверку на «ботов».

2. Создать сценарий, позволяющий производить подсчет посетителей страницы.

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

4. Создать сценарий, позволяющий производить поиск по документу.

Результаты работы по всем этапам отобразите в отчете. Отчет должен содержать титульный лист, цель лабораторной работы, скриншоты в ходе выполнения работы и их описание, вывод.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Что означает PHP?

2. В чем заключается межплатформенность PHP?

3. В чем отличие циклов с пост и предусловием?

4. Кем был создан язык программирования PHP?

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

1. Васильев А. Н. Java. Объектно-ориентированное программи-рование: для магистров и бакалавров: базовый курс по объектно-ориентированному программированию / А. Н. Васильев. – Санкт-Петербург [и др.]: Питер, 2013. – 397 с. – ISBN 978-5-496-00044-4. – <URL:http://www.library.ugatu.ac.ru/pdf/teach/Vasilyev_Java_2012.pdf>.

2. Иванова Г. С. Технология программирования: учебник / Г. С. Иванова. – 3-е изд., стер. – Москва: Кнорус, 2013. – 336 с.

3. Каймин В. А. Информатика: / В. А. Каймин. – Изд. 6-е. – Москва: Инфра-М, 2015. – 285 с.

4. Кравец О. Я. Практикум по разработке интернет-приложений / О. Я. Кравец, Е. А. Солдатов, М. В. Селиванова; ГОУ ВПО УГАТУ. – 2-е изд. перераб. и доп. – Уфа: УГАТУ, 2008. – 225 с.

5. Кузнецов М. В. Самоучитель PHP 5/6 / М. В. Кузнецов, И. Симдянов. – 3-е изд., [перераб. и доп.]. – Санкт-Петербург [и др.]: БХВ-Петербург, 2014. – 672 с.

6. Лафоре Р. Структуры данных и алгоритмы в Java / Р. Лафоре. – 2-е изд. – Санкт-Петербург [и др.]: Питер Пресс, 2014. – 704 с.

7. Машнин Т. С. Google App Engine Java и Google Web Toolkit: разработка Web-приложений / Т. С. Машнин. – Санкт-Петербург: БХВ-Петербург, 2014. – 352 с.

8. Мельников П. П. Технология разработки HTML-документов / П. П. Мельников. – М.: Финансы и статистика, 2005. – 112 с.

9. Основы WEB-дизайна / Т. И. Сергеева, М. Ю. Сергеев, С. С. Валеев, Ю. Г. Строкина; ГОУ ВПО УГАТУ. – Уфа: УГАТУ, 2009. – 160 с.

10. Подвальный С. Л. Основы интернет-технологий / С. Л. Подвальный, О. Б. Кремер, Д. И. Кардаш; ГОУ ВПО УГАТУ. – Уфа: УГАТУ, 2008. – 153 с.

11. Ульман Л. Основы программирования на PHP: самоучитель / Л. Ульман. – Москва: ДМК ПРЕСС, 2009. – 288 с.

12. Эккель Б. Философия Java. – 4-е изд. – СПб.: Питер, 2009. – 640 с.

Наши рекомендации