
- •Минск, бгу,
- •Глава 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. Программирование для серверов
- •Язык Java на клиентской и серверной странице
- •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.3. Формы html
- •4.2.2. Новые элементы форм html5
- •4.2.3. Новые возможности html5
- •Поддержка аудио
- •Поддержка видео
- •4.3. Каскадные таблицы стилей css
- •4.3.1. Способы включения каскадных таблиц стилей
- •Заголовок 1 Заголовок 2 Заголовок 3
- •4.4. Цвет и фон
- •Свойства таблиц
- •4.5. Псевдоклассы
- •Псевдоэлементы
- •4.5.1. Форматирование псевдоклассов и псевдоэлементов
- •Различные свойства
- •Отступы, поля, позиционирование
- •Границы элементов
- •Новое в css3
- •Глава 5. Язык JavaScript
- •5.1. Включение скриптов JavaScript в html-код
- •Создание простых сценариев
- •Комментарии.
- •Отладка скриптов. Ввод и вывод данных
- •5.2. Описание языка
- •5.2.1. Типы данных
- •Преобразование типа
- •5.2.2 Операторы и выражения
- •Оператор присваивания
- •Арифметические операторы
- •Операторы сравнения
- •Оператор with
- •Оператор switch
- •5.3. Функции
- •5.3.1. Стандартные функции.
- •Eval() : позволяет выполнить строку, содержащую выражение, как javascript-код. Это полезно когда код формируется в ходе выполнения скрипта. Пример реализации простейшего калькулятора приведен ниже:
- •5.3.2. Функции пользователя
- •5.3.3. Передача параметров по значению и по ссылке
- •5.3.4. Глобальные и локальные переменные
- •5.3.5. Модель событий
- •Ключевое слово this
- •5.3.6. Модель событий JavaScript 1.2 и объект Event.
- •5.4. Объектная модель
- •5.4.1. Пользовательские объекты
- •5.4.2. Прототипы
- •5.4.3. Исключения: throw/catch/finally
- •5.4.4. Встроенные объекты String, Array, Date, Math Объект String. Экземпляр объекта можно объявить двумя способами:
- •Объект Array
- •Объект Date (Дата)
- •Методы объекта Date
- •5.5.1. Коллекции
- •Свойства элемента innerHtml и outerHtml
- •Навигация по дереву документа
- •Создание новых узлов
- •Удаление и замена узлов в документе
- •Объект window
- •Свойства окна, передаваемые методу open()
- •Методы объекта window
- •Свойства и методы объекта navigator
- •Свойства и методы объекта history
- •Свойства и методы объекта location
- •Объект layer
- •Каскадные таблицы стилей и объект style
- •Модель ajax:
- •5.6.1 Класс xmlHttpRequest
- •Использование dom
- •Работа с cookie
- •5.7.2. Манипуляции с dom
- •5.5.3. Блочная верстка
- •5.7.3. Обработка событий
- •5.7.3. Обработка событий
- •5.8. Примеры на JavaScript
- •Глава 6. Язык серверных скриптов php
- •Инструменты для разработки
- •Как php работает
- •Описание языка Типы данных
- •Массивы и инициализация массивов
- •Операции и выражения
- •Операции сравнения
- •Логические операции
- •Строковые операции
- •Операторы управления
- •Функции
- •Рекурсивные функции
- •Область действия и время жизни переменных
- •Изменяемые (динамические) переменные
- •Внешние библиотечные функции
- •Функции для работы с массивами
- •Функции для работы со строками.
- •Функции форматных преобразований строк
- •Преобразование строк и файлов к формату html и наоборот
- •Преобразование html в простой текст
- •Установка локальных настроек
- •Регулярные выражения
- •Функции даты и времени
- •Математические функции
- •Объектно-ориентированное программирование в php Основные понятия ооп
- •Классы и Объекты
- •Конструкторы и деструкторы
- •Наследование классов и интерфейсов
- •Магические методы
- •Обработка ошибок
- •Ошибки php и журнал error_reporting
- •Чтение и запись бинарных файлов
- •Работа с каталогами в рнр
- •MySql – сервер: бд1; бд2; бд3; бд4;
- •Команды sql для создания баз данных и таблиц
- •Выборка данных из бд
- •Выборка данных из таблиц бд
- •Работа с MySql (сохранение данных в базе данных).
- •Работа с MySql занесение и получение данных из базы данных
- •Организации работы с данными
- •Передача данных от клиента к серверу и обратно. Протокол http
- •Клиентские методы http
- •Обработка html-форм
- •Передача переменных из формы в скрипт.
- •Передача данных на сервер по методам get и post
- •Ввод данных из различных форм
- •Работа с e-mail
- •Cookies-наборы
- •Сессии (Сеансы)
- •Отмена регистрации сеансовых переменных
- •Сериализация объектов
- •Вывод графических данных с помощью рнр
- •Получение информации об изображении
- •Функции рисования прямых и кривых линий
- •Заливка изображений
- •Удаление и изменение цветов палитры
- •Создание прозрачности в изображениях
- •Рисование с помощью кистей
- •Использование шрифтов и вывод строк
- •Слияние изображений с помощью gd
- •Глава 7. Лабораторные работы Лабораторная работа 1 (4 часа). Инструменты и средства создания простых сайтов
- •Лабораторная работа 3 (4часа). Применение каскадных таблиц стилей css
- •Трехколоночный контейнерный макет сайта
- •Лабораторная работа 4. Применение каскадных таблиц стилей css
- •1. Свойства шрифтов.
- •2. Свойства текста.
- •3. Свойства цвета и фона.
- •4. Свойства рамки.
- •5. Свойства списков.
- •6. Свойства изображений.
- •Лабораторная работа 5 (4 часа). Динамика и JavaScript на Веб – странице.
- •Ответить на следующие вопросы
- •Лабораторная работа 6 по JavaScript (4 часа).
- •1.Проверка правильности заполнения формы на сайте
- •Методы объекта window
- •Задание 2. Функции
- •Задание 4. Работа с базами данных Выполнить одно из перечисленных ниже упражнений
- •Задание 5. Создание web-объектов Список заданий
- •Drupal: практические примеры
- •Приложение 1. Курсовые работы Курсовая работа 1. Создание клиентских приложений
- •Курсовая работа №2. Сайты клиент-сервер
- •Каталог товаров
- •Система вопрос/ответ
- •Курсовая работа №3. Технологии разработки Веб – приложений
- •Приложение 2. Быстрая разработка Веб-приложений
- •Начало работы с сайтом
- •Создание контента
- •Установка нового модуля
- •Создание шаблона
- •Включение блока отображение популярных статей
- •Удаление
Использование dom
Полученные новые данные нужно включить в состав документа, уже отображающегося на экране, воспользовавшись структурой объектов DOM. От свойства responseText лучше отказаться, так как его применение потребует дополнительного синтаксического разбора. Гораздо полезнее свойство responseXML, в котором информация изначально представляется в совместимом с DOM виде. В структуре текущего документа необходимо выбрать узел, в состав которого следует включить возвращенные данные, и вызвать метод replaceChild(), заменив старое поддерево новым, прочитанным из responseXMLсле этого осталось задать внешний вид полученных данных посредством каскадных таблиц стилей. Выполнив упомянутые выше действия, мы получим Ajax-приложение.
Рассмотрим пример:
//В теле HTML файла пишем скрипт:
function checkName(input, response)
{
if (response != ''){
// Response mode
message = document.getElementById('nameCheckFailed');
if (response == '1'){
message.className = 'error';
}else{
message.className = 'hidden';
}
}else{
// Input mode
url = 'http://localhost/xml/checkUserName.php?q=' \\
+ input;
loadXMLDoc(url);
}
}
В данном примере в файле localhost/xml/checkUserName.php обрабатываются данные, полученные из командной строки в переменной q. А результат сохраняется в XML структуре, которая хранится в этом же файле. Так можно получить из БД и обработать данные, которые необходимо обновить.
Cookies
Cookie является решением одной из проблем HTTP протокола. HTTP транзакция завершается после того, как браузер сделал запрос, а сервер выдал ответ. После этого сервер "забывает" о пользователе и каждый следующий запрос считает новым пользователем. Используя cookie, можно запомнить первое значение, а при каждом последующем запросе это значение читается из переменной окружения HTTP_COOKIE и обрабатывается. Например, при каждом последующем входе на странице появляется либо именное приветствие, либо первоначальная форма с запросом имени пользователя, если значение cookie не установлено.
Cookie - это небольшая порция текстовой информации о предыдущем сеансе клиента, которую сервер передает браузеру для хранения в файле 'cookies.txt'. Браузер затем будет передавать ее серверу с каждым запросом как часть HTTP заголовка. Сервер на основании ее анализа будет совершать те или иные действия. Например, в случае авторизованного доступа в cookies может сохраняться login и password в течение сессии, что позволяет пользователю не вводить их снова при запросах каждого документа. В рекламном бизнесе на Интернет cookie используются для определения целевой аудитории по географическому положению пользователей, отслеживания интересов пользователей.
Работа с cookie
Полное описание поля Set-Cookie HTTP заголовка:
Set-Cookie: NAME=VAL; expires=DATE; path=PATH; domain= DOM_NAME;
NAME -имя, VAL – значение, expires время до которого хранится cookie. Если атрибут не указан, то cookie хранится в течение одного сеанса; DOM_NAME - домен, для которого значение cookie действительно. Если атрибут опущен, по умолчанию используется доменное имя сервера, на котором было задано это значение cookie. path=PATH - устанавливает подмножество документов, для которых действительно значение cookie. Чтобы cookie отсылались при каждом запросе к серверу, необходимо указать корневой каталог сервера, например, "path=/". Если атрибут не указан, то значение cookie распространяется только на документы в той же директории, в которой было установлено значение cookie.
Когда запрашивается документ с HTTP сервера, браузер проверяет свои cookie на предмет соответствия домену сервера. Если найдены подходящие значения cookie, браузер посылает их в серверу в виде пары. Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ...
Клиент (браузер) имеет ограничения для cookies, например:
всего может храниться до 300 значений cookies
каждый cookie не может превышать 4Кбайт
с одного сервера может храниться до 20 значений cookie
Наиболее часто используются три способа задания значений - через META-теги языка HTML, JavaScript и серверные-скрипты.
1. Задание cookie с помощью META-тегов:
<META HTTP-EQUIV="Set-Cookie" CONTENT="NAME=val; EXPIRES=date; DOMAIN=dom_name; PATH=path; SECURE">
2. Задание cookie с помощью функции JavaScript setcookie()
function setCookie(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "")
if (!caution || (name + "=" + escape(value)).length <= 4000)
document.cookie = curCookie
else
if (confirm("Cookie превышает 4KB и будет вырезан !"))
document.cookie = curCookie
}
Пример. Функция чтения значения cookie. Возвращает значение или пустую строку, если cookie не существует.
// name - имя считываемого cookie
function getCookie(name) {
var prefix = name + "="
var cookieStartIndex = document.cookie.indexOf(prefix)
if (cookieStartIndex == -1)
return null
var cookieEndIndex = document.cookie.indexOf
(";", cookieStartIndex + prefix.length)
if (cookieEndIndex == -1)
cookieEndIndex = document.cookie.length
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}
Пример. Функция удаления значения cookie. cookie устанавливается с устаревшим параметром expires, например 1 января 1970 года.
function deleteCookie(name, path, domain) {
if (getCookie(name)) {
document.cookie = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT"
}
5.7. JQuery
jQuery — это библиотека (фреймворк) JavaScript, облегчающая работу с DOM, CSS, AJAX и визуальными приложениями. Это бесплатное и открытое ПО, созданное Джоном Резигом в 2006 году. Функциональность обеспечивается файлом JQuery.js, который загружается с сайта jQuery.com. В скачивании файла в пользовательский каталог js/ и, затем, в его подключении состоит основной способ загрузки:
<script type="text/javascript" src="js/jquery.js"></script>
Во втором способе загрузка происходит в онлайн режиме, при котором файл можно не скачивать, а подгрузить с сайта jQuery.com по сервису загрузки контента CDN
<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
Рассмотрим пример, в котором мы хотим изменить цвет заголовка h1 на сайте <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>prjq1 -Demo</title> <!—Подключаем библиотеку--> <script type="text/javascript" src="js/jquery-1.8.3.js"> </script> </head> <body> <a href="http://jquery.com/">jQuery</a>//Здесь ссылки <h1> Использование jQuery</h1> <script> jQuery(document).ready(function(){ jQuery("h1").css("color", "green");//находит элемент h1 });//вызывает css и меняет цвет h1 на зеленый </script> </body></html> |
Вызов функции Jquery(document).ready() означает, что функция будет дожидаться окончания загрузки страницы клиента (onload). Затем она выполнит анонимную функцию, содержащую обращение к jQuery. Функция jQuery() находит ссылку на элемент по строке описания элемента. Аргументы функций в jQuery() берутся в ковычки. Это позволяет осуществлять поиск элементов по правилам регулярных выражений. Затем обращаемся к CSS. Синонимом JQuery() является функция $() которая позволяет обращаться к элементам DOM по их естественным именам.
В следующем примере находятся элементы <p>подчеркиваются, текст с id=’idname’ выводится в окно, изменяется цвет шрифта в<h1>:
<!DOCTYPE html>
<html> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>prjq1 - Jquery</title>
<script type="text/javascript" src="js/jquery-1.8.3.js"> </script>
<style type="text/css">
body{color: green;}
p{text-align:center;}
h1{text-align:center;}
</style>
<script type="text/javascript">
jQuery(document).ready(function(){// ждём загрузки документа, jQuery("h1").css("color", "yellow");
$("p").after("<hr/>") ;
alert($("p"));
alert($('#idname').text());
});
</script >
</head>
<body > <!--Это тело документа-->
<h1>Заголовок страницы</h1>
<p >Основной текст.</p>
<div id='idname'>Это div </div>
<a href="http://jquery.com">познавательно</a>
<a href="http://jsapi.com">познавательно тоже</a>
</body> </html>
Чтобы код сработал верно, нужно поместить его вниз страницы либо вызывать после загрузки документа с помощью jQuery(document).ready(). Сокращением для последней функции является функция Query();
Доступ к элементам DOM
Одной из основных областей применения JQuery является DOM. Функция JQuery() (сокращение $()) возвращает ссылку на массив элементов, выбранных из документа на основе заданных параметров. Рассмотрим несколько вариантов: $('tagname') — доступ к указанному тегу. Например $('span') возвратит все ссылки на теги <span>; $('*') — доступ ко всем элементам документа. Функция JQuery позволяет также выбирать элементы по «id» либо «className»: $('#idname') — доступ к элементу с id='idname'; $('.classname') — доступ к элементу по имени класса class=' classname'; Например $(".bebe")- выбираем элементы с class=bebe, $("div.wrap") - выбираем div с class=wrap. Выбираемые элементы можно перечислить через запятую: $('img, .myclass') получит все элементы <img>, а также элементы с классом myclass. Однако $('img#myPort') получит элемент <img id="myPort" />. Кроме этого можно указывать: $('element:first')—первый элемент, $('element:last')—последний элемент. $('element:even')— чётные элементы, $('element:odd')— нечётные элементы. $("input:text")-элементы input с type="text", $("input:checkbox:checked")-все чекбоксы с checked=true.
Другие методы библиотеки jQuery, вызываемые через точку, имеют приклеивающийся функционал, т.е. применяются к объекту, после которого были вызваны и возвращают новый или модифицированный массив. Рассмотрим пример:
$("div") //вернул все div
.not('.red') //отсек div с классом red и вернул остальные
.add('span.green') //добавил к выборке span'ы c классом green
.addClass('mycl')//добавил класс mycl каждому элементу.
$("div").filter(".red, :first") – все дивы, из них первый с классом red.
Методы выполняются слева направо. Рассмотрим пример перемещения по дереву, соответствующему таблице:
<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>prjq3 - "Элементы JQuery</title>
<script type="text/javascript" src="js/jquery-1.8.3.js"> </script>
<style type="text/css">
body{color: green;}
h1{text-align:center;}
</style>
</head>
<body > <!--Это тело документа-->
<h1>Заголовок страницы</h1>
<div id='idname'>Это второй div </div>
<table width="75%" border="1" >
<tr>
<td>здесь текст</td>
<td>этот текст будет удален</td>
<td>а этот нет</td>
<td><a id="myid">del</a></td>
</tr>
</table>
<script>
$("#myid").click(function (){
$(this).parent().prev().prev().empty();
});
</script>
</body></html>
В примере использовались функции для родственных связей: $("p").parent() - выбор всех прямых предков элементов p, $("p").parents("div") - выбор всех предков элемента p, которые есть div. В поиске элементов заключается большая часть работы с jQuery.
Управление атрибутами
Ещё одна возможность JQuery — управление атрибутами тегов: alt, src, href, width, style, title, class и др для найденного элемента.Чтобы задать, удалить, изменить любой элемент или атрибут, используются методы двух видов. Методы, которые позволяют получить информацию об элементе и не имеют значения, называют getters, а методы, позволяющие установить заданные значения свойств - setters.
Функция(getters) .attr(имя_атрибута) — возвращает значение атрибута, .attr(имя_атрибута, значение_атрибута) — устанавливает новое значение атрибута (setters). .removeAttr(имя_атрибута) — удаляет атрибут, .addClass(имя_класса) — добавляет, .removeClass(имя_класса) — удаляет класс; .html() — возвращает HTML-код(getters). Например, $('h1').html(); .html(код) — устанавливает HTML-код(- setters). $('h1').html('hello world'); .val() — возвращает значение, .val(значение) — устанавливает значение элемента.
Рассмотрим пример поиска по документу всех тегов h2 которые являются непосредственными потомками тега article (выбор всех потомков элементов p)
<!DOCTYPE html>
<html ><head>
<meta charset="UTF-8"/>
<title>prjq4 - "Элементы JQuery</title>
<script type="text/javascript" src="js/jquery-1.8.3.js"> </script>
<style type="text/css">
body{color: green;}
p{text-align:center;}
h1{text-align:center;}
</style>
</head>
<body >
<div id='idname'>Это второй div </div>
<div id="content" class="wrapper box">
<hgroup><h1>Page Title</h1> <h2>Page Description</h2> </hgroup>
<article id="stick"> <h2>Article Title</h2>
<p>Заголовок статьи</p> </article>
<article> <h2>Article Description</h2>
<p>Описание текста</p> </article>
</div>
<script>
var a=$("article").find("h2").html(); // // выбираем теги h2 - потомки тега article
alert("h2.html=" +a);
$("div").find("article").find("h2") //
$("article > h2").html("NEWHTML");
var a= $("article").children().css('fontsize', '100px'); //
alert(a);
$("#stick").prev() // выбор предыдущего элемента от найденного
$("#stick").next() // выбор следующего элемента от найденного
</script>
<footer> <p>©copyright 2013</p> </footer>
</body> </html>
Кроме атрибутов, у элементов имеются также свойства, такие как selectedlndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked и defaultSelected. Для работы со свойствами используем функции prop():prop(propName) — получение значения свойства, prop(propName, propValue) — установка значения свойства. removeProp(propName) — удаление свойства. Для отключения элементов формы и для изменения состояния чекбоксов используется функция pnop().