Приднестровская поддержка XOOPS
В качестве примера рассмотрим создание списков рассылки. Создадим возможность добавления нового E-mail, удаления и переименования, а также выведем содержимое файла в поле <textarea>. Для этого создадим два файла: mail_script.php (листинг 45) и mail.php (листинг 46).
Листинг 45. Содержимое файла mail_script.php
<?php
// Проверка E-mail на корректность
function f_test_email($email) {
$pattern = '/^([a-z0-9_.-]+)@([a-z0-9-]+\.)+[a-z]{2,6}$/is';
return preg_match($pattern, $email);
}
// Проверка наличия E-mail. Возвращает индекс или false
function f_in_array($email, $mass) {
for ($i=0, $c=count($mass); $i<$c; $i++) {
if (strtolower($email) === strtolower($mass[$i]))
return $i;
}
return false;
}
// Добавление E-mail
function f_add(&$txt) {
if (f_test_email($txt)) {
if (!file_exists('file.txt')) { // Если файл не существует
file_put_contents('file.txt', $txt) or die('Ошибка');
$txt = '';
return '<span style="color: green">E-mail добавлен</span><br>';
}
$arr = file('file.txt',
FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (count($arr) == 0) { // Если нет ни одного E-mail
file_put_contents('file.txt', $txt) or die('Ошибка');
$txt = '';
return '<span style="color: green">E-mail добавлен</span><br>';
}
if (f_in_array($txt, $arr) === false) {
file_put_contents('file.txt', "\n" . $txt, FILE_APPEND)
or die('Ошибка');
$txt = '';
return '<span style="color: green">E-mail добавлен</span><br>';
}
else {
$msg = '<span style="color: red">E-mail был добавлен ';
$msg .= "ранее</span><br>\n";
return $msg;
}
}
else {
$msg = '<span style="color: red">E-mail не соответствует ';
$msg .= "шаблону</span><br>\n";
return $msg;
}
}
// Удаление E-mail
function f_delete(&$del) {
if (!file_exists('file.txt')) { // Если файл не существует
$msg = '<span style="color: red">Файл не существует';
$msg .= "</span><br>\n";
return $msg;
}
if (f_test_email($del)) {
$arr = file('file.txt',
FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$index = f_in_array($del, $arr);
if ($index !== false) {
$arr[$index] = '';
$str = implode("\n", $arr);
$str = trim(str_replace("\n\n", "\n", $str));
if (file_put_contents('file.txt', $str) === false)
die('Ошибка');
$del = '';
return '<span style="color: green">E-mail удален</span><br>';
}
else {
return '<span style="color: red">E-mail не найден</span><br>';
}
}
else {
$msg = '<span style="color: red">E-mail не соответствует ';
$msg .= "шаблону</span><br>\n";
return $msg;
}
}
// Изменение E-mail
function f_update(&$s, &$na) {
if (!file_exists('file.txt')) { // Если файл не существует
$msg = '<span style="color: red">Файл не существует</span><br>';
return $msg;
}
if (f_test_email($s) && f_test_email($na)) {
$arr = file('file.txt',
FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$index = f_in_array($s, $arr);
if ($index !== false) {
if (f_in_array($na, $arr) === false) {
$arr[$index] = $na;
$str = implode("\n", $arr);
file_put_contents('file.txt', $str) or die('Ошибка');
$s = $na = '';
$msg = '<span style="color: green">E-mail ';
$msg .= 'изменен</span><br>';
return $msg;
}
else {
$msg = '<span style="color: red">Добавляемый E-mail ';
$msg .= 'зарегистрирован ранее</span><br>';
return $msg;
}
}
else {
return '<span style="color: red">E-mail не найден</span><br>';
}
}
else {
$msg = '<span style="color: red">E-mail не соответствует ';
$msg .= 'шаблону</span><br>';
return $msg;
}
}
// Вывод содержимого файла
function f_print() {
echo '<textarea cols="25" rows="15">';
if (file_exists('file.txt')) readfile('file.txt');
echo '</textarea><br>';
}
?>
Листинг 46. Содержимое файла mail.php
<?php
require_once('mail_script.php');
if (isset($_GET['add'])) {
$add = $_GET['add'];
echo f_add($add);
}
else $add = '';
?>
<!-- Выводим форму Добавить -->
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<input type="text" name="add" value="<?php echo $add; ?>">
<input type="submit" value="Добавить">
</form>
<?php
if (isset($_GET['del'])) {
$del = $_GET['del'];
echo f_delete($del);
}
else $del = '';
?>
<!-- Выводим форму Удалить -->
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<input type="text" name="del" value="<?php echo $del; ?>">
<input type="submit" value="Удалить">
</form>
<?php
if (isset($_GET['s']) && isset($_GET['na'])) {
$s = $_GET['s'];
$na = $_GET['na'];
echo f_update($s, $na);
}
else $s = $na = '';
?>
<!-- Выводим форму Изменить -->
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
Старый E-mail<br>
<input type="text" name="s" value="<?php echo $s; ?>"><br>
Новый E-mail<br>
<input type="text" name="na" value="<?php echo $na; ?>">
<input type="submit" value="Изменить">
</form>
<!-- Выводим содержимое файла -->
<?php f_print(); ?>
Откроем в Web-браузере файл mail.php. С помощью форм можно добавить новый E-mail, удалить или переименовать существующий. Причем добавить можно только новый E-mail; если будет введен уже существующий E-mail, то в Web-браузере отобразится соответствующее предупреждение. Кроме того, производится проверка на корректность введенного E-mail; если он не соответствует шаблону, то также отобразится сообщение. Заменить E-mail можно только на отсутствующий в файле E-mail. Таким образом, в файле будут записаны только уникальные E-mail-адреса.
Как разослать письма по E-mail-адресам из этого файла, мы рассмотрим при изучении отправки писем с сайта (см. разд. 26).
Отправитель | Нити |
---|
2 пользователь(ей) активно (2 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 2 далее... |