Лабораторная работа №7. PHP

Задание 1. Массивы и строки

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

Второй способ создания массива реализуется путем вызова функции array():

$massiv = array('one','two','three');

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

$new_massiv = array('name' => 'nobody', 'email' => 'mail@bsu.by');

Между индексом и значением здесь помещается здесь знак =>. Рассмотрим пример:

<?php //pr45

$massiv = array('one','two','three');

$massiv[5]="5";

$massiv[6]="6";

$massiv[]="7";

print_r($massiv);

$new_massiv = array('name' => 'nobody', 'email' => 'mail@bsu.by');

print_r($new_massiv);

print $new_massiv['name']

?>

Выполнить одно из перечисленных ниже упражнений

1.1. В массиве строк проверить начинается ли каждая строка символом “*”. Строки без “* “ перенести в другой массив.

1.2. В массиве из n строк проверить, содержит ли к-я строка символ @. Если не содержит, вставить символ в строку.

1.3. В массиве строк удалить все HTML –теги, заключенные в скобки <>

1.4. В массив случайным образом помещаются строки задающие «совет дня» или «цитата дня». Случайным образом выбрать строку из массива можно использовать функции Shuffle(array arr); или arrayrand(array arr, int num);

1.5. Создать многомерный массив: Факультет, Курс, Группа, Студенты. Вывести список студентов в алфавитном порядке.

1.6. Создать многомерный массив: Факультет, Кафедра, Преподаватели. Вывести список преподавателей в алфавитном порядке.

Задание 2. Функции

Функция может быть определена с использованием синтаксиса:

function fname ($arg_1, $arg_2, ..., $arg_n)

{

echo "Пример \n";

return $val; //возвращаемое значение

}

Необязательный оператор return возвращает значение любого типа, в том числе список и объект.

<?php //pr11.php-найти все натуральные числа, не //превосходящие m и содержащие хотя бы одну девятку в //десятичном представлении

$m=rand(10,150); //случайное значение m

print "m=$m<br>";

for($i=1;$i<$m;$i++)

{$k=f($i);

if($k!=0)print "$k<br>";

}

function f($n)

{$l=$n;

do

{

if(($l%10)==9)return $n;}

while(($l/=10)!=0);

return 0;

}

?>

Выполнить одно из перечисленных ниже упражнений

2.1. Среди n чисел найти наибольшее и наименьшее простые числа.

2.2. Для заданного числа n построить треугольник Паскаля.

2.3. Написать функцию, возвращающую текст приветствия в соответствии с приведенной ниже схемой

<?php

if((date(“G”) >=5)AND(date(“G”) <= 11 ))echo “Good Morning!”;

if((date(“G”)>=12)ANDdate(“G”)<=18))echo “Good Afternoon!”;

if((date(“G”) >= 19)AND(date(“G”)<= 4))echo “Good Evening!”;

?>

 

Задание 3. Файлы и строки

Файлы могут быть текстовыми, содержащими строки переменной длины и бинарными, представляющими последовательность байт.

Открытие файла:

int fopen (string filename, string mode [, int use_include_path]). Функция осуществляет открытие локального или удаленного файла с именем, указанным в filename, и возвращает его дескриптор (номер). Режим открытия файла mode, может принимать следующие значения:

"r" - файл открывается только для чтения. "r+" - открывается на чтение и на запись. Указатель файла устанавливается в его начало.

"w" - Файл открывается только для записи. Указатель файла устанавливается в его начало. Всё старое содержимое файла теряется, счётчик длины файла устанавливается равным 0. Если файл с указанным именем не существует, функция пытается его создать. "w+" - Файл открывается на чтение и на запись. Указатель файла устанавливается в его начало. Всё старое содержимое файла теряется.

"a" - Файл открывается на добавление (запись). Указатель файла помещается в конец файла. Если файл с указанным именем не существует, функция пытается его создать. "a+" - Файл открывается на чтение и на запись. Вот несколько примеров открытия файлов с помощью fopen()

$fp = fopen ("/home/a/bases.dat", "r");

$fp = fopen ("/home_dir/client/count.txt", "w+");

$fp = fopen ("http://www.yahoo.com/", "r");

В случае успешного завершения функция fopen() возвращает "ссылку" на открытый файл, а в случае ошибки эта функция возвращает булевское значение false.

В РНР имеется возможность удаленного открытия файлов путем указания URL-адреса в качестве параметра $ filename функции fopen (). Осуществлять запись в такие файлы, невозможно, но зато можно читать файлы, расположенные на Web- и FTP-серверах.

Закрытие файла: bool fclose ($fp).

URL, содержащие недопустимые символы (например, пробельные символы в имени файла), необходимо кодировать перед их использованием с помощью функции urlencode (). Функция urlencode () принимает единственный параметр (URL, подлежащий кодированию) и возвращает закодированный URL. Использование функции fореn()

<?php

/* Открыть файл для чтения */

$fr = fopen("myfile.txt", 'г');

/* Открыть бинарный файл для чтения/добавления */

$fr = fopen("myfile.dat", 'ba+');

/* Открыть файл для чтения/записи (искать файл в пути,

заданном директивой include_path)*/

$fr = fopen("code.php", 'w+', true);

/* Открыть файл index.php, для чтения по протоколу HTTP */

$fr = fopen("http://www.php.net/index.php", 'г');

/* Открыть файл index.php, для чтения по протоколу FTP */

$fr = fopen("ftp://ftp.php.net/index.php", 'г');

/*Закодировать URL, затем открыть для чтения по протоколу HTTP */

$url = "http://www.php.net/this is my invalid URL.php";

$url = urlencode($url);

$fr = fopen($url, 'r');

?>

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

Считывание строки: string fgets ( $fp, $length). Функция возвращает строку длиной до length-1 байт, считанную из файла $fp. Операция чтения завершается либо после загрузки length-1 символов, либо после обнаружения символа конца строки (который включается в возвращаемое значение), либо при обнаружении признака конца файла.

Вот пример построчного вывода на экран, содержимого файла:

<? //pr415

$fp = fopen ("pr415.php", "r");

while (!feof ($fp)) {

$stroka = fgets ($fp, 80);

echo $stroka."<BR>";

}

fclose($fp);

?>

Загрузка строки с пропуском HTML-тего выполняется функцией: string fgetss ($fp, $length [, string allowable_tags]). Функция работает идентично fgets(), за одним исключением: из считанной строки удаляются все HTML-теги, если таковые в ней присутствуют. Есть возможность использовать необязательный третий аргумент, для указания разрешенных тегов, которые удалены не будут.

Альтернативой fgets () является функция fscanf (). :

fscanf ($filename, $format , $var_one [, $var_two ...]]])

где $filename — входной поток, $format задает шаблон для чтения, а $var_one, $var_two представляют собой переменные, в которых сохраняются разобранные фрагменты данных (эти параметры необходимо передавать по ссылке). В случае успешного завершения ввода fscanf () возвращает количество разобранных элементов, а случае ошибки возвращает значение false.

Функция fputs ()служит для записи строки (или любых других данных) в указанный поток и имеет следующийсинтаксис: fputs($filename, $data [, int $length]), где $filename представляет выходной поток, $data содержит записываемые данные, а необязательный параметр $length задает размер фактически записываемых данных.

 

Выполнить одно из перечисленных ниже упражнений

В следующих заданиях использовать файлы, строки и объекты.

1. Текст записан одной длинной строкой. Признаком красной строки служит символ $. Переформатировать текст в 60-символьные строки, формируя абзацы.

2. Текст, сформированный построчно, выровнять по правому краю так, чтобы каждая строка заканчивалась знаком препинания или одним пробелом. Выравнивание осуществить, вставляя дополнительные пробелы между словами (равномерно по всей строке).

3. Данный текст программы на каком-либо алгоритмическом языке и словарь зарезервированных слов этого языка (в английской транскрипции). Преобразовать текст, записав все зарезервированные слова прописными буквами, а остальные конструкции (имена и так далее) – строчными. Русские буквы (имена, литералы) не заменять.

4. Программа, записанная 80-байтовыми строками, в последних 8 байтах содержит номер строки. Строки упорядочены по номерам, но не обязательно с шагом 1. Поступает изменение к программе в таком виде. Вставить новые строки взамен имеющихся старых или между ними.

5. Текст записан 60-символьными строками, содержит следующие знаки корректуры: $ – сделать красную строку; # удалить следующее слово; @ – удалить следующую фразу. Произвести указанную корректировку, переформатируя строки в пределах абзаца.

6. Часто встречающаяся ошибка начинающих наборщиков – дважды записанное слово. Обнаружить и исправить такие ошибки в тексте, записанном 80-символьными строками; переформатировать строки в пределах абзаца.

7. Стихотворный текст (в строке не более 80 символов) имеет четырехстрочную строфу. Записать его «лесенкой» (по одному слову в строке), вставляя пустую строку после каждого четверостишья.

8. Поздравления. По заданному списку фамилий напечатать каждому упомянутому в списке поздравление к определенному празднику. Чтобы избежать шаблона, перечень желаемых благ выбирать как случайное подмножество из заготовленного списка (например, здоровья, счастья, продвижения по службе, долголетия и т. д.). Можно сделать переменными и название праздника – для универсальности программы.

9. Имеется список членов коллектива с указанием принадлежности каждого к различным общественным организациям (профком, ученый совет, общество книголюбов, федерация пентикса и т. д.). Напечатать приглашение всем членам на очередное заседание указанной организации. Задается только вид организации, место и время сбора.

12. В заданном тексте найти самое длинное слово и самую длинную фразу.

13. Обнаружено, что в тексте пропущены некоторые слова и словосочетания. Эти слова и словосочетания представлены отдельным списком в том порядке, в каком должны быть вставлены. Места вставки отмечены в тексте символом $. Откорректировать текст.

14. Текст не содержит собственных имен и сокращений, набран с использованием прописных и строчных русских букв. Проверить то, что все фразы (и только они) начинаются с прописной буквы; при необходимости откорректировать текст.

15. Текст, не содержащий собственных имен и сокращений, набран полностью прописными русскими буквами. Заменить все прописные буквы, кроме букв, стоящих после точки, строчными буквами.

16. IP-адрес посетителя страницы находится как элемент суперглобального массива S – Server[΄Remoute_ADDR΄]. Составить список посетителей за текущий день (неделю, месяц).

17. Запрет посещений с определенных IP-адресов. В массиве хранятся IP-адреса, выход с которых на наш сайт нежелателен. Сравнить IP-адрес посетителя с адресами из списка и не пускать нежелательного посетителя.

18. Составить список серверов ($_SERVER[΄SERVER_NAME΄]) и список страниц ($_SERVER[΄PHP_SELF΄]), которые мы посетили.

19. Составить список страниц, с которых приходят к нам посетители ($_SERVER[΄HTTP_REFERER΄]).

20. Составить список браузеров, операционных систем, поисковых роботов, которые посещают нашу страницу: ($_SERVER[΄HTTP_USER_AGENT΄]), таким же образом определяются менеджеры закачки типа ΄DownLoadMaster΄, ΄FlashGet΄ и другие.

21. Выяснить языковые предпочтения посетителя, который браузер отправляет серверу в HTTP-заголовке и помещает в массив $_SERVER[΄HTTP_ACCEPT_LANGUAGE΄].

 

Задание 4. Работа с базами данных

Выполнить одно из перечисленных ниже упражнений

Создать распределенную информационную систему. Из пользователей системы обязательно наличие Администратора и Зарегистрированного Пользователя.

В каждом из заданий необходимо выполнить следующие действия:

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

· Спроектировать БД. Привести таблицы к одной из нормированных форм. Создать БД.

· Создать класс для выполнения запросов на извлечение информации из БД с использованием компилированных запросов;

· Создать класс на добавление информации;

· Создать документ (XHTML, JSP и т.д.) с полями для формирования запроса;

· Результаты выполнения запроса передать клиенту.

 

1. Видеотека. В БД хранится информация о домашней видеотеке – фильмы, актеры, режиссеры.

Для фильмов необходимо хранить:

- название;

- актеров;

- дата выхода;

- страну, в которой выпущен фильм.

Для актеров и режиссеров необходимо хранить:

- ФИО;

- дата рождения.

· Найти все фильмы, вышедшие на экран в текущем и прошлом году.

· Вывести информацию об актерах, снимавшихся в заданном фильме.

· Вывести информацию об актерах, снимавшихся как минимум в 2-х фильмах.

· Вывести информацию об актерах, которые были режиссерами хотя бы одного из фильмов.

· Удалить все фильмы, дата выхода которых была более 2-х лет назад.

2. Расписание занятий. В БД хранится информация о преподавателях и проводимых ими занятиях.

Для предметов необходимо хранить:

- название;

- время проведения (день недели);

- аудитории, в которых проводятся занятия.

Для преподавателей необходимо хранить:

- ФИО;

- -предметы, которые он ведет;

- количество пар в неделю по каждому предмету;

- количество студентов занимающихся на каждой паре.

· Вывести информацию о преподавателях, работающих в заданный день недели в заданной аудитории.

· Вывести информацию о преподавателях, которые не ведут занятия в заданный день недели.

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

· Вывести дни недели, в которых занято наименьшее количество аудиторий.

· Перенести первые занятия заданных дней недели на последнее место.

3. Письма. В БД хранится информация о письмах и отправляющих их людях.

Для людей необходимо хранить:

- ФИО;

- дата рождения.

Для писем необходимо хранить:

- отправителя;

- получателя;

- тема письма;

- текст письма;

- дата отправки.

· Найти пользователя, длина писем которого наименьшая.

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

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

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

· Направить письмо заданного человека с заданной темой всем людям.

4. Сувениры. В БД хранится информация о сувенирах и их производителях.

Для сувениров необходимо хранить:

- название;

- производителя;

- дату выпуска;

- цену.

Для производителей необходимо хранить:

- название;

- страну.

· Вывести информацию о сувенирах заданного производителя.

· Вывести информацию о сувенирах, произведенных в заданной стране.

· Вывести информацию о производителях, чьи цены на сувениры меньше 1000.

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

· Удалить заданного производителя и его сувениры.

5. Заказ. В БД хранится информация о заказах магазина и товарах в них.

Для заказа необходимо хранить:

- номер заказа;

- товары в заказе;

- дату поступления.

Для товаров в заказе необходимо хранить:

- товар;

- количество.

Для товара необходимо хранить:

- название;

- описание;

- цену.

· Вывести полную информацию о заданном заказе.

· Вывести номера заказов, сумма которых не превосходит 100 и количество различных товаров равно 1.

· Вывести номера заказов, содержащие товар с заданным заказом.

· Вывести номера заказов, не содержащие товар с заданным названием и поступившие в течение текущего дня.

· Сформировать новый заказ, состоящий из товаров, заказанных в текущий день.

· Удалить все заказы, в которых присутствует заданное количество заданного товара.

6. Погода. В БД хранится информация о погоде в различных регионах.

Для погоды необходимо хранить:

- регион;

- дату;

- температуру;

- осадки.

Для регионов необходимо хранить:

- название;

- площадь;

- тип жителей.

Для типов жителей необходимо хранить:

- название;

- язык общения.

· Вывести сведения о погоде в заданном регионе.

· Вывести даты, когда в заданном регионе шел снег, и температура была ниже -10.

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

· Вывести среднюю температуру за прошедшую неделю в регионах с площадью более 1000.

7. Города. В БД хранится информация о городах и их жителях.

Для городов необходимо хранить:

- название;

- год создания;

- площадь;

- количество населения для каждого типа жителей.

Для типов жителей необходимо хранить:

- город проживания;

- название;

- язык общения.

· Вывести информацию обо всех жителях заданного города, разговаривающих на заданном языке.

· Вывести информацию обо всех городах, в которых проживают жидели выбранного типа.

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

· Вывести информацию самом древнем типе жителей.

8. Словарь. В БД хранится англо-русский словарь, в ко­тором для одного английского слова может быть указано нес­колько его значений и наоборот. Со стороны клиента вводятся последовательно английские (русские) слова. Для каждого из них вывести на консоль все русские (английские) значения слова.

9. Словари. В двух различных базах данных хранятся два словаря: русско-белорусский и белорусско-русский. Клиент вводит слово и выбирает язык. Вывести перевод этого слова.

10. Стихотворения. В БД хранятся несколько стихотворений с указанием автора и года создания. Для хранения стихотворений использовать объекты типа Blob. Клиент выбирает автора и критерий поиска.

· в каком из стихотворений больше всего восклицательных предложений?

· в каком из стихотворений меньше всего повествовательных предложений?

· есть ли среди стихотворений сонеты и сколько их?

 

Задание 5. Создание WEB-объектов

Клиентские методы HTTP

В HTTP метод клиента определяет запрос, отправленный от Web-клиента, либо РНР-сценария, HTTP-серверу. Существуют три основных типа запросов:

GET-запросы. Когда вы хотите только получить информацию от источника HTTP, то можете сделать это методом GET. Получить информацию можно из файла, либо от исполняемой программы на Web-сервере с указанным URL-адресом. Привлекательность HTTP состоит в том, что запрос GET делает выполнение программы таким же простым, как извлечение файла.

POST-запросы. Когда вы хотите отправить информацию от клиента Web-серверу, то используете запрос POST. Обычно это имеет место, когда вы отправляете содержимое Web-формы Web-серверу.

HEAD-запросы. Когда вы хотите получить информацию о запрошенном URL, но не информацию самого URL, то используете запрос HEAD.

По методу GET контент запроса посылается через поля формы или через строку URL, по методу POST – через поля формы. Запросы можно создать и отправить вручную с помощью средств 6-31571.php" class="back_link">⇐ Назад

  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 495051
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • Далее ⇒
  •