
- •Пособие по курсу «Веб – программирование»
- •Для студентов специальности
- •«Математика и информационные технологии»
- •Минск, бгу,
- •Содержание
- •Глава 1. Компьютерные сети и протоколы
- •Глава 2. Проектирование и разработка сайтов……………………….62
- •Глава 3. Краткий обзор основных технологий разработки Веб приложений…………..………………………………………………..……......90
- •Глава 4. Информационный обмен, html и css.…..……………….132
- •Глава 5. Язык JavaScript………………………………………………..202
- •Глава 6. Язык серверных скриптов php…………...…………286
- •Глава 7. Лабораторные работы……………………..………………….400
- •Введение Коротко об истории Интернет
- •Как работает Интернет?
- •Система адресации
- •Способы подключения к сети
- •Сервисы Интернет
- •Электронная почта
- •Передача файлов по ftp
- •Всемирная паутина www
- •Задания для подготовки рефератов
- •Глава 1. Компьютерные сети и протоколы
- •Локальные сети
- •Распределенные и глобальные сети
- •Сеть vpn
- •Адресация в локальных сетях
- •Адресация в глобальных сетях и в Интернет
- •Адресация в iPv6
- •Доменные имена
- •Url адреса
- •Понятие и краткое описание протоколов
- •Соотношение между tcp/ip и osi/iso
- •Межсетевой протокол iPv4
- •Формат пакета iPv6
- •Формат заголовка пакета iPv6
- •Заголовки расширения iPv6
- •Маршрутный заголовок
- •Транспортный протокол tcp
- •Протокол дейтаграмм udp
- •Протоколы arp и rarp
- •Протоколы сетевого уровня
- •Протоколы электронной почты
- •Протоколы smtp и pop3
- •Протокол imap4
- •Протокол ftp
- •Протокол передачи гипертекстов
- •Клиентский запрос http
- •Ответ сервера
- •Развитие прикладных протоколов: rpc, rest, soap
- •Безопасность в сети
- •Протокол ssl
- •Шифрование данных
- •Установление подлинности участников
- •Реализация ssl
- •Как избежать блокирования сайтов
- •Проблемы с кодировкой и Unicode
- •Задания для подготовки рефератов
- •Адресация в iPv6.
- •Глава 2. Проектирование и разработка сайтов
- •2.1. Виды сайтов
- •2.2. Этапы проектирования и разработки сайта
- •2.3. Модели проектирования и управление проектами
- •2.3.1 Модель водопада для управления проектами
- •2.3.2 Итерационная (спиральная) модель
- •2.3.3 Технология Microsoft Solutions Framework (msf)
- •2.3.4 Другие технологии управления проектами
- •2.4. Программные средства управления проектами
- •2.5.1. Стили сайтов
- •2.6. Логическое проектирование дизайна сайта
- •2.7. Главная страница сайта
- •2.8. Внутренние страницы сайта
- •2.9. Оценки качества Веб-сайтов
- •2.9.1. Оценки качества для e-commerce
- •2.9.2. Ключевые индикаторы для e-commerce
- •2.9.3. Определение качества и рейтинга сайтов учебных заведений
- •2.9.4. Оценка качества и стоимости сайта
- •Глава 3. Краткий обзор основных технологий разработки Веб-приложений
- •3.1. Язык разметки гипертекста xml
- •3.1.1. Синтаксис xml
- •Объявление xml. Первая строка xml-документа называется объявление xml.
- •Конструкции языка xml. Повторим еще раз содержимое xml-документа: набор элементов, секций cdata, директив анализатора, комментариев, спецсимволов, текстовых данных.
- •3.1.2. Правильно построенные и действительные документы xml
- •Отображение xml-документа. Наиболее распространены три способа преобразования xml-документа в отображаемый для пользователя вид:
- •3.3. Язык ActionScript
- •3.3.1. Видео-, аудиопроигрыватели
- •3.5. Технология «клиент-сервер»
- •3.6. Программирование для серверов
- •3.7. Базы данных и язык sql
- •Нормализация модели данных
- •3.8. Язык sql
- •Команды управления транзакциями
- •Извлечение данных, команда select
- •Секция where. Директива where содержит условия отбора (предикат). Синтаксис where выглядит следующим образом:
- •Групповые функции. Если нас интересуют не строки таблицы, а некоторые итоги, мы можем использовать в процессе выборки колонок таблиц групповые функции (табл. 3.5.).
- •Команда insert. Добавление новых записей в таблицу осуществляется посредством команды insert. Она имеет следующий синтаксис:
- •Глава 4. Информационной обмен, нтмl и css
- •4.1. Язык разметки гипертекста html
- •4.2. Ссылки
- •4.3. Списки
- •4.4. Формы html
- •4.4.1. Новые элементы форм html5
- •4.4.2. Валидация формы
- •4.5. Метатеги
- •4.6. Новые возможности html5
- •Поддержка аудио
- •Поддержка видео
- •4.7. Каскадные таблицы стилей css
- •4.7.1. Способы включения каскадных таблиц стилей
- •Заголовок 1 Заголовок 2 Заголовок 3
- •4.7.2. Стили текста
- •4.7.3. Цвет и фон
- •Свойства таблиц
- •4.7.4. Псевдоклассы
- •4.7.5. Псевдоэлементы
- •4.7.6. Форматирование псевдоклассов и псевдоэлементов
- •Различные свойства
- •4.7.7. Представление документа в виде блоков
- •Отступы, поля, позиционирование
- •Границы элементов
- •4.7.8. Новое в css3
- •Глава 5. Язык JavaScript
- •5.1. Включение скриптов JavaScript в html-код
- •5.1.1.Создание простых сценариев
- •5.1.2.Отладка скриптов. Ввод и вывод данных
- •5.2. Описание языка
- •5.2.1. Типы данных
- •Булев тип. Переменные булева типа могут принимать значения: true – истина; false – ложь.
- •Переменные типа Undefined и Null. Тип undefined используется для несуществующих переменных или переменных, значения которых еще не определены. Тип null – пустое значение, например.
- •5.2.2 Операторы и выражения
- •Оператор with присоединяет имя объекта к имени свойства объекта. С помощью оператора with можно обращаться со свойствам объекта в сокращенном виде:
- •Оператор switch позволяет выбрать вариант
- •5.3. Функции
- •5.3.1. Стандартные функции и библиотеки.
- •5.3.2. Функции пользователя
- •5.3.3. Передача параметров по значению и по ссылке
- •5.3.4. Глобальные и локальные переменные
- •5.3.5. Модели событий
- •Ключевое слово this
- •5.4. Объектная модель
- •5.4.1. Пользовательские объекты
- •5.4.2. Объекты и прототипы
- •5.4.3. Исключения: throw/catch/finally
- •5.4.4. Встроенные объекты String, Array, Date, Math Объект String.Экземпляр объекта можно объявить двумя способами:
- •Объект Array
- •Объект Number (Число)
- •Объект Math (Математика)
- •Объект Date (Дата)
- •Объект Function
- •Объект RegExp и регулярные выражения
- •5.5.1. Свойства и методы объекта document
- •5.5.2. Коллекции
- •5.5.3.Свойства элемента innerHtml и outerHtml
- •5.5.4.Навигация по дереву документа
- •5.5.5.Создание новых узлов
- •Удаление и замена узлов в документе
- •5.5.6.Объект window
- •Свойства окна, передаваемые методу open()
- •Методы объекта window
- •5.5.7.Свойства и методы объекта navigator
- •5.5.8.Свойства и методы объекта history
- •5.5.9.Свойства и методы объекта location
- •5.5.11.Каскадные таблицы стилей и объект Style
- •5.6.1 Класс xmlHttpRequest
- •Использование dom
- •Работа с cookie
- •5.8.1.Доступ к элементам dom
- •5.8.2. Манипуляции с dom
- •5.8.3. Использзование css
- •5.8.4. Блочная верстка
- •5.8.5. Обработка событий
- •5.8.6. Работа с ajax
- •5.9. Примеры на JavaScript
- •Глава 6. Язык серверных скриптов php
- •Инструменты для разработки
- •Как php работает
- •6.1. Описание языка
- •Массивы и их инициализация
- •Операции и выражения
- •Битовые операции
- •Операции сравнения
- •Логические операции
- •Строковые операции
- •Операторы управления
- •Функции
- •Рекурсивные функции
- •Область действия и время жизни переменных
- •Изменяемые (динамические) переменные
- •Внешние библиотечные функции
- •Функции для работы с массивами
- •Функции для работы со строками
- •Функции форматных преобразований строк
- •Преобразование строк и файлов к формату html и наоборот
- •Преобразование html в простой текст
- •Установка локальных настроек
- •Регулярные выражения
- •Функции даты и времени
- •Математические функции
- •6.2. Объектно-ориентированное программирование в php Основные понятия объектно-ориентированного программирования
- •Конструкторы и деструкторы
- •Наследование классов и интерфейсов
- •Магические методы
- •Обработка ошибок
- •Ошибки php и журнал error_reporting
- •6.4. Файлы
- •Чтение и запись бинарных файлов
- •Работа с каталогами в рнр
- •6.5. Php и база данных MySql
- •Выборка данных из бд
- •Выборка данных из таблиц бд
- •Работа с MySql занесение и получение данных из базы данных
- •Организации работы с данными
- •6.6. Передача данных от клиента к серверу и обратно по протоколу http
- •Клиентские методы http
- •6.7. Обработка html-форм
- •Передача переменных из формы в скрипт
- •Передача данных на сервер по методам get и post
- •Ввод данных из различных форм
- •6.8. Работа с e-mail
- •6.9. Cookies-наборы
- •6.10. Сессии (Сеансы)
- •Отмена регистрации сеансовых переменных
- •6.11. Сериализация объектов
- •Сериализация объектов в сессиях
- •6.12. Сетевые соединения и сокеты
- •6.13. Вывод графических данных с помощью рнр
- •Получение информации об изображении
- •Функции рисования прямых и кривых линий
- •Заливка изображений
- •Удаление и изменение цветов палитры
- •Создание прозрачности в изображениях
- •Рисование с помощью кистей
- •Использование шрифтов и вывод строк
- •Слияние изображений с помощью gd
- •Лабораторная работа 3 (4ч). Применение каскадных таблиц стилей css
- •Трехколоночный контейнерный макет сайта:
- •Лабораторная работа 4. Применение каскадных таблиц стилей css
- •Лабораторная работа 5 (4 ч). Динамика и JavaScript на веб-странице
- •Ответьте на следующие вопросы:
- •Лабораторная работа 6 (4 ч).
- •Проверка правильности заполнения формы на сайте.
- •Методы объекта window
- •Задание 2. Функции
- •Задание 4. Работа с базами данных Выполните одно из перечисленных ниже упражнений
- •Задание 5. Создание web-объектов Задания:
- •Лабораторная работа 8(4 ч.) Разработка сайтов на основе cms Joomla! и Drupal
- •Drupal: практические примеры
- •Приложения
- •1. Курсовые работы Курсовая работа 1. Создание клиентских приложений
- •Курсовая работа 2. Сайты клиент-сервер
- •2. Каталог товаров
- •Курсовая работа 3. Технологии разработки Веб-приложений. Проекты сайтов
- •2. Быстрая разработка веб-приложений
- •Начало работы с сайтом
- •Создание контента
- •Установка нового модуля
- •Создание шаблона
- •Включение блока отображение популярных статей
- •Удаление
Установка локальных настроек
Локалью называют совокупность таких настроек, как формат даты и времени, язык, кодировка. Для установки локали используется функция SetLocale($category, $locale). Параметр $category может принимать следующие строковые значения: LC_CTYPE – активизирует указанную локаль для функций перевода в верхний/нижний регистры; LC_NUMERIC – активизирует локаль для функций форматирования дробных чисел, задает разделитель целой и дробной части в числах; LC_TIME – задает формат вывода даты и времени; LC_ALL – устанавливает все вышеперечисленные режимы. Параметр $locale задает локаль, по установленному в системе уникальному имени. Если величина $locale равна пустой строке "", то устанавливается та локаль, которая указана в глобальной переменной окружения, если в этом параметре передается 0, то новая локаль не устанавливается, а возвращается имя текущей локали для указанного режима.
Регулярные выражения
Базовым средством для поиска данных по шаблону являются регулярные выражения – последовательность символов, применяемых для поиска искомого текста. Напомним основные сведения о структурах, применяемых для поиска.
Простейшее регулярное выражение совпадает с одним или несколькими символами строки в наклонных скобках, например, /Jav/. Квадратные скобки [ ] означают “любой символ из перечисленных в скобках”, например [123abc], и могут содержать интервалы. Конструкция [a-zA-Z] совпадает с любым символом, входящим в интервалы (a-z и A-Z), конструкция [^a-zA-Z] совпадает с любым символом, не входящим в указанные интервалы. Символ точка означает <любой символ>. Например, выражение р.р совпадает с символом р, за которым следует произвольный символ, после чего опять следует символ р. Служебные символы экранируются обратной косой чертой (\). Если, например, в тексте надо поставить точку, то следует писать \.
Специальные символы представляет собой алфавитный символ с префиксом \ – признаком особой интерпретации следующего символа:
\d – десятичная цифр, \D – любой символ кроме десятичной цифры;
\w – алфавитно-цифровой символ,\W – не алфавитно-цифровой;
\s – пробельный символ, \S – не пробельный символ;
Часто используются символы \n ,\r , \t ,\\. Символ \b совпадает с границами слов: /sa\b/, символ \В не совпадает с границей слова: /sa\B/.
Символы +, * и {...}, обозначающие количество повторений отдельного символа или конструкции, заключенной в квадратные скобки, называются квантификаторами. Рассмотрим несколько примеров.
Если записать регулярное выражение /stud/ как /stud/i, поиск осуществляется без учета регистра. Выражение /^stud/i означает, что stud должно находиться в начале слова (student), а /stud$/ – в конце (restud). Регулярное выражение /^$/i соответствует пустой строке. Шаблон /stu+/ совпадает с последовательностью stu, за которой могут следовать дополнительные символы u. Аналогично шаблон /st{2,4}/ совпадает с символом s, за которым следуют от 2 до 4 экземпляров символа t. Выражение /[\d]+/ используется для поиска цифровой подстроки. Шаблон /<([\w]+)>/ совпадает с конструкциями, заключенными в угловые скобки, например тегами HTML.
Подстроки в регулярных выражениях можно группировать при помощи круглых скобок: /домен – (by|ru|uk|com)/ соответствует строке домен – by или другой. Круглые скобки ( ) означают логическую группу выражений, которая может повторяться (+).
В шаблонах может использоваться оператор | (или), который проверяет совпадение одной из нескольких альтернатив.
В РНР существует пять функций поиска по шаблону с использованием Perl-совместимых регулярных выражений: preg_match( ); preg_match_all( ); preg_replace( ); preg_split( ); preg_grep( ).
preg_match(pattern, $str, [regs]) – ищет в строке $str соответствия с регулярным выражением pattern , и сохраняет их в массиве regs (если указано).
Пример:
<?php //ppr36.php
$sub = "abcdef";
$pattern = '/^def/'; //ищем def в начале строки
preg_match($pattern, $sub, $matches);
print_r($matches);
echo"<br/>";
$pattern = '/def$/';// ищем def в конце строки
preg_match($pattern, $sub, $matches);
print_r($matches);
?>
Вывод:
Array() Array ( [0] => def )
Функция preg_replace( ) может использовать регулярные выражения в параметрах шаблон и замена. Синтаксис функции:
mixed preg_replace (mixed шаблон, mixed замена, mixed строка)
Параметры шаблон и замена могут представлять собой масивы. Функция preg_replace( ) перебирает элементы обоих массивов и выполняет замену по мере их нахождения.
<?php //ppr36.php
$strike = "Mersedes is а good car ever created!";
// Выполнить поиск слова без учета регистра :
if (preg_match("/mers/i", $strike, $match)! = 0)
{
print_r($match);
}
$strike = "регулярное выражение"; // просто строка
$preg = preg_replace("/р.+е/i", "<i>[вырезано]</i>", $strike);
echo "<br/>".$preg;
echo"<br/>";
$string = 'April 15, 2010';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>
Результат:
Array([0]=>Mers) [вырезано] April1,2010
Функция preg_match_all( ) находит все совпадения шаблона в заданной строке. Синтаксис функции :
int preg_match_all (string шаблон, string строка, array совпадения)
Следующий пример показывает, как при помощи функции preg_match_all( ) найти весь текст, заключенный между тегами HTML:
<?php
preg_match_all("/\(? (\d{3})? \)? (?(1) [\-\s] ) \d{3}-\d{4}/x", "Call 555-1212 or 1-800-555-1212", $phones);
print_r ($phones);
echo "<br/>";
$html = "<b>bold text</b><a href = howdy.html>click me</a>";
preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
echo "matched: " . $val[0] . "\n";
echo "part 1: " . $val[1] . "\n";
echo "part 2: " . $val[2] . "\n";
echo "part 3: " . $val[3] . "\n";
echo "part 4: " . $val[4] . "\n\n";
}
echo "<br/>";
$userinfo = "Name: <b>Romanchik Valery</b> <br> Title: <b>PHP Тeacher</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $userinfo, $pat_array);
print_r ($pat_array);
print "<br/>".$pat_array[0][0]." <br> ".$pat_array[0][1]."\n";
?>
Результат:
Array ( [0] => Array ( [0] => 555-1212 [1] => 800-555-1212 ) [1] => Array ( [0] => [1] => 800 ) ) matched: bold text part 1: part 2: b part 3: bold text part 4:
matched: click me part 1: part 2: apart3:click me part4: Array ( [0] => Array ( [0] => Romanchik Valery [1] => PHP Тeacher ) [1] => Array ( [0] => RomanchikValery[1] => PHPТeacher)) RomanchikValery PHP Тeacher
Функция array preg_split (string шаблон, string $strike) разбивает строку $strike в массив посредством регулярного выражения. В следующем примере функция preg_split( ) используется для выборки информации из переменной.
<?php
$inf = "+Romanchik+++VS+++++@gmail.com+++++bsu.by";
$fields = preg_split("/[\+]{1,}/", $inf);
print_r ($fields);
$i = 0;
while ($i < sizeof($fields)){
print $fields[$i]. "<br/>";
echo $i++."<br/>";
}
?>
Результат:
Array([0] => [1] => Romanchik[2] => VS[3] => @gmail.com[4] => bsu.by)
0
Romanchik
1
VS
2
@gmail.com
3
bsu.by
4
Функция array preg_grep (string $pattern, array $mas) перебирает все элементы заданного массива и возвращает в виде массива все элементы, в которых совпадает заданное регулярное выражение. Пример использования функции для поиска в массиве слов, начинающихся на р:
<?php
$foods = array ("pasta", "steak", "fish", "potatoes");
// Поиск элементов, начинающихся с символа "р".
// за которым следует один или несколько символов
$pfoods = preg_grep("/p(\w+)/", $foods);
print_r( $pfoods);
echo "<br/>";
$i = 0;
while ($i < sizeof($foods)) {
print $pfoods[$i]. "<br>";
$i++;}
?>
Результат:
Array([0] => pasta[3] => potatoes)
pasta
Potatoes
Регулярные выражения – мощный инструмент для поиска и организации таких данных, как адреса электронной почты или поиск URL. Но в то же время регулярные выражения работают медленно. Например, для перевода целой строки в заглавные буквы можно написать следующее:
<?
$data = ereg_replace ("[a-z]", "[A-Z]", $data);
print $data;
$data = strtoupper ($data);
?>
Функция strtoupper() с этой задачей справилась бы быстрее. Всегда следует искать более "легкую" замену регулярным выражениям, поскольку скорость выполнения скрипта в таких случаях резко возрастает.