- •Оглавление
- •Что такое интернет
- •Готовимся к созданию Web-страниц
- •Железо, железо и еще раз железо...
- •Домашняя эргономика — безопасность прежде всего!
- •Программное обеспечение для Web-мастера
- •Выбор хостинга
- •Знакомьтесь — РНР
- •История создания РНР
- •Установка РНР
- •Настройка РНР для Apache
- •Виртуальные хосты в Apache
- •Тестирование РНР
- •Установка и настройка дополнительных модулей
- •Переносимость и совместимость
- •Синтаксис РНР
- •Возможности РНР
- •Работа с базами данных
- •HTTP-аутентификация средствами РНР
- •Работа с изображениями
- •Поддержка закачки файлов
- •Поддержка HTTP-cookie
- •Использование регулярных выражений
- •Обработка ошибок
- •Управление электронными письмами
- •Вывод на экран и переменные в РНР
- •Простейшие арифметические операции
- •Простейшие логические операции
- •Циклы
- •Массивы
- •Работа со строками
- •Сессии
- •Программирование на РНР
- •Сравнение чисел
- •Вложение файлов в документ
- •Простейший счетчик посещений
- •Обработка форм
- •Отправление почты
- •Отправление письма в HTML-формате
- •Дата по-русски
- •Счетчик посещений с использованием базы данных
- •Счетчик персональной посещаемости
- •Сохраняем информацию о посещениях
- •Ах, баннеры, баннеры...
- •Счетчик посещений с выводом информации на экран
- •Счетчик сессий
- •Создание динамического меню
- •«Грабим» странички
- •Голосование на сайте
- •Гостевая книга
- •Технология создания
- •Свой чат — это просто
- •Использование специального привата
- •Интернет-магазин
- •Технология создания
- •Сервисы интернет-магазина
- •Архив рассылок
- •Совет первый: а нужно ли вам это?
- •Совет второй: забудьте все советы
- •Пример системы безопасности
- •HTTP-аутентификация в РНР
- •Защита программы
- •РНР в вопросах и ответах
- •Приложения
- •Приложение 3. Некоторые функции РНР
- •Приложение 4. Cookie
- •Приложение 5. Методы передачи данных POST и GET
- •Приложение 6. Время Unix
94 |
Программирование на РНР |
Отправление письма в HTML-формате
Необходимость отправить письмо в HTML-формате возникает не так уж и редко, например, тогда, когда нужно организовать рассылку рекламных материалов компании. Это не обязательно может быть спам, а обыкновенная корпоративная рассылка. Конечно, в этом случае очень хотелось бы не просто помещать в такую рассылку текст, а оформлять его в соответствии со стандартами HTML.
Все, что нужно — это правильно сформировать заголовок, который отправляется вместе с письмом. Например:
<?
$header="Content-Type: text/html; charset=windows-1251\n";
mail("адрес, на который высылается письмо","Это может быть тема письма","
<h1>Сообщение в HTML-формате.</hl> <р>Допустимы любые теги<br>
<hr>
<table><tr><td>Boт, например — </td>
<td>таблицы</td></tr></table>
<hr>
",$header);
?>
Как видите, переменная $header имеет заголовок с типом Content-Type: text/html; Это указание почтовой программе воспринимать полученное сообщение как HTML-письмо. Экспериментируя с кодом, вы сможете составлять такие письма и красиво оформлять их. Только не забудьте задать адрес, по которому будет отправлено письмо, и указать его тему.
Отправление письма в HTML-формате |
|
95 |
А вот и еще один вариант, который позволяет выбрать кодировку отправляемого письма:
$to = "адрес, на который высылается письмо";
$subject = "тема письма";
$text = "текст письма";
$from = "от кого письмо";
$kodir = "кодировка письма";
//$kodir = "windows-1251";
//$kodir = "koi8-r";
$header = "From: $from\nReply-To: $from\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: text/plain; charset=$kodir\n";
$header .= "Content-Transfer-Encoding: 8bit\n\n";
$header .= "$text\n";
mail($to, $subject, $text, $header);
Надеюсь, вам уже все понятно без подробного рассмотрения примера. Видите закомментированные строки? В первых двух — варианты русской кодировки. Выбирайте ту, которая вам нужна. Последний знак комментария надо убрать, если письмо предполагается в HTML-формате. Только в этом случае не забудьте поставить комментарий на предыдущей строке.
96 |
Программирование на РНР |
Дата по-русски
Задача — вывести на экран пользователя дату на русском языке. Решение:
<?php
// определяем массив для месяцев $q[] = "";
$q[] = "января"; $q[] = "февраля"; $q[] = "марта"; $q[] = "апреля"; $q[] = "мая"; $q[] = "июня"; $q[] = "июля";
$q[] = "августа"; $q[] = "сентября"; $q[] = "октября"; $q[] = "ноября"; $q[] = "декабря";
//определяем массив для дней недели $е[0] = "воскресенье"; $е[1] = "понедельник"; $е[2] = "вторник"; $е[3] = "среда"; $е[4] = "четверг"; $е[5] = "пятница"; $е[6] = "суббота";
//считываем месяц
$m = date("m");
if ($m == "01") $m = 1; if ($m == "02") $m = 2;
if ($m |
== "03") $m = 3; |
|||||
if ($m |
== |
"04") $m = 4; |
||||
if |
($m |
== |
"05") |
$m |
= |
5; |
if |
($m |
== "06") |
$m |
= |
6; |
|
Дата по-русски |
97 |
if ($m == "07") $m = 7; if ($m == "08") $m = 8; if ($m == "09") $m = 9;
// считываем день недели $we = date("w");
//считываем число $chislo = date("d") ;
//извлекаем день недели из ранее определенного массива $е $den_nedeli = $e [$we];
//извлекаем значение месяца из ранее определенного
//массива $q
$mesyac = $q[$m];
echo "Сегодня " . $ chislo . " ".$mesyac", " . $den_nedeli; ?>
Этот скрипт не идеален, но работоспособен и хорошо подходит для того, чтобы учиться. Рассмотрим, как он работает. Сначала нужно определить два массива, в которых будут храниться соответственно русское название месяца и русское название дня недели. Месяц не может быть нулевым, поэтому нужно позаботиться о вводе элемента массива с нулевым индексом. Если индекс массива не указан, он принимается равным внутреннему указателю. Если массив пуст и еще не определен, внутренний указатель находится на первом элементе (в данном случае — на имеющем нулевой индекс).
Ввод нового элемента массива перемещает внутренний указатель на единицу вверх, и таким образом обеспечивается последующий ввод значения в ячейку массива, имеющую индекс, на единицу больший, чем предыдущий. В принципе, можно обеспечить ввод данных в массив разными способами. Но указанный здесь — самый простой и легкий для понимания. Мы просто присваиваем поочередно нужные нам данные элементам массива и таким образом заполняем его.
98 |
Программирование на РНР |
Точно так же и со вторым массивом, в котором индекс ячеек задается явно и внутренний указатель устанавливается на тот индекс, который задан. После ввода значения указатель также перемещается вверх на единицу. Разница между этими двумя методами в том, что при незаданных индексах заполнится ячейка массива, на которую указывает внутренний указатель. А он ведь может находиться и не в конце. А если индекс указан явно, внутренний указатель устанавливается на его значение, и запись происходит в явно указанную ячейку.
Когда массивы определены, нам нужно считать номер месяца. Если номер месяца меньше 10, он считывается с первым нулем (т.е. 02), и поэтому нам нужно отсечь ноль. Можно использовать разные алгоритмы и методы, но мы воспользуемся очень простым, но достаточно громоздким решением — сравним полученное решение с рядом заранее известных вариантов и изменим номер месяца на правильный без нуля. Но так делать не рекомендуется — есть более изящные методы. Например, проверить полученное значение на наличие первого ноля и, если результат проверки — истина (самый первый символ в строке — ноль), удалить первый символ.
Далее по ходу скрипта считываем день недели и число. С числом делать ничего не нужно, так как дата будет понятна всем, а вот день недели и месяц нужно обработать. Извлекаем из введенного нами ранее массива $е день недели. Номер дня недели указывает на ячейку массива, в котором хранится нужное русское имя, и таким образом мы в любом случае получим правильное значение. Изменяется номер дня недели — изменяется индекс ячейки, из которой считывается значение. Причем в отличие от массива с именем месяца, здесь нолю соответствует воскресенье, что мы и учли при вводе массива дней недели. Точно такую же операцию проводим и для месяца. Его номер указывает на ячейку массива, где хранится правильное имя месяца на русском языке.
В конце выводим результат на экран в произвольной форме.
