Отправляет email-рассылки с помощью сервиса Sendsay

Изучаем PHP

  Все выпуски  

Изучаем PHP


Информационный Канал Subscribe.Ru


Урок четвертый

  • Пишем функцию сохранения сообщений.
-+функция сохранения сообщений.

function save_msg()
{
global $mail,$name,$msg;
if (!file_exists("msg.dat"))
{
$fl=fopen("msg.dat","w");
chmod("msg.dat",0777);
flock($fl,2);
fwrite($fl,"");
flock($fl,3);
fclose($fl);
}
$fl=fopen("msg.dat","a");
$dt=date("d/m/Y");
$data="$name\\$msg\\$dt\\$mail\n";
flock($fl,2);
fwrite($fl,$data);
flock($fl,3);
fclose($fl);
print_msg();
}

С блоком if и функцией file_exists вы уже знакомы. Рассмотрим функцию fopen.
fopen(“имя файла”,”режим”). Ниже приведен список режимов функции fopen, они обозначаются следующим образом:

"r"-файл открывается для чтения, указатель файла устанавливается на его начало.
"r+"-файл открывается на чтение и на запись, указатель файла устанавливается на его начало.
"w"-файл открывается только для записи, указатель файла устанавливается на его начало. Все содержимое файла теряется, так как счетчик длины файла устанавливается равным 0. Если файл с указанным именем не существует, то функция пытается создать его.
"w+"-файл открывается для чтения и записи, указатель файла устанавливается на его начало. Все содержимое файла теряется, так как счетчик длины файла устанавливается равным 0. Если файл с указанным именем не существует, то функция пытается создать его.
"a"-файл открывается только для записи, указатель файла устанавливается в его конец. Если файл с указанным именем не существует, то функция пытается создать его.
"a+"-файл открывается для чтения и записи, указатель файла устанавливается в его конец. Если файл с указанным именем не существует, то функция пытается создать его.

Так же эта функция позволяет работать через HTTP или FTP соединения. В нашем случае мы создаем файл msg.dat если его не существует и устанавливаем права доступа с помощью функции chmode, вот ее описание:

chmode("имя файла", числовая маска)

Будьте внимательны, числовую маску нужно применять добавляя ноль. Если вам нужно установить права доступа 655, тогда следует писать в функции 0655.
Далее рассмотрим функцию flock.

flok(указатель файла(в нашем случае $fl),режим блокировки).
Режимы блокировки:
1-Блокировка чтения. Это означает что файл может использоваться совместно с другими читающими приложениями.
2-Блокировка записи. Это означает, что файл не может использоваться совместно с другими приложениями.
3-Снятие существующей блокировки.

Так для чего же используется блокировка файлов. Блокировка файлов нужна для того, что бы по мере возможности исключить ошибки. Ошибка в данной ситуации может быть следующая, представьте на что будет похож наш файл msg.dat если в него одновременно сделают попытку записи два и более человек, а эта реальная ситуация при большой посещаемости сайта. Правда и это не панацея, но подробнее о решении проблем с данной ситуацией позже, когда перейдем к изучению PHP+MySQL.
Далее о функции fwrite.

fwrite(указатель файла,"строка")
Данная функция производит запись строки в файл.

Теперь рассмотрим функцию fclose().

fclose( указатель файла)
Эта функция производит закрытие файла.

Далее еще одна очень интересная функция date().

date("форматная строка")
Возвращает строку отформатированную в соответствии с заданным форматом.Форматная строка может содержать следующие символы:

a Формат “am” или “pm”.
A Формат “AM” или ”PM”.
B Формат Swatch Internet Time.
d День месяца в виде двух цифр с ведущем нулем (01-31).
D День недели в текстовом виде, например “Mon”
F Название месяца в длинном формате, например “November”.
g Часы в 12-ти часовом формате без ведущих нулей, например(1-12).
G Часы в 24-рех часовом формате без ведущих нулей(0-23).
h Часы в двенадцати часовом формате (01-12)
H Часы в двадцати четырех часовом формате (00-23)
i Минуты (00-59)
I 1 при включенном декретном времени 0 при выключенном
j День месяца без ведущих нулей (1-31)
l День недели в длинном формате, например “Mondey”
L 0 если год является високосным и 1 если нет
m Номер месяца (01-12)
M Сокращенное название месяца, например “Nov”
n Номер месяца без ведущих нулей (1-12)
r Дата в формате RFC822, то есть “Thu, 20 Nov 2003 18:02:07 +0200”
s Секунды (00-59)
S Суффикс числительных для английского языка (th, nd).
t Количество дней в данном месяце (28-31)
T Установка временной зоны для данной машины, например “MSD”
U Секунды, прошедшие с начала эпохи
w День недели в числовом формате, 0(воскресенье)-6(суббота)
Y Год в четырех цифровом формате (2003)
y Год, записанный двумя цифрами (03)
z Номер текущего дня года (0-365)
Z Сдвиг временной зоны в секундах (-43200-43200). Смещение на запад от Гринвича всегда отрицательное, а на восток положительное

Теперь обратите внимание на переменную $date, в строке которую мы ей присваиваем, сразу вписываем переменные. Слэш в PHP экранирует служебный символ стоящий за ним, по этому в этой строке они двойные.
Символ “\n”, является escape последовательностью и означает начало новой строки.
Вот таблица escape последовательностей:

\b- Возврат на одну позицию.
\t- Табуляция.
\f- Переход на следующею страницу.
\n- Новая строка.
\r- Возврат каретки.
\"- Двоные кавычки.
\'- Одинарные кавычки.
\\- Обратная касая черта.

Ну вот пока и все.

-+В следуещем выпуске
  • Пишем функцию печати номеров страниц.
  • Рассмотрим операции в PHP.
  • Небольшое домашнее задание.
Автор рассылки Андрей Сергеев ata elfin e-mail hwsas@rambler.ru
Мой сайт w5.boom.ru каталог партнерских программ для вебмастера.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное