
- •В.С. Романчик
- •Глава 2. Использование php.
- •Глава 3.
- •Введение
- •Возможности php.
- •Инструменты для разработки
- •Как php работает
- •Глава 1. Язык php Типы данных
- •Массивы и инициализация массивов
- •Объектно-ориентированное программирование в php Основные понятия ооп
- •Классы и Объекты
- •Конструкторы и деструкторы
- •Наследование классов и интерфейсов
- •Магические методы
- •Обработка ошибок
- •Ошибки php и директива error_reporting
- •Чтение и запись бинарных файлов
- •Работа с каталогами в рнр
- •MySql – сервер: бд1; бд2; бд3; бд4;
- •Язык запросов sql
- •Операция соединения.
- •Команды sql для создания баз данных и таблиц
- •Выборка данных из таблиц бд
- •Работа с MySql (сохранение данных в базе данных).
- •Работа с MySql занесение и получение данных из базы данных
- •Некоторые улучшения в организации работы с данными
- •Передача данных от клиента к серверу и от сервера клиенту
- •Клиентские методы http get, post, head
- •Обработка html-форм и передача переменных в скрипт.
- •Передача значений переменных по методу get
- •Ниже рассмотрен еще один пример передачи данных из клиентской формы на сервер по методу get
- •Передача данных на сервер по методу post
- •Php и обработка различных форм
- •Примеры обработки форм
- •Работа с e-mail
- •Отправка почты на php (Функция mail)
- •Cookies-наборы: сохраненное состояние
- •Сессии (Сеансы) Переменные сеанса
- •Отмена регистрации сеансовых переменных
- •Работа с сеансовыми переменными
- •Постоянные данные, использующие сеансы и cookie-наборы
- •Вывод графических данных с помощью рнр Основной способ создания изображений
- •Получение информации об изображении
- •Функции рисования прямых и кривых линий
- •Заливка изображений
- •Работа с палитрой изображения
- •Удаление и изменение цветов палитры
- •Создание прозрачности в изображениях
- •Рисование с помощью кистей
- •Использование специальных стилей для заливки
- •Использование шрифтов и вывод строк
- •Манипулирование и копирование изображений
- •Создаём графический информер на php
- •Слияние изображений с помощью gd
- •Включения удаленных файлов
- •Различные приложения и полезные скрипты на php
- •Пример. Определение типа и версии браузера
- •Генератор паролей на php
- •Время выполнения скрипта
- •Календарь
- •Загрузка файла от клиента на сервер
- •Работа с ftp на уровне php
- •Сбор статистики на php
- •Проверка ввода емайл
- •Чтение почты через Web-интерфейс
- •Разработка собственных листов рассылки
- •Рассылаем письма
- •Добавляем адреса в список рассылки
- •Редактирование адресов
- •Автоответчик
- •Почтовые функции в рнр
- •Задания для выполнения
- •Приложение 1. Протокол передачи гипертекстов http
- •Клиентские методы и заголовкиHttp
- •Указатель ссылки ("Referer")
- •Медиа-типы
- •Кодирование
- •Безопасность и авторизация
- •Кэширование содержимого http на стороне клиента
- •Http идентификация с php
- •Сжатие данных в протоколе http
- •Модель ajax: между загруженной в браузер страницей и сервером появляется прослойка - уровень ajax, который обеспечивает следующую последовательность выполнения приложения.
- •Класс xmlHttpRequest
- •Методы класса xmlHttpRequest
- •Свойства класса xmlHttpRequest
- •Создание экземпляра объекта xmlHttpRequest
- •Использование dom
- •Проблема с кешированием
- •Информируйте пользователя
- •Нет принципов написания кода
- •Аутентификация средствами php
- •Отделение клиентская части программы от серверной части и шаблоны
- •Использование шаблонов в php
- •Шаблоны подстановки
- •Создаем свои шаблоны в php
- •Теги, атрибуты, значения
- •Структура документа
- •Разрыв строки
- •Предварительное форматирование
- •Комментарии
- •Физическая и логическая разметка документа
- •«Физические» теги:
- •«Логические» теги:
- •Специальные символы
- •Графика
- •Формы html
- •Метатеги
- •Способы включения каскадных таблиц стилей
- •Синтаксис
- •Группирование
- •Наследование
- •Множественные классы.
- •Селекторы идентификаторов (id-селекторы).
- •Комментарии
- •Свойства шрифтов.
- •Свойства текста.
- •Представление документа в виде специальных областей – блоков
- •Отступы, поля, позиционирование.
- •Границы элементов.
- •Визуальные эффекты
- •Свойства списков
- •Свойства таблиц
- •Псевдоклассы
- •Псевдостили текста
- •Псевдоэлементы
- •Различные свойства
- •Css. Примеры
- •Типы данных
- •Ассоциированные массивы
- •Операторы
- •Подпрограммы
- •Приложение 11. Популярные веб-приложения и фреймворки
- •Фреймворки
Задания для выполнения
Задание 1. Матрицы, двумерные массивы и циклы
1. В прямоугольной матрице переставить столбцы в порядке возрастания суммы модулей их элементов.
2. В прямоугольной матрице разделить все ее элементы на наибольшую сумму модулей элементов в строках.
3. В прямоугольной матрице со значениями типа string вычислить количество различных элементов.
4. В прямоугольной матрице со значениями типа string вывести все одинаковые элементы и их индексы.
5. В прямоугольной матрице с элементами типа string заменить нулями все элементы, которые находятся в столбцах или строках, где имеются заданные по образцу строки.
6. В прямоугольной матрице с элементами типа string найти отрезок массива наибольшей длины, в котором первый элемент равен последнему, второй – предпоследнему и т.д. Выведите отрезок и длину отрезка.
7. В прямоугольной матрице с элементами типа string найти отрезок массива наибольшей длины, в котором элементы возрастают. Выведите отрезок и длину отрезка.
8. Транспонировать квадратную матрицу и умножить транспонированную матрицу на исходную.
9. Даны два числа m , n и два упорядоченных массива:
a1≤a2≤...≤am и b1≤b2≤...≤bn. Создать из элементов новый упорядоченный массив c1≤c2≤...≤cm+n.
10. Дана целочисленная матрица Аm,n, строки которой упорядочены по возрастанию (ai,1≤ai,2≤...≤ai,n для i=1,…,m). Найти и вывести числа, которые встречаются во всех строках.
11. Найти сумму тех элементов аi,j из матрицы Аm,n, которые имеют заданную разность индексов i-j=k.
12. Массив чисел Аm,n упорядочен по возрастанию в строках
(ai,1≤ai,2≤...≤ai,n для i=1,…,m) и столбцах (a1,j≤a2,j≤...≤am,j для j=1,...,n). Найти элементы этого массива, равные заданному числу х и вывести их индексы. Количество действий в программе должна быть порядка m+n, а не m*n.
13. Задана квадратная матрица А из значений типа string. Повернуть ее на 90 градусов против часовой стрелки.
14. Матрица K(m,m) состоит из нулей и единиц. Найти в ней номера (индексы)хотя бы одной строки или хотя бы одного столбца, не содержащих единицы, либо сообщить, что таковых нет.
15. В массиве A(n) наименьший элемент поместить на первое место, наименьший из оставшихся – на последнее место, следующий по величине – на второе место, следующий – на предпоследнее и так далее – до середины массива.
16. Латинским квадратом порядка n называется квадратная таблица размером n ×n , каждая строка и каждый столбец которой содержат все числа от 1 до n. Проверить, является ли заданная целочисленная матрица латинским квадратом.
17. Матрицу K(m,m) заполнить следующим образом. Элементам, находящимся на периферии (по примеру матрицы), присвоить значение 1; периметру оставшейся подматрицы – значение 2 и так далее до заполнения всей матрицы.
18. В массиве строк проверить начинается ли каждая строка символом *. Строки без * перенести в другой массив.
19. В массиве из n строк проверить, содержит ли к-я строка символ @. Если не содержит, вставить символ в строку.
20. В массиве строк удалить все HTML –теги, заключенные в скобки <>
21. В массив случайным образом помещаются строки задающие «совет дня» или «цитата дня». Случайным образом выбрать строку из массива можно использовать функции Shuffle(array arr); или arrayrand(array arr, int num);
22. Создать многомерный массив: Факультет, Курс, Группа, Студенты. Вывести список студентов в алфавитном порядке.
23. Создать многомерный массив: Факультет, Кафедра, Преподаватели. Вывести список преподавателей в алфавитном порядке.
Задание 2. Функции
1. Решить методом
итераций уравнение вида
.
Очередное приближение корня находится
по формуле
;
начальное приближение
задается произвольно. Обратите внимание,
что метод сходится, если только
.
2. Вычислить
определенный интеграл
методом прямоугольников:
,
гдеn
– количество отрезков разбиения;
.
3. Найти минимум
заданной функции
на заданном отрезке
методом золотого сечения. Для этого на
отрезке
находятся две точки:
и
,
где
.
4. Написать функцию
вычисления
.
5. Написать функцию
вычисления
.
6. Написать функцию n! Возможна ли рекурсия.
7. Написать функцию вычисления НОД(a, b).
8. Написать функцию вычисления НОК(a, b).
9. Написать функцию
решения квадратного уравнения
.
10. Написать функцию
– площадь треугольника.
11. Из n чисел вывести наибольшее число, делящееся на 9.
12. Вычислить
интеграл
методом трапеций.
13. Вычислить
интеграл
методом Симпсона.
14. Решить уравнение
методом Ньютона
.
15. Значения функции
заданы таблично в массиве
при соответствующих значениях аргумента
в упорядоченном массиве
.
Найти значение функции в произвольной
точкеx
по формуле Лагранжа:
.
16. Решить уравнение
методом деления отрезка пополам (методом
дихотомии). На каждой итерации отрезок
делится пополам и выбирается та из
половин, на концах которой функция
имеет значения разных знаков.
17. Написать функцию
вычисления чисел Фибоначчи:
;
.
18. Среди n чисел найти наибольшее и наименьшее простые числа.
19. Для заданного числа n построить треугольник Паскаля.
20. Написать функцию, возвращающую текст приветствия в соответствии с приведенной ниже схемой
<?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. Файлы и строки
В следующих заданиях использовать файлы, строки и объекты.
1. Текст записан одной длинной строкой. Признаком красной строки служит символ $. Переформатировать текст в 60-символьные строки, формируя абзацы.
2. Текст, сформированный построчно, выровнять по правому краю так, чтобы каждая строка заканчивалась знаком препинания или одним пробелом. Выравнивание осуществить, вставляя дополнительные пробелы между словами (равномерно по всей строке).
3. Данный текст программы на каком-либо алгоритмическом языке и словарь зарезервированных слов этого языка (в английской транскрипции). Преобразовать текст, записав все зарезервированные слова прописными буквами, а остальные конструкции (имена и так далее) – строчными. Русские буквы (имена, литералы) не заменять.
4. Программа, записанная 80-байтовыми строками, в последних 8 байтах содержит номер строки. Строки упорядочены по номерам, но не обязательно с шагом 1. Поступает изменение к программе в таком виде. Вставить новые строки взамен имеющихся старых или между ними.
5. Текст записан 60-символьными строками, содержит следующие знаки корректуры: $ – сделать красную строку; # удалить следующее слово; @ – удалить следующую фразу. Произвести указанную корректировку, переформатируя строки в пределах абзаца.
6. Часто встречающаяся ошибка начинающих наборщиков – дважды записанное слово. Обнаружить и исправить такие ошибки в тексте, записанном 80-символьными строками; переформатировать строки в пределах абзаца.
7. Стихотворный текст (в строке не более 80 символов) имеет четырехстрочную строфу. Записать его «лесенкой» (по одному слову в строке), вставляя пустую строку после каждого четверостишья.
8. Поздравления. По заданному списку фамилий напечатать каждому упомянутому в списке поздравление к определенному празднику. Чтобы избежать шаблона, перечень желаемых благ выбирать как случайное подмножество из заготовленного списка (например, здоровья, счастья, продвижения по службе, долголетия и т. д.). Можно сделать переменными и название праздника – для универсальности программы.
9. Имеется список членов коллектива с указанием принадлежности каждого к различным общественным организациям (профком, ученый совет, общество книголюбов, федерация пентикса и т. д.). Напечатать приглашение всем членам на очередное заседание указанной организации. Задается только вид организации, место и время сбора.
10. Заданный список русских фамилий (вместе с именами и отчествами) упорядочить по алфавиту. Проверить (и исправить, если нужно) написание собственных имен с прописных букв.
11. В заданном тексте подсчитать частоту использования каждого буквосочетания, слова и словосочетания из заданного списка.
12. В заданном тексте найти самое длинное слово и самую длинную фразу.
13. Обнаружено, что в тексте пропущены некоторые слова и словосочетания. Эти слова и словосочетания представлены отдельным списком в том порядке, в каком должны быть вставлены. Места вставки отмечены в тексте символом $. Откорректировать текст.
14. Текст не содержит собственных имен и сокращений, набран с использованием прописных и строчных русских букв. Проверить то, что все фразы (и только они) начинаются с прописной буквы; при необходимости откорректировать текст.
15. Текст, не содержащий собственных имен и сокращений, набран полностью прописными русскими буквами. Заменить все прописные буквы, кроме букв, стоящих после точки, строчными буквами.
16. Имеется большой словарь русских слов. Найти в нем слова-палиндромы («перевертыши»), одинаково читающиеся как слева направо, так и справа налево, например, АННА, ШАЛАШ и так далее.
В словаре встречаются не только слова-палиндромы, но и фразы-палиндромы, например: «А роза упала на лапу Азора». Найти и их.
17. В имеющемся словаре найти слова, которые могут быть полностью составлены из других слов с помощью конкатенации, например: «БАЛКОН» = «БАЛ» + «КОН»; «БАРСУК» = «БАР» + «СУК».
18. В имеющемся словаре найти группы слов, записанных одними и теми же буквами и отличающиеся только их порядком, то есть перестановкой, например, (КОМАР, КОРМА).
19. В имеющемся словаре найти пары слов (анаграммы), при прочтении каждого из которых в обратном направлении образуется другое слово пары, например, (ПОЛК, КЛОП); (БАР, РАБ).
20. IP-адрес посетителя страницы находится как элемент суперглобального массива S – Server[΄Remoute_ADDR΄]. Составить список посетителей за текущий день (неделю, месяц).
21. Если посетители приходят из одной организации proxy-server, то IP-адрес у них будет одинаковый. В некоторых случаях можно получить адреса машин в подсети из среды окружения HTPP_X_FORWARDED_FOR с помощью функции getenu (HTTP_X_FORWARDED_FOR); составить список посетителей на текущий день (неделю, месяц).
22. Запрет посещений с определенных IP-адресов. В массиве хранятся IP-адреса, выход с которых на наш сайт нежелателен. Сравнить IP-адрес посетителя с адресами из списка и не пускать нежелательного посетителя.
23. Составить список серверов ($_SERVER[΄SERVER_NAME΄]) и список страниц ($_SERVER[΄PHP_SELF΄]), которые мы посетили.
24. Составить список страниц, с которых приходят к нам посетители ($_SERVER[΄HTTP_REFERER΄]).
25. Составить список браузеров, операционных систем, поисковых роботов, которые посещают нашу страницу: ($_SERVER[΄HTTP_USER_AGENT΄]), таким же образом определяются менеджеры закачки типа ΄DownLoadMaster΄, ΄FlashGet΄ и другие.
26. Выяснить языковые предпочтения посетителя, который браузер отправляет серверу в HTTP-заголовке и помещает в массив $_SERVER[΄HTTP_ACCEPT_LANGUAGE΄].
27. Синонимайзер (заменить синонимами данный текст, вводимый из файла).
Задание 4. Работа с базами данных
Создать распределенную информационную систему. Из пользователей системы обязательно наличие Администратора и Зарегистрированного Пользователя.
В каждом из заданий необходимо выполнить следующие действия:
Организацию соединения (пула соединений) с базой данных вынести в отдельный класс, метод которого возвращает соединение;
Спроектировать БД. Привести таблицы к одной из нормированных форм. Создать БД.
Создать класс для выполнения запросов на извлечение информации из БД с использованием компилированных запросов;
Создать класс на добавление информации;
Создать документ (XHTML, JSP и т.д.) с полями для формирования запроса;
Результаты выполнения запроса передать клиенту.
Файловая система. В БД хранится информация о дереве каталогов файловой системы – каталоги, подкаталоги, файлы.
Для каталогов необходимо хранить:
родительский каталог;
название.
Для файлов необходимо хранить:
родительский каталог;
название;
место, занимаемое на диске.
Определить полный путь заданного файла (каталога).
Подсчитать количество файлов в заданном каталоге, включая вложенные файлы и каталоги.
Подсчитать место, занимаемое на диске содержимым заданного каталога.
Найти в базе файлы по заданной маске с выдачей полного пути.
Переместить файлы и подкаталоги из одного каталога в другой.
Удалить файлы и каталоги заданного каталога.
Видеотека. В БД хранится информация о домашней видеотеке – фильмы, актеры, режиссеры.
Для фильмов необходимо хранить:
название;
актеров;
дата выхода;
страну, в которой выпущен фильм.
Для актеров и режиссеров необходимо хранить:
ФИО;
дата рождения.
Найти все фильмы, вышедшие на экран в текущем и прошлом году.
Вывести информацию об актерах, снимавшихся в заданном фильме.
Вывести информацию об актерах, снимавшихся как минимум в 2-х фильмах.
Вывести информацию об актерах, которые были режиссерами хотя бы одного из фильмов.
Удалить все фильмы, дата выхода которых была более 2-х лет назад.
Расписание занятий. В БД хранится информация о преподавателях и проводимых ими занятиях.
Для предметов необходимо хранить:
название;
время проведения (день недели);
аудитории, в которых проводятся занятия.
Для преподавателей необходимо хранить:
ФИО;
-предметы, которые он ведет;
количество пар в неделю по каждому предмету;
количество студентов занимающихся на каждой паре.
Вывести информацию о преподавателях, работающих в заданный день недели в заданной аудитории.
Вывести информацию о преподавателях, которые не ведут занятия в заданный день недели.
Вывести дни недели, в которых проводится наименьшее количество занятий.
Вывести дни недели, в которых занято наименьшее количество аудиторий.
Перенести первые занятия заданных дней недели на последнее место.
Письма. В БД хранится информация о письмах и отправляющих их людях.
Для людей необходимо хранить:
- ФИО;
- дата рождения.
Для писем необходимо хранить:
отправителя;
получателя;
тема письма;
текст письма;
дата отправки.
Найти пользователя, длина писем которого наименьшая.
Вывести информацию о пользователях, а также количестве полученных и отправленных ими письмах.
Вывести информацию о пользователях, которые получили хотя бы одно сообщение с заданной темой.
Вывести информацию о пользователях, которые не получали сообщение с заданной темой.
Направить письмо заданного человека с заданной темой всем людям.
Сувениры. В БД хранится информация о сувенирах и их производителях.
Для сувениров необходимо хранить:
название;
производителя;
дату выпуска;
цену.
Для производителей необходимо хранить:
название;
страну.
Вывести информацию о сувенирах заданного производителя.
Вывести информацию о сувенирах, произведенных в заданной стране.
Вывести информацию о производителях, чьи цены на сувениры меньше 1000.
Вывести информацию о производителях заданного сувенира, произведенных в прошлом году.
Удалить заданного производителя и его сувениры.
Заказ. В БД хранится информация о заказах магазина и товарах в них.
Для заказа необходимо хранить:
номер заказа;
товары в заказе;
дату поступления.
Для товаров в заказе необходимо хранить:
товар;
количество.
Для товара необходимо хранить:
название;
описание;
цену.
Вывести полную информацию о заданном заказе.
Вывести номера заказов, сумма которых не превосходит 100 и количество различных товаров равно 1.
Вывести номера заказов, содержащие товар с заданным заказом.
Вывести номера заказов, не содержащие товар с заданным названием и поступившие в течение текущего дня.
Сформировать новый заказ, состоящий из товаров, заказанных в текущий день.
Удалить все заказы, в которых присутствует заданное количество заданного товара.
Продукция. В БД хранится информация о продукции компании.
Для продукции необходимо хранить:
название;
группу продукции (телефоны, телевизоры и др.);
описание;
дату выпуска;
значения параметров.
Для групп продукции необходимо хранить:
название;
перечень групп параметров (размеры и др.).
Для групп параметров необходимо хранить:
название;
перечень параметров.
Для параметров необходимо хранить:
название;
единицу измерения.
Вывести перечень параметров для заданной группы продукции.
Вывести перечень продукции, не содержащий заданного параметра.
Вывести информацию о продукции для заданной группы.
Вывести информацию о продукции и всех ее параметрах со значениями.
Удалить из базы продукцию, содержащую заданные параметры.
Переместить группу параметров из одной группы товаров в другую.
Погода. В БД хранится информация о погоде в различных регионах.
Для погоды необходимо хранить:
регион;
дату;
температуру;
осадки.
Для регионов необходимо хранить:
название;
площадь;
тип жителей.
Для типов жителей необходимо хранить:
название;
язык общения.
Вывести сведения о погоде в заданном регионе.
Вывести даты, когда в заданном регионе шел снег, и температура была ниже -10.
Вывести информацию о погоде за прошедшую неделю в регионах, жители которых общаются на заданном языке.
Вывести среднюю температуру за прошедшую неделю в регионах с площадью более 1000.
Магазин часов. В БД хранится информация о часах магазина.
Для часов необходимо хранить:
марку;
тип (кварцевые, механические);
цену;
количество;
производителя.
Для производителей необходимо хранить:
название;
страну.
Вывести марки механических часов.
Вывести информацию о механических часах, цена на которые не превосходит 1000.
Вывести марки часов, изготовленных в заданной стране.
Вывести производителей, общая сумма часов которых в магазине не превышает 100.
Города. В БД хранится информация о городах и их жителях.
Для городов необходимо хранить:
название;
год создания;
площадь;
количество населения для каждого типа жителей.
Для типов жителей необходимо хранить:
город проживания;
название;
язык общения.
Вывести информацию обо всех жителях заданного города, разговаривающих на заданном языке.
Вывести информацию обо всех городах, в которых проживают жидели выбранного типа.
Вывести информацию о городе с максимальным количеством населения и всех типах жителей в нем проживающих.
Вывести информацию самом древнем типе жителей.
Планеты. В БД хранится информация о планетах, их спутниках и галактиках.
Для планет необходимо хранить:
название;
радиус;
температура ядра;
наличие атмосферы;
наличие жизни;
спутники.
Для спутников необходимо хранить:
название;
радиус;
расстояние до планеты.
Для галактик необходимо хранить:
название;
планеты.
Вывести информацию обо всех планетах, на которых присутствует жизнь, и их спутниках в заданной галактике.
Вывести информацию о планетах и их спутниках, имеющих наименьший радиус и наибольшее количество спутников.
Вывести информацию о планете, галактике в которой она находится, и ее спутниках, имеющей максимальное количество спутников, но с наименьшим общим объемом этих спутников.
Найти галактику, сумма ядерных температур планет которой наибольшая.
Словарь. В БД хранится англо-русский словарь, в котором для одного английского слова может быть указано несколько его значений и наоборот. Со стороны клиента вводятся последовательно английские (русские) слова. Для каждого из них вывести на консоль все русские (английские) значения слова.
Словари. В двух различных базах данных хранятся два словаря: русско-белорусский и белорусско-русский. Клиент вводит слово и выбирает язык. Вывести перевод этого слова.
Стихотворения. В БД хранятся несколько стихотворений с указанием автора и года создания. Для хранения стихотворений использовать объекты типа Blob. Клиент выбирает автора и критерий поиска.
в каком из стихотворений больше всего восклицательных предложений?
в каком из стихотворений меньше всего повествовательных предложений?
есть ли среди стихотворений сонеты и сколько их?
Задание 5. Создание WEB-объектов
Задание состоит в выделении и создании основных объектов web страницы:
Admin, Новости, Форумы, Голосование, Счетчики, Информация о посетителе, Анкета, Гостевые книги, Форумы, Баннеры, Ссылки и каталоги ссылок, Чаты и общение, Электронная почта, Открытки, Статистика, Защита, Игры, Мультимедия и музыка, Тесты и викторины, Доски объявлений, Знакомства, обратная связь, галерея, календарь, рассылка/авторассылка и т.д.
Для используемых форм предусмотреть обязательные для заполнения поля формы. Выполнить проверку числовых или строковых полей на клиенте и на сервере. Для проверки данных использовать JavaScript или PHP.
Для хранения информации предусмотреть использование a) файл b)БД MySql.
Список заданий
1. Загрузка файла на сервер. Просмотр каталога из клиентской формы. Выбор файла и загрузка на сервер
2. Система отправки писем Send Mail. Отправка e-mail. E-mail с вложенными файлами. Интерфейс:
- Имя.
- e-mail.
- Отправить.
- Обратная связь или «контакты».
3. Рекомендация другу. На указанный e-mail оправляется письмо со ссылкой и рекомендациями, подписанные вами.
4. Система рассылки SMS - сообщений. Поддержка мобильной связи.
5. Система рассылки ICQ - сообщений.
6. Получение информации о клиенте и сервере.
7. Регистрация на сайте. Заполнить регистрационную форму: Фамилия, Имя, Город, E-Mail, login.
Система должна сгенерировать уникальный password. После регистрации отослать password по E-Mail.
8. Авторизация посетителя на сайте (логин, пароль, смена пароля и т.д.).
9. Счетчик посещений Counter – текстовый и графический.
10. HTTP Аутентификация и приветствие зарегистрированного клиента.
Интерфейс: Не видели Вас две недели Сэр. Рады видеть Вас снова на нашем сайте.
11. Удаленный web-counter. Необходимо реализовать службу наподобие RAMBLER:TOP100. Интерфейс: пользователь регистрируется и получает идентификатор. Таким образом он связывает свою страницу с сервером- носителем web-couter-а. После этого служба должна вести учет посетителей страницы пользователя.
Необходимо осуществить администраторские функции по включению и исключению произвольного пользователя администратором.
12. Откуда заходят посетители или поисковые машины. Адрес, IP- адрес, государство.
13. Подсчет on-line посетителей на сайте.
14. Администрируемая Гостевая книга.
- Имя:
- e-mail:
- Сайт:
- Город:
- Сообщение:
- Отправить
Интерфейс: пользователь заходит на страницу гостевой книги, на которой он сможет ввести сообщение, а также просмотреть сообщения оставленные другими пользователями. Создать две кнопки “Ввести” и “Просмотреть”.
Должны быть выполнены такие администраторские функции как включение и исключение сообщения в гостевой книге, запрет и управление запретом на включение сообщения содержащее определяемые администатором выражения, запрет и управление запретом на включение сообщения с заданных администатором хостов.
Помимо указанных пунктов можно предусмотреть:
1. Ответ администратора
2. Шаблон вывода.
3. Фильтр слов.
4. Смайлы
15. Голосование.
Интерфейс:
Как жизнь?
.Отлично
.Хорошо
.Средне
.Плохо
.Хуже плохого
Проголосовать
Для реализации голосования продумать детали:
1) Структура базы или файлов.
2) Логику скрипта (вывод результатов, само голосование, администрирование, архив).
3) Интерфейс пользователя.
4) Анти-флуд (для защиты от накрутки).
5) Администрирование - создается как отдельный скрипт, который защищается паролем и содержит формы управления голосованием. Голосование делается на определенный срок, потом оно неактивно. Оно может принудительно закрываться админом.
16. Система оценки материалов, расположенных на сайте.
17. Тесты и викторины.
18. FTP – клиент на PHP. FTP. Список файлов каталога. Загрузка файла с FTP-сервера. Загрузка файла на FTP-сервер.
19. Система отслеживания адресов по которым скачиваются копии текста из данного сайта.
20. Файловый менеджер
– удалять файлы и папки с сайта
– копировать
– переименовать
– создавать новые папки
– загрузка файлов на сайт
21. Электронная почта и список рассылки.
Список рассылки представляет собой систему регистрации удаленных пользователей с целью получения этими пользователями электронных писем с информацией. Интерфейс: произвольный пользователь заходит на страницу списка рассылки, регистрирует там свой E-MAIL, администратор заходит на страницу администрирования, там он набирает письмо, которое затем отправляется зарегистрированным пользователям. Необходимо также реализовать простейшие администраторские функции: исключение пользователя из списка рассылки, включение в список рассылки (подписка и отписка), сохранение отправляемого сообщения(с возможным архивированием), операции связанные с авторизацией (смена пароля и т.д.).
22. Доска объявлений.
23. Знакомства. Служба знакомств.
24. Чаты и общения.
25. Forum & FAQ.
Струтура базы для форума.
Таблица пользователи:
|ID_user|User_pass|User_Name
Таблица форумов:
|ID_forum|Forum_name
Таблица тем
|ID_theme|ID_foruma|ID_Autor|theme_name|theme_text
Посты:
|ID_post|Post_data|Post_autor|Post_text|
26. Навигация на PHP: Различные меню, карта сайта.
27. Cookie. Установка cookie. Чтение cookie. Срок действия cookie. Удаление cookie.
28. Сеансы. Сохранение данных сеансов. Создание счетчика посещений.
Сеансы без cookie. Удаление данных сеансов.
29. Система аутентификации пользователей с помощью сеансов и cookie.
30. Перевод с русского на транслит и обратно «text на translite».
31. Количество кликов по ссылкам на другие сайты.
32. Калькулятор.
33. Фотогалерея.
34. Календари и органайзеры.
35. Словарь – переводчик.
36. Система поиска для web-сервера.
В силу того что поисковые системы общего назначения(такие как Altavista) не позволяют выделить ресурсы отдельного сервера и производят модификацию своих баз данных медленно, возникает необходимость создать свою службу поиска. Поиск производится только для документов хранящихся на сервере-носителе службы. Должен поддерживаться поиск по сложным выражениям, включающим логические операторы и *.
37. Рубрикатор: Система поиска по первой букве (A,B,C…).
38. Использование региональных настроек.
39. Элементы управления и расширенные элементы управления.
40. Баннеры.
41. Быстрый переход на избранные сайты, спроектированный в виде выпадающего меню.
42. Электронные платежные системы
43. Интернет – радио и телевидение
44. Поисковые системы
45. FTP- серверы
46. Служба IRC
47. Написать сервис-редактор изображений. Возможности: конвертирование в различные форматы, изменять размер изображения и сохранять его, реализовать различные фильтры и т. д.
48. Написать скрипт чата. Особенности:
Страница входа
Страница с личными настройками
Общие комнаты
Комнаты с приватными сообщениями
Возможность добавить картинку-аватар.
49. Скрипт проверки наличия новых личных сообщений на каком-либо популярном форуме (сайте). Особенности:
Получение html-страницы при помощи CURL (вход в авторизированный раздел отправкой post-запроса на страницу логина)
Проверка наличия новых сообщений на странице (NegExps)
Отправка уведомлений на почту
50. Создать серверную спамилку (спамит по форумам PHPbb и гостевым книгам).
51. Создать синонимайзер (заменить синонимами данный текст).
52. Создать сервис по определению Tug и PageRank сайта.
53. Создать сервис по определению доменов, которые заканчиваются или брошенные. (Работа с сервисом Whois) зона .com; .info.
54. Создать Http-туннель. Создание цепи анонимных http, socks proxy.
55. Нахождение мультов (лиц, зарегистрировавшихся с одного IP несколько раз) и удаление несколько последних, оставляя первого.
56. Использование cookie & session: Пользователю, посетившему раздел музыка, предлагается банер с рекламой магазина музыкальных инструментов.
50. Написать игру типа «Кто хочет стать миллионером?»
57. Написать игру «Пятнашки».
58. Написать игру «Крестики-Нолики».
59. Игра «Морской бой» против компьютера.
60. Написать парсер (Вырезание статей со всех сайтов).
Задание 6. Создание Web – страниц.
Задание состоит в создании Web – страниц на основе разработанных в предыдущем разделе объектов web страницы:
Список заданий
1. Простейший Интернет-магазин + база данных+Ajax
– просмотр ассортимента товаров – Витрина
– отметить товары
– принять контактные данные заказчика
– передать магазину список заказанных товаров и контактные данные покупателя
2. Создать сайт с подключаемыми с других сайтов информерами: курсы валют, прогноз погоды, гороскопы, спортивные новости, анекдоты, переводчик на иностранный язык+проектирование на UML
3. Coздать многоязыковый сайт с возможностью перевода страницы на английский, немецкий или французский языки. (Информер на translate.ru. или другой)
4. Визитка для ученого или учреждения + гостевая книга+баннер.
5. Учебный сайт+проектирование на UML.
6. Создать новостной сайт с подпиской по технологии RSS, которая позволяет транслировать информацию с других сайтов. Для подписки необходимо установить программу – агрегатор типа News Reader, в которую помещаются ссылки на транслируемые каналы.
7. Математический сайт. Возможность набора и чтения математического текста + ссылк
8. Бизнес – сайт+проектирование на UML.
9. Корпоративный сайт+проектирование на UML.
10. Игровой сайт. Определение реакции и оценка степени усталости. +Flash+MultiMedia
11. Музыка. Каталог+проигрыватель+мультимедия.
12. Системы активного отображения информации:
– чаты, блоги, Wiki
13. Системы управления контентом.
14. Информационный сайт: Поиск телефона по фамилии или по адресу.
15. Библиотека: Просмотр каталога или поиск в каталоге. Заказ книги, если книга свободна. Для электронной книги просмотр или скачивание.
16. Электронный научный журнал. Прием статей от автора. Подписка, рассылка, реклама, скачивание.
17. Web – Конференция. Прием заявок, прием тезисов, рассылка сообщений и приглашений. Конференция on-line.
18. Система контроля в учреждении образования. Web – журнал и Web- дневник.
19. Страница приема заданий.
Содержит таблицу со списком студентов и заданий. Студенты могут только посмотреть текущее состояние дел. Преподаватели, после ввода пароля, могут поставить или убрать галочку, означающую факт сдачи задания. Должна быть предусмотрена возможность сортировки списка студентов по имени или по количеству cданных заданий. Возможно использование Java и Java Script.
20. Клуб по интересам.
21. Web 2.0. Социальные сети.
22. Web 2.0. wiki-проекты.
23. Блоги
24. Web 2.0. Семантические сети.
25. Информационная система отслеживания колебаний котировок акций
26. Интернет аукцион. Создать Интернет-аукцион. Пользователь указывает min цену своего товара и время до конца продажи данного товара. Сделать ботов, которые в случае не достижения min цены будут ее поднимать на 20 секунд до конца продажи данного товара.
28. Создать приложение, позволяющее тестировать качество работы хостеров. Приложение должно посылать запрос на указанный ресурс с заданной периодичностью, проверяя доступен ли сайт в данный момент времени. На основе полученных данных приложение формирует статистику работы.
29. Создать сервис для отправки открыток на e-mail. Предоставить пользователю выбор вида открытки и посылаемого текста поздравления или создания собственного текста и открытки. Предусмотреть список рассылки.
30. Создать сервис, который мог бы рандомно генерировать задание для студента, причем задания должны быть разные и зависили бы от уровня сложности, который вводится пользователем.
31. Создать галерею фотографий с возможностью оценивания (голосования). Очередность отображения фотографий зависит от их рейтинга и изменяется.
32. Автоматический генератор сайтов (по шаблонам).
33. Написать игровой сайт: Игра «Пятнашки», «Кто хочет стать миллионером?», «Крестики-Нолики», «Морской бой» против компьютера или другие.
34. Создать галерею фотографий с возможностью оценивания. Очередность отображения фотографий зависит от рейтинга.
35. Написать сервис-редактор изображений, возможности: конвертирование в различные форматы, изменять размер изображения и сохранять его, реализовать различные фильтры и т. д.
36. Написать скрипт чата. Особенности:
Страница входа
Страница с личными настройками
Общие комнаты
Комнаты с приватными сообщениями
Возможность добавить картинку-аватар.
37. Скрипт проверки наличия новых личных сообщений на каком-либо популярном форуме (сайте). Особенности:
Получение html-страницы при помощи CURL (вход в авторизированный раздел отправкой post-запроса на страницу логина)
Проверка наличия новых сообщений на странице (NegExps)
Отправка уведомлений на почту
38. Написать парсер (Вырезание статей со всех сайтов).
39. Автоматический генератор сайтов (по шаблонам).
40. Использование cookie & session: Пользователю, посетившему хотя бы однажды раздел музыка, предлагается банер с рекламой магазина музыкальных инструментов. Аналогично строительные инструменты и др.
41. Http-туннель. Создание цепи анонимных http, socks proxy.
42. Сайт голосования. Нахождение мультов (лиц, зарегистрировавшихся с одного IP несколько раз) и удаляет несколько последних, оставляет первого.
43. Сервис по определению доменов, которые заканчиваются или брошенные. (Работа с сервисом Whois) зона .com; .info.
44. Спамилка серверная (спамит по форумам PHPbb и гостевым книгам).
45. Разработка приложения для сайта, позволяющего редактировать графическую информацию в сценарии Flash. Приложение должно позволять редактирование фильмов(учебных, коммерческих) в отдельном окне без перезагрузки страниц
46. Создать приложение для рассылки прайз – листов.
47. Добавление обратной связи. Доска объявлений. Автоответчик.
48. Создать приложение, которое запрашивает у Pop сервера наличие почты.
Задание 7. Web-технологии
Список заданий
1. Технологии идентификации. OPENID и смежные проекты.
2. Технологии визуализации данных на Интернет-клиенте и Интернет-сервере.
3. Технологии Web 2.0: сочетание внешних и корпоративных источников.
4. Технология Hibernate (в Java) на основе аннотаций.
5. Применение аспектно-ориентированного программирования для реализации системы защиты Веб-приложений.
6. Применение технологии AJAX при проектировании и разработке динамических Веб-приложений.
7. Применение шаблонов проектирования при разработке информационных систем.
8. Автоматизация процесса создания каркаса Web-приложения с использованием технологии AJAX.
9. UML и проектирование архитектуры Web-приложения.
10. Взаимодействие «Клиент-сервер» технологии эффективной коммуникации с AJAX.
11. Веб-сервисы.
12. Анализ, проектирование и технологии оптимизации кода информационных систем.
13. Средства и методы бизнес-анализа в промышленном производстве Web-приложений.
14. Применение Фреймворка ( ) при разработке Web-систем.
15. Информационные технологии подготовки электронных СМИ.
16. Информационные технологии подготовки деловых презентаций.
17. Электронный PR.
18. RSS.
19. Вопросы защиты данных и безопасное программирование.
20. Защита от спама и флуда.
Задание 8. Сопровождение и оптимизация сайтов.
Список заданий
1. Тестирование производительности Web-приложений.
2. Математические способы оценки качества кода информационных систем.
3. Регистрация сайта.
4. Методы продвижения Web-сайта в поисковых системах.
5. Сопровождение, обновление сайта.
6. Администрируемая служба каталогов.
Интерфейс: произвольный пользователь видит на этой странице службу каталогов наподобие того, как это сделано в YAHOO! Администратор видит этот же каталог, но с администраторскими командами: включение и исключение поддеревьев каталога, включение и исключение пунктов в поддереве.
7. Автоматическая регистрация страниц на поисковых системах.
После создания WWW страницы ее требуется зарегистрировать на различных поисковых серверах, чтобы другие пользователи сети могли ее найти. Однако количество поисковых серверов велико - процесс регистрации на них занимает много времени. Требуется написать программу, которая осуществляет такую регистрацию автоматически. В качестве вспомогательных средств возможно использования программ типа wget или lynx, чтобы не писать код для работы с HTTP протоколом.
8. Рейтинг разделов сайта.
9. Рейтинг сайтов
10. Разработка Web системы автоматизации сопровождения задач
11.Спамилка серверная (спамит по форумам PHPbb и гостевым книгам).
12. Сервис по определению Tug и PageRank сайта.
13. Сервис по определению доменов, которые заканчиваются или брошенные. (Работа с сервисом Whois) зона .com; .info.
14. Http-туннель. Создание цепи анонимных http, socks proxy.
15. Нахождение мультов (лиц, зарегистрировавшихся с одного IP несколько раз) и удаляет несколько последних, оставляет первого.
Задание 9. Реализация основных алгоритмов
Список заданий
Сортировка
1.1 Реализовать алгоритмы сортировки вставками и сортировки пузырьком. Для каждого алгоритма предусмотреть вывод количества выполненных операций сравнения и присваивания. Сгенерировать случайным образом массив и проверить на нем, какой из алгоритмов выполняет большее число операций.
1.2 Даны два отсортированных массива. Сформировать третий отсортированный массив, состоящий из элементов первых двух массивов. Алгоритмы сортировки не использовать.
1.3 Реализовать алгоритм быстрой сортировки.
Поиск
2.1 Реализовать алгоритм бинарного поиска в отсортированном массиве. Предусмотреть вывод количества выполненных операций сравнения.
2.2 Реализовать алгоритм интерполяционного поиска в отсортированном массиве. Предусмотреть вывод количества выполненных операций сравнения. На случайно сгенерированном примере сравнить, какой из алгоритмов поиска (бинарный или интерполяционный) выполняет большее число операций.
Основные структуры данных
Реализовать стек с помощью массива.
Создать класс для работы со стеком. Предусмотреть класс StackElement, в котором хранится содержимое элемента стека и указатель на другой элемент стека, а также класс Stack, в котором хранится вершина стека и в качестве методов предусмотрены основные операции со стеком.
По тому же принципу, что и в предыдущей задаче, создать классы для работы с очередью и дважды связным списком.
Прочитать текст из входного файла и записать его в выходной файл в обратном порядке. Использовать стек.
Создать класс для работы с графом. Предусмотреть операции проверки смежности двух вершин, добавления и удаления ребер, добавления и удаления вершин.
Посчитать в графе число треугольников.
Найти в графе какую-нибудь максимальную по включению клику.
Основные алгоритмы
Интернет-сайт состоит из n html-страниц, известно, что с некоторых страниц можно попасть на другие с помощью гиперссылок. Структура гиперссылок задана с помощью nn-матрицы A, где A[i][j] = 1, если на i-й странице есть гиперссылка, ведущая на j-ю страницу, и A[i][j]=0 в противном случае. Главная страница сайта имеет номер 1. Необходимо проверить, нет ли на сайте изолированных частей, т.е. можно ли с главной страницы попасть на любую другую страницу, переходя по гиперссылкам.
Вы-project-manager IT-компании, ваша команда ведет разработку интернет-сайта и до дедлайна осталось всего 2 дня. Оказалось, что всю еще не доделанную работу можно разбить на n независимых друг от друга по времени этапов, каждый из которых требует одного дня работы. При этом некоторые из этапов нельзя осуществить одновременно (например, если соответствующую работу должен выполнить один и тот же программист). Сможете ли вы завершить проект в срок?
Вы – программист новой компьютерной игры “Монстры 4”, и сейчас вы ведете разработку 25 уровня игры. Этот уровень представляет собой систему из n комнат, соединенных коридорами. Известна длина в метрах каждого коридора и номера комат, которые он соединяет. По сценарию игры в коридорах обитает зомби, передвигающийся со скоростью k метров в секунду. В начале уровня герой игры находится в одной из комнат, где по сценарию он в течение d минут выслушивает рассказ свидетеля, выжившего после нападения монстров. Все это время зомби передвигается по коридорам по направлению к герою игры и сразу же после окончания разговора он должен совершить нападение на героя. Ваша задача – определить, в какой из комнат в начале уровня нужно разместить героя и в какой-зомби. Если таких комнат нет, то нужно выдать ответ, что при заданных условиях решения задачи не существует. Передвижения зомби запрограммированы таким образом, что он движется к цели по кратчайшему пути. Кроме того, размеры комнат малы по сравнению с длинами коридоров, так что ими можно пренебречь.
Компьютерная сеть может быть представлена в виде графа, вершины которого соответствуют компьютерам, а ребра – кабелям, соединяющим компьютеры. Сеть называется надежной, если в случае повреждения любого из кабелей по ней все равно можно было бы передавать информацию с любого компьютера на любой. Проверить, является ли заданная компьютерная сеть надежной.
Популярные веб-приложения
С использованием PHP разработано множество приложений, которые широко используются на различных сайтах, форумах и блогах.
Drupal, Typo3, PHP-Nuke, Mambo, Joomla — системы управления содержимым (CMS);
Magento, osCommerce — системы для Интернет-коммерции;
4images — галереи изображений;
MediaWiki, DokuWiki — вики-движки;
phpBB, SMF, vBulletin, Invision Power Board — форумные движки;
phpMyAdmin, phpPgAdmin — утилиты администрирования СУБД;
Wordpress — движок для построения блог-сайтов;
eyeOS — удалённая операционная система, основанная на принципе Desktop Operating System.
Фреймворки
Для быстрой разработки приложений на PHP было создано множество фреймворков, наиболее популярными из которых являются Zend Framework, CakePHP, Symfony, CodeIgniter, Kohana и Yii.
Интегрированные среды разработки для PHP
Название Лицензия Сайт
JetBrains PhpStor Trial http://www.jetbrains.com/phpstorm/
PHP Development Tools Eclipse Public License http://www.eclipse.org/pdt/
Zend Studio Shareware http://www.zend.com/products/zend_studio/
Aptana Studio GNU GPL http://www.aptana.org
phpDesigner Shareware http://www.mpsoftware.eu/
PHP Expert Editor Shareware http://www.phpexperteditor.com/
NetBeans IDE CDDL http://www.netbeans.org/
Delphi for PHP Trial http://www.codegear.com/products/delphi/php
NuSphere Trial http://www.nusphere.com/
Литература
Джамса К, Лалани С., Уикли С. Программирование в Web для профессионалов. Мн.: ООО Попури, 1997.
Шафран Э. Создание Web-страниц: самоучитель. СПб.: Питер 2000.
Кингсли-Хью Э., Кингсли-Хью К. JavaScript 1.5: учебный курс. СПб.: Питер, 2001.
Кристиансен Т., Торнкингтон Н. Perl: библиотека программиста. СПб.: Питер, 2000.
(Sterling Hughes) - "Настольная книга программиста PHP" (The PHP Developer's Cookbook), была издана в октябре 2000 года издательством "Sams publishing".
Список литературных источников
http://www.php.net/manual/ - HTML-версия в Интернете
http://www.php.net/distributions/manual.zip - руководство запакованное для выкачки и локального просмотра
http://www.php.net/distributions/manual_a-l.pdf , http://www.php.net/distributions/manual_m-x.pdf - PDF-версии руководства (разбит на 2 части) http://www.php.net/docs.php3 - остальные варианты руководства
http://www.mysql.com/doc.html - документация по MySQL, а также инструкции на английском языке.
http://www.webreview.com много материалов на англйском
http://www.devshed.com.