- •Минск, бгу,
- •Глава 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. Быстрая разработка Веб-приложений
- •Начало работы с сайтом
- •Создание контента
- •Установка нового модуля
- •Создание шаблона
- •Включение блока отображение популярных статей
- •Удаление
Работа с e-mail
E-mail посылается с сервера Web через службу протокола пересылки почты SMTP. В PHP для отправки e-mail используется функция:
mail( $to,$subj, $msg[, $headers[, ad_par]]);
Функция mail() отправляет сообщение $msg получателю $to. Разделив запятой адреса, можно задать несколько получателей, например $to= ' user@ex.com, anouser@ex.com'. Переменная $subj указывает тему, headers содержит необязательные заголовки, в число которых входит адрес отправителя. С помощью mail() можно высылать сообщения с присоединенными файлами. Функция возвращает TRUE, если почта была успешно принята для доставки, FALSE в ином случае. Пример:
<?php
$to = 'address@domain.com';
$subject = 'HelloMail’;
$message = 'hello';
$headers = 'From: master@example.com' . "\r\n" .
'Reply-To: master@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers))
{ print("Yes");} else{ print("No"); };
?>
Функция mail() не отправляет сообщение, а обрашается к почтовому агенту реализованному в функции sendmail(). В системе Windows при использовании localhost sendmail() представляет псевдопочтового агента, который помещает почту в файл.
Приведенная ниже форма HTML, которая поволяет пользователю вводить имя и адрес. Когда нажимается кнопка "Registration", данные формы передаются приложению email.php как переменные $_POST[]:
<html><head>
<title>pr42.htm</title>
</head>
<body>
<FORM NAME="testForm" ACTION="email.php" METHOD="POST">
name: <INPUT TYPE="text" NAME="fname"><BR>
e-mail: <INPUT TYPE="text" NAME="email"><BR>
<INPUT TYPE="SUBMIT" value="Registration">
</form>
</body></html>
<?php // email.php
$to = $_POST['email'];
$subject = "Подтверждение регистрации";
$msg = "Дорогой: " . $_POST['fname'] . " " . ",\n\n";
$msg .= "Вы успешно зарегистрировались.";
$headers = "From: Registration Site <myaddr@mydomain.com>";
$headers .= "Reply-To: registration@mydomain.com";
if(mail($to, $subject, $msg, $headers))
{
echo "$msg". "Message sent! ,". $_POST['fname'];
}
else { echo "Message not sent!"; }
?>
Дорогой: valera , Вы успешно зарегистрировались.
Message sent! ,valera
Cookies-наборы
РНР не имеет средств для запоминания предыдущих запросов клиента к серверу. Если необходимо создать Web-сайт, запоминающий посетителей и использующий их данные для создания персонального содержимого, решение может быть в использовании cookies. Cookies - это механизм хранения данных о предыдущем посещении сайта на компьютере клиента. При первом посещении сайта сервер передает браузеру клиента для сохранения в файле идентифицирующий клиента cookie-набор. При следующем посещении данного сайта, браузер вместе с запросом перешлет этот cookie-файл обратно серверу. Cookie хранятся в системном каталоге Cookies в текстовых файлах формата username@host.txt.
Когда серверное приложение намеревается установить cookie-набор, происходит следующая последовательность событий: Сервер посылает клиенту в HTTP – ответе заголовок Set-cookie, содержащий данные о клиенте, которые он хочет сохранить.
НТТР/1.0 200 ОК
[Здесь опять идут заголовки]
Set-Cookie: user_id=265; domain=bsu.by ;
Expires=Mon, 20-Sep-2010 16:54:56 GMT;Path=/
Клиент сохраняет эту информацию в cookie-наборе, существующем как маленький текстовый файл, содержащий значения для данного сайта. При последующих запросах этого сайта браузер вспомнит: "есть cookie-набор для этого сайта. " и отправит эту информацию в виде:
GET /index.php HTTP/1.0
[Злесь идут заголовки]
Cookie: user_id=265
Синтаксис HTTP-заголовка Set-Cookie:
Set-Cookie: NAME=VAL; expires=DATE; path=PATH; domain=DNAME; secure
Параметр NAME - имя cookie-набора, VAL — URL-кодированное значение. Параметр DATE задает дату и время, когда cookie потеряет актуальность. Параметр secure указывается, если cookie посылается через защищенное HTTP-соединение. Параметры PATH и DNAME представляют путь и домен, для которых предназначен cookie-набор. В качестве значения параметра DNAME используется не просто my.org, а .my.org (с ведущей точкой). Это еще одна гарантия от злоупотребления cookie. Существует несколько доменов верхнего уровня, для которых в имени домена достаточно двух уровней: .СОМ, .EDU, .NET, .ORG, .GOV, .MIL, .INFO. Все другие домены требуют минимум трех точек в DNAME.
Значение cookie можно изменить, послав дополнительный заголовок Set-Cookie с новым значением. Для удаления достаточно изменить текущее значение времени так, чтобы набор потерял актуальность в прошлом.
Set-Cookie: my=myvl; expires=Tuesday, 03-Dec-2012 13:01:59 GMT; path=/; domain=.co.org;
Здесь был установлен cookie-набор my со значением myvl для всех файлов в домене co.org. Этот cookie-набор установлен с граничной датой актуальности декабря 2012 года (03-Dec-2009) и временем 13:01:59 GMT.
Посмотрим другие возможности реализации cookie-наборов, например использование HTML-дескрипторов. Дескриптор <МЕТА> можно использовать для имитации HTTP-заголовков внутри HTML-страницы, применяя атрибуты HTTP-EQUIV и CONTENT.
<head>
<title><!--HTML-код --> </title>
<МЕТА HTTP-EQUIV="Set-Cookie" CONTENT="mycookie=myvalue;
path=/; domain=.bsu.by">
</head>
<!— остаток HTML-документа //-->
Вторым методом установки cookie-набора в PHP-коде является создание заголовка Set-Cookie с помощью PHP-функции header().
<?php
header("Set-Cookie:mycookie=myvl; path=/;domain=.cg.org");
?>
Поскольку эта функция используется для отправки HTTP-заголовков, она должна быть выполнена до пересылки содержимого с помощью операторов echo или print.
Третий и наиболее известный метод установки cookie-наборов — использование PHP-функции setcookie ():
setcookie($name [,$value [, $expire [, $path [, $domain (, $secure]]]]]);
Так как и для заголовков header() перед фунцией setcookie () не должно быть никакого вывода, даже пустая строка перед открывающим дескриптором <?php > вызовет ошибку. Рассмотрим пример:
<?php //cooke0.php
$userid = $_COOKIE['userid'];
setcookie($userid, 12);
print_r($_COOKIE);
?>
Вывод:
Array ( [First] => [vc] => 24 )
<?php //cooke1.php
$username=$_POST['userid'];
if(isset($_COOKIE[$username]))
{ $userid = $_COOKIE[$username];
echo "id1=",$userid,"<br>"; }
else {
$userid=$username;
setcookie($userid, "value", mktime(0,0,0,1,22,2011),"/");
$userid = $_COOKIE[$username];
echo "id2=",$userid,"<br>"; }
//echo "id=",$userid,"<br>";
print_r($_COOKIE);
?>
Вывод:
id1=value Array ( [First] => [vc] => 24 [value] => [Mycooke] => value )
Следует помнить, что cookie-наборы должны предшествовать началу документа, пересылаемого по HTTP. Если нельзя установить cookie-набор перед отправкой части документа, используйте функкцию буферизации ob_start(), которая позволит устанавливать cookie-набор после вывода содержимого.
<?php
ob_start();
echo "Hello\n";//вывод в буфер
setcookie("cookiename", "cookiedata");
ob_end_flush();//Вывод буфера
?>
Для удаления cookie-набора можно задать параметр $value равным NULL.
<?php
setcookie("mycookie", NULL, NULL, "/", ".bsu.by");
?>
Для доступа к значению cookie-набора, полученного от браузера, РНР использует суперглобальный массив $_COOKIE, который хранит значения cookie-наборов. Каждый ключ (имя переменной cookie-набора) в этом массиве представляет отдельный cookie-набор.Обращение к функции setcookie() было быть помещено до любого вывода, включая теги и символы разделители. Если setcookie() выполняется успешно, то возвращается TRUE, однако это еще не означает, что пользователь принял cookie. Проверка поддержки cookie-наборов из РНР рассматривается в следующем примере
<?php
if(!isset(_GET[‘testcookie'])) {
setcookie("testcookie", "test_value");
header("Location: $_SERVER["PHP_SELF"])?testcookie=l");
exit; }
else {
if(isset($_COOKIE['testcookie'])) {
setcookie("testcookie");
echo "Прием cookie-наборов включен"; }
else {
echo "cookie-наборы не поддерживаются!";
}
}
?>
В первом операторе if делается попытка создать cookie-набор и затем перенаправить браузер на другую страницу с помощью дополнительного параметра GET. После повторного выполнения сценария с дополнительным параметром проверяется существование cookie-набора. Если клиент не поддерживает cookie-наборы, тестовый cookie-набор уничтожается вызовом функции setcookie () без параметров.
