Помогите написать маленький скрипт

3.98K
.

Scorpion, в общем не дождавшись предпочтений я отдаю скрипт в виде кода.
Копир в шапке не удалять! (я знаю, о ваших намерениях)

В двух словах о возможностях. Скрипт проверяет на заполненность пОля, а так же на корректность введённого адреса, отслеживает ошибки, и при их наличии выводит уведомление на несколько секунд, а так же ведёт подсчёт адресов, хранящихся в текстовом файле, и выводит их количество вместе с их списком. Если этого покажется мало, то допиcывать буду уже за деньги.
Код универсален, то есть можно файл инклудить в другой файл, и вызывать результат его работы обращением к переменной echo $view;.

addEmail.php (+/-)
<?php

/**
 * Данный копирайт - оплата за использование скрипта.
 * @Author ДоХтор
 * @E-mail drzoom@mail.ru
**/

$view = '';
$filename = 'base.txt';
$refresh = function ($int, $url) {
    header('Refresh: '. $int .'; url='. $url);
};

if (!file_exists($filename))
    file_put_contents($filename, null);
$email = isset($_POST['email']) ? trim(htmlspecialchars($_POST['email'])) : '';

if (!empty($_POST)) {
    $error = array();
    if (empty($email)) {
        $refresh(2, $_SERVER['PHP_SELF']);
        $error[] = '<b>Не введен e-mail!</b><br />';
    } elseif (preg_match('/[0-9a-z_\.\-]+@[0-9a-z_\.\-]+\.[a-z]{2,4}/i', $email) == false){
        $refresh(2, $_SERVER['PHP_SELF']);
        $error[] = '<b>Некорректный ввод адреса e-mail!</b><br />';
    }
          
    if (empty($error)) {
        $array_email = file($filename);
        $temp = array();        
        foreach ($array_email as $str_email) {
            $temp[] = $str_email;
        }
        
        if (!in_array($email . PHP_EOL, $temp)) {
            file_put_contents($filename, $email . PHP_EOL, FILE_APPEND | LOCK_EX);
            $refresh(4, $_SERVER['PHP_SELF']);
            $view = 'Адрес <b>'. $email .'</b> успешно добавлен в каталог!<br />';
        } else {
            $refresh(2, $_SERVER['PHP_SELF']);
            $view = 'Адрес <b>'. $email .'</b> уже есть в каталоге!<br />';
        }
    } else {
        $view = implode('<br />', $error);
    }
}

$array_email = file($filename);
$all = sizeof($array_email);

if ($all == 0) {
    $view .= 'Список пуст!<br />';
} else {
    $view .= 'Список адресов: (всего: '. $all .' шт.)<br />';
    foreach ($array_email as $str_email) {
        $view .= $str_email .'<br />';
    }
}

?>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
    <input type="text" name="email" value="<?=$email?>" />
    <input type="submit" value="Подписаться" />
</form>
<?=$view?>

.
Scorpion
Зелимхан

ДоХтор, Спасибо большое. Завтра проверю в работе

.
# Scorpion (10.11.2015 / 19:56)
И чтоб результат был выводился вверху формы))
Результат выводить можно где угодно - переставь <?=$view?> над формой, то есть так
<?=$view?>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
    <input type="text" name="email" value="<?=$email?>" />
    <input type="submit" value="Подписаться" />
</form>
.
# Scorpion (10.11.2015 / 19:54)
ДоХтор, Спасибо большое. Завтра проверю в работе
Я на локалке его протестил на всё, что можно
.
Зелимхан

ДоХтор, А можно разделить на 2 файла, а то у меня php код в файле .tpl не ставится

.
# Scorpion (10.11.2015 / 22:21)
ДоХтор, А можно разделить на 2 файла, а то у меня php код в файле .tpl не ставится
А что от чего надо отделить? PHP от HTML? Если да, то можно, только надо в форме написать путь к php-обработчику, а в php-обработчике в свою очередь, надо сделать редирект на файл с формой.
.
Зелимхан

ДоХтор, Спасибо, я попробую)

.

ктож в здравом уме дает свой почтовый ясчик куда попало...
И не будет никакой базы точно...

.

Fublin, А чего бояться-то, спама? Так там есть гибкая система автоудаления

.
Клоун с Газика
# ДоХтор (10.11.2015 / 23:38)
Fublin, А чего бояться-то, спама? Так там есть гибкая система автоудаления
Фублин о другом. Автор для чего-то хочет собрать база эмейлов. И по этому говорит, что кто будет в здравом смысле писать свой ящик куда попало. Но автору как я понял для рабочего сайта. Наверное для создания рассылок клиентам.
Всего: 104