
- •Пособие по курсу «Веб – программирование»
- •Для студентов специальности
- •«Математика и информационные технологии»
- •Минск, бгу,
- •Содержание
- •Глава 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. Быстрая разработка веб-приложений
- •Начало работы с сайтом
- •Создание контента
- •Установка нового модуля
- •Создание шаблона
- •Включение блока отображение популярных статей
- •Удаление
Лабораторная работа 5 (4 ч). Динамика и JavaScript на веб-странице
Чтобы добавить сценарий JavaScript в документ, используются дескрипторы <script> </script>. Скрипты могут размещаться во всех частях документа HTML или в отдельном файле с расширением js. Например, в каталоге jspr помещается файл pr.js, содержащий код JavaScript без ограничивающих тегов <script> </script>:
<script type = "text/javascript" src = "jspr/pr.js"></script>
Скрипт можно разместить в дескрипторе HTML. Эта конструкция называется обработчиком события. Событие при этом представляет собой указатель на функцию-обработчик события, который вызывается при возникновении события. Пример:
<!-- Использование кнопки и события jsLab0-->
<!—Проверка типа и версии браузера -->
<html> <body>
<script type = "text /javascript" src = "js/pr.js"></script>
<form>
//При нажатии на кнопку "click me" появляется диалоговое окно
<input type = "button" value = "click me" onclick = "window.alert(' Hello users!')">
</form>
//При ннажатию по гиперссылке "click me"
<a href = "pr3.htm" onclick = "alert('Links clicked')"> click me</a>
<h1 >Проверка типа браузера</h1>
<p><hr>
<form >
<input type = button name = browser value = Browser
onClick = "alert(window.navigator.appName+navigator.appVersion)">
</form>
</body></html>
Имя и версия браузера в примере возвращаются в окне alert() через свойства navigator.appName и navigator.appVersion после нажатия кнопки "Browser".
Задания на JavaScript:
Ответьте на следующие вопросы:
Какая из секций документа подходит для вставки кода JavaScript?
Как подключить внешний код скрипта "xxx.js"?
Как вывести строку «Hello» в окно alert и другие диалоговые окна?
Сколько различных видов циклов используется в JavaScript?
Какие два способа существуют для записи массива JavaScript?
Как вывести сообщение в окно статуса браузера?
1.7 Какого рода информация в приведенном ниже HTML-дескрипторе будет передана обработчиком события?
<input type = "text" name = "phone" onchange = "format(this.value)">
Создайте html-документ. Поместить туда текст «Добро пожаловать на сайт!» c помощью директивы document.write(). Вывести строку «Hello World» в диалоговые окна alert ("string") и confirm(("string"). Добавить на страницу комментарии
<!--This is a comment-->
//This is a comment
/*This comment has more than one line*/
Создайте страницу, которая предлагает в окне prompt() ввести имя (по умолчанию «гость»), а после этого будет приветствовать пользователя по имени. Если пользователь отказывается вводить свое имя, то на странице должен появиться текс, выражающий сожаление. Приветствие должно отображаться в основной части страницы с помощью инструкции document.write("str");.
Метод promt() отображает диалоговое окно с сообщением, полем ввода и двумя кнопками OK и CANCEL и возвращает введенное значение, если нажата кнопка OK, или значение null, если нажата кнопка CANCEL. Пример:
<html> <head>
<title>js1Lab – ввод в окно</title>
<script type = "text/javascript">
function askName() {
var name = prompt ("What is your name, please? ");
return name;
}
</script>
</head>
<body>
<script type = "text/javascript">
document.write("Welcome to my web page, " + askName() + ".");
</script>
</body> </html>
Создайте кнопку «Поздороваться» и обработать событие OnClick кнопки «Поздороваться» так, чтобы по щелчку на кнопке выводилось окно confirm() с сообщением «Еще раз здравствуйте!».
Создайте страницу, которая предлагает (в диалоговом окне) пользователю ввести число, а затем выводит информацию о четности числа на страницу документа. Функция parseInt() поможет преобразовать строку к целому числу.
Создайте страницу, которая предлагает (в диалоговом окне) пользователю ввести число, а затем выводит кубы всех чисел от 1 до введенного числа при условии, что они не превосходят 1000. Воспользоваться циклом for; циклом while; циклом do while; if()
Выведите в заголовок документа строки: «раз»; «два»; «три»; «четыре»; «пять»; «вышел зайчик погулять» как сделано в примере. Продолжить считалку: «Вдруг охотник выбегает…»
<html> <head>
<title>JavaScript в примерах-js2Lab</title>
<meta http-equiv = "Content-Type" content = "text/html; charset = UTF-8">
<script type = "text/javascript">
var msg = document.title;
var c = 0;
var str = new Array("раз", "два", "три", "четыре", "пять", "вышел зайчик погулять");
function animateTitle() {
document.title = strings[c];
if(c == strings.length - 1)
{ c = 0;
setTimeout("animateTitle()", 2000)
}
else
{ c++;
setTimeout("animateTitle()", 200)
}
}
</script>
</head>
<body onload = "animateTitle()">
<div id = "strings"></div>
</body></html>
На основе приведенного ниже примера выведите на странице тикающие часы на фоне изображения и текущую дату. Для получения текущего времени можно воспользуемся объектом time = new Date();. Чтобы получить каждый компонент даты отдельно, можно воспользоваться следующими функциями: getDay() – возвращает день недели 0..6 (0->воскресенье); getDate() – возвращает день месяца 1..31; getMonth() – возвращает номер месяца 0..11; getFullYear() – возвращает год в виде четырех чисел (начиная с 1970). Часы, минуты и секунды можно получить так: time = new Date(); _hours = time.getHours(); _min = time.getMinutes(); _sec = time.getSeconds();
Просто воспользоваться функцией document.write(), чтобы вывести time на экран не получится, так как значение нужно обновлять. Воспользуйтесь свойством innerHTML, которое есть у каждого элемента HTML-кода. Можно выводить время в элементе span, которому дадим уникальный идентификатор id = "hours". Впоследствии можно получить к нему доступ выражением obj_hours.innerHTML = time_wr;.
Чтобы время регулярно обновлялось, нужно функцию wr_hours() вызывать через определенное время. Функция setInterval() выполняет заданный код по истечении заданного промежутка времени. Время в этой функции задается в миллисекундах: setInterval("{выражение}",{временной интервал});.
Зададим интервал, равный одной секунде (1000 миллисекунд). Поскольку функции getDay() и getMonth() возвращают лишь числа, для числовой маркировки месяцев и дней недели добавим два массива с перечислением дней недели и названиями месяцев. В итоге получим следующий код:
<html> <head>
<title>Часы и дата на JavaScript</title>
</head>
<body>
<h1>Часы и дата на JavaScript</h1>
<div><span id = "hours"></span> </div>
<script type = "text/javascript">
obj_hours = document.getElementById("hours");
_month = new Array ("января","февраля","марта", "апреля","мая", "июня","июля","августа","сентября", "октября","ноября","декабря");
_day = new Array ("воскресенье","понедельник", "вторник","среда","четверг", "пятница","суббота");
function wr_hours() {
time = new Date();
time_sec = ime.getSeconds();
time_min = time.getMinutes();
time_hours = time.getHours();
time_wr = ((time_hours<10)?"0":"")+time_hours;
time_wr+ = ":";
time_wr+ = ((time_min<10)?"0":"")+time_min;
time_wr+ = ":";
time_wr+ = ((time_sec<10)?"0":"")+time_sec;
time_wr = " сегодня "+_day[time.getDay()]+", "+time.getDate()+" "+_month[time.getMonth()]+" "+time.getFullYear()+" г. время "+time_wr;
obj_hours.innerHTML = time_wr;
}
wr_hours();
setInterval("wr_hours();",1000);
alert(time);
</script>
</body></html>
Выведите на странице таймер-часы типа секундомера.
Приветствовать посетителя с учетом времени суток(утро, день, вечер).
В следующих примерах выведите сообщения в окне состояния.
a) Написать оператор JavaScript, который отображает сообщение в строке состояния, приветствующее новых посетителей веб-страницы.
б) Создать страницу, на которой расположена кнопка «Установить техт в строке состояния» по нажатию на которую в строку состояния выводится приветствие.
в) Расположить на странице ссылку. При наведении мыши на ссылку отобразить в строке состояния текст «Заходи, не пожалеешь!» (обработка события onMouseOver), при уходе курсора со ссылки отобразите в строке состояния текст «Напрасно, не зашел» (обработка события onMouseOut).
г) Создать веб-страницу с «бегущим» текстом в строке статуса состояния браузера.
д) Выведите текущее время в окно документа и в окно статуса.
Пример программы, выводящей время в строке статуса.
<html> <head>
<script>
function time_scroll() {
var d = new Date();
window.status = d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
setTimeout('time_scroll()',1000);
}
</script>
</head>
<body onLoad = "time_scroll()">
<h1>Часы в строке статуса</h1>
</body> </html>
Полем состояния (status bar) называют поле нижней части окна, в котором отображается информация о состоянии браузера (загрузка документа, графики, завершение загрузки и т. п.) называют строкой состояния. Программа на JavaScript имеет возможность работать с этим полем с помощью двух свойств: window.defaultStatus – значение поля статуса по умолчанию и window.status – значение поля статуса;. Значение свойства defaultStatus или status можно изменить – и оно тут же будет отображено в поле статуса. Пример: window.status = "put your message here"
Если в Mozilla не изменяется строка состояния, то следует выполнить: Инструменты -> Настройки -> Содержимое JavaScript -> Дополнительно -> Изменять текст в строке статуса.
Выведите на странице регулярно обновляемую информацию:
а). о том, сколько дней осталось до Нового года или другого праздника от текущей даты;
б). сколько часов и минут осталось до конца рабочего дня или до начала нового рабочего дня – в зависимости от текущего времени. Рабочее время считать с 9.00 до 17.00. Расширенный вариант: рабочими днями считать понедельник, вторник, среду, четверг, пятницу, а в рабочее время есть обед с 12.00 до 12.30.
На странице непрерывно выводите заголовок первого уровня в стиле печатной машинки. После того как строка напечатается полностью, не стирайте ее побуквенно как в примере, повторяйте вывод сначала. Измените стиль заголовка: шрифт крупнее в 2 раза, цвет шрифта – красный, курсив. Используйте пример вывода строки в стиле печатной машинки.
<html> <head>
<title>Пример с печатающими буквами</title>
<script type = "text/javascript">
var delay = 50; // задержка
var pos = 0;
//Строка, которая будет выводиться
var msg = 'Пример с печатающими буквами';
// функция, печатающая слова
function printWords(text, dir)
{
var typingtext = text.substring(0, pos);
document.getElementById("type").innerHTML = typingtext;
pos += dir; // печатаем или стираем текст
if (pos > text.length)
setTimeout('printWords("'+text+'",'+(-dir)+')', delay * 50);
else
{
if(pos < 0)
{
dir = -dir;
}
setTimeout('printWords("'+text+'",'+dir+')', delay);
}
}
</script>
</head>
<body onLoad = "printWords(msg, 1)">
<h1>Эффект печатной машинки</h1>
<div id = "type"></div>
</body>
</html>
Напишите в теле документа скрипт, формирующий в документе тег параграфа <p> с помещенной в него фразой «Заходи, гостем будешь».
<html> <head>
<title>Добро пожаловать на сайт! - JsLab3</title>
<meta http-equiv = "Content-Type" content = "text/html; charset = UTF-8">
<script type = "text/javascript">
window['username'] = false;
function action() {
confirm('Приветствую Вас!');
}
function sayAgain() {
alert('Здравствуйте еще раз !')
}
function writeHello() {
var str = prompt('Введите свое приветственное сообщение', '');
if (str) {
var newEl = document.createElement('h1');
newEl.innerHTML = str;
document.getElementById('strings').appendChild(newEl);
}
}
function createPTag() {
var newEl = document.createElement('p');
newEl.innerHTML = 'Приветствую Вас, многоуважаемый Гость!!!';
document.getElementById('strings').appendChild(newEl);
}
</script>
</head>
<body onload = "action()">
<div id = "strings"></div>
<input type = "button" onclick = "sayAgain()" value = "Поздороваться еще раз" />
<input type = "button" onclick = "writeHello()" value = "Написать свое приветствие" />
<input type = "button" onclick = "createPTag()" value = "Сформировать тег параграфа" />
</body> </html>
Напишите оператор JavaScript, который отображает приветствие новых посетителей веб-страницы на уровне заголовка <h1 > страницы документа.
Загрузите маленькое изображение, в случае щелчка по изображению, загрузить большое изображение .
Создать HTML-документ, который сразу после загрузки страницы будет отображать диалоговое окно адресом URL. Другое диалоговое окно должно отображаться при щелчке пользователя на кнопке формы. Адрес URL может быть получен из свойства href объекта location.
<html> <head>
<script type = "text/javascript">
function showLocation() {
alert("This page is at: " + location.href);
}
</script> </head>
<body onload = "showLocation()"> Bu, be, by.
</body> </html>
Создайте навигацию по сайту. Создайте контекстное меню для различных элементов сайта.
Выведите на странице календарь на текущий месяц/год.
Пусть имеется ряд изображений. Создайте эффект мультипликации на странице, для этого разработайте сценарий смены изображений с заданной частотой. Реализуйте запуск и остановите мультипликацию по требованию пользователя по нажатию на кнопке.
На странице задан элемент, содержащий некоторый текст. Разработайте сценарий, который при наведении мыши на элемент меняет текст на другой.
Задана таблица. Разработайте сценарий, который при наведении мыши на ячейку меняет толщину и цвет границы.
Создайте игру типа: «Угадай задуманное число».
Создайте различные меню на JavaScript.
Создайте объект калькулятор.
Задание задержек по времени при выполнении функций. Проигрывание картинок и звуковых файлов.
Создайте веб-страницу со слоем, появляющимся при нажатии на кнопку «Невидимка» и исчезающим при повторном нажатии на кнопку «Невидимка».
Создайте окно для решения линейных уравнений ------х +-------- =0
Работа с текстовыми строками из формы: объединение, сравнение, нахождение длины, удаление HTML-тегов из строки, удаление пробелов в начале.
Перевод строки в кодировки: KOI8-R, WINDOWS-1251, UTF-8.
Выполните конвертацию даты из одного формата в другой по событию.
Вычислите время, проведенное на сайте.