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

Твой первый сайт

  Все выпуски  

Твой первый сайт: от А до Я



Рассылки сайта "Время России" на subscribe.ru


Твой первый сайт: от А до Я


Колонка редактора

Добавлены статьи:


Обучающая бизнес-игра Денежный поток - это поистине революционный продукт нашей эпохи, моделирующий реальную инвестиционную деятельность

   Денежный поток - это программа МВА (Money, Business, Accounting), которая в игровой форме учит людей тому, как быстро стать богатыми и достичь финансового процветания в реальной жизни.
  Денежный поток создан для людей, осознающих потребность в новой форме образования, и понимающих, что на смену индустриальному веку пришел информационный.

Игра Денежный поток учит:

  • Управлять своими активами
  • Ориентироваться в условиях быстрого изменения экономической обстановки
  • Инвестировать в акции и недвижимость
  • Пользоваться банковским кредитом и погашать долги
  • Составлять балансовый отчет

       Цель данной игры - научить вас контролировать свой денежный поток. Тем, кто не способен этого делать, часто приходится вести финансовую борьбу всю свою жизнь, независимо от того, сколько денег они получают. Все, что от вас требуется, - это помнить один секрет богатых людей: богатые не работают ради денег, потому что они знают, как заставить деньги работать на себя.

  • Играйте в Денежный поток и управляйте своими деньгами!


      Хиты продаж

    Отправка писем через PHP


    Лучшие рассылки на
    Subscribe.ru


    Компьютерная литература -
    105  электронных учебников умещающихся на 3 CD

    CashFlow - это игра, которая помогает по-новому взглянуть на роль денег в нашей жизни, освободиться от привычных стереотипов бесполезного накопительства и  затрат.

    Энциклопедия вебмастера - Супер сборник на двух CD, который будет просто необходим, как начинающим сайтостроите-лям так и продвинутым вебмастерам.

    Энциклопедия манипулирова-ния или как самостоятельно изучить НЛП и гипноз (2 CD)

    Энциклопедия начинающего крэкера

     Учебный сборник на CD  "Уроки Вебмастерства"

        Автор: Алекс aka TrigGer
    Источник:
    kovrik.hut.ru

    Как отправить письмо через PHP, используя формы, и как при этом устранить возникающие проблемы с кодировкой?


    Этот вопрос терзает многих начинающих web-мастеров, так как они незнают как подойти к решению данной проблемы. Попытаюсь облегчить их задачу и влезу в их шкуру, так как я и сам был когда-то зеленым и этого тоже не знал.

    Рассмотрим на простом примере, как отправить вопрос через формы на сайте. У нас будет 3 поля для ввода:

    Ваше имя:
    * E-mail:
    * Вопрос:

    Причем "Ваше имя" не является обязательным параметром. А все остальные поля, помеченные звездочкой, являються обязательными. От этого и будем плясать, когда пользователь не введет свое имя или укажет не правильный e-mail или его вообще не напишет. Выводить будем как ошибку, но об этом позже. Для простоты и удобства разместим форму и код прогараммы в одном файле. Важно указать кодировку страницы (windows-1251), чтобы далее не возникало проблем с перекодированием из win в koi (ниже)
    Итак, приступим. Начало документа стандартное:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Отправка письма</title>
    <meta content="text/html;charset=windows-1251" http-equiv="Content-Type">
    </head>
    <body>


    Далее идет 2 логические части:
    1 - вывод формы
    2 - обработка формы и отправка письма

    Вначале идет вывод формы.

    Для удобства в начале определяем e-mail через переменную $mailto, на который будет отсылаться письмо из формы. Далее мы определяем, была ли нажата кнопка "отправить". В конце формы имеется кнопка "отправить", она имеет аттрибуты name="ok" и value="отправить". Этот аттрибут вам придеться вписать самостоятельно, так как он отличается от стандартного (если такой аттрибут вообще есть). После нажатия на нее переменная $ok будет иметь значение "отправить". Если кнопка не нажата, то переменная не определена. Таким образом, выражение if (empty($ok)) означает буквально "если кнопка отправить не была нажата". Функция empty() возвращает true, если переменная не определена, содержит 0 или пустоту.

    <?
    $mailto="name@server.ru";
    if (empty($ok))
    {
    ?>


    Далее идет вывод формы, если выполнено предыдущее условие if (empty($ok)).
    Переменная $PHP_SELF означает, что обработку формы производит текущий файл, т.е. тот же, на кот. расположена форма.

    <h3>Отправьте вопрос автору сайта</h3>
    Поля, отмеченные (*), обязательны для заполнения.
    <br><br>
    <form action="<?echo $PHP_SELF;?>" method="post">
    <table>
    <tr>
    <td>Ваше имя:</td>
    <td> <input type="text" name="username" size="30" maxlength="20"></td>
    </tr>
    <tr>
    <td>* E-mail:</td>
    <td><input type="text" name="mailfrom" size="30" maxlength="50"></td>
    </tr>
    <tr>
    <td>* Вопрос:</td>
    <td><textarea cols="50" rows="10" name="question"></textarea></td>
    </tr>
    </table>
    <input type="submit" name="ok" value="отправить">
    </form>

    В противном случае, т.е. если была нажата кнопка, идет обработка формы и отправка письма

    <?
    }
    else
    {


    Хочу предупредить переменная $PHP_SELF не всегда работает на том или ином хостинге, предоставляющим вам место под сайт. В принципе вы можете оставить ее как есть и выложить ее на сервак, а там уже тестировать, при условии, что вам разрешен sendmail. Если окажеться, что эта переменная не работает, то не отчаивайтесь просто поменяйте ее на название файла, где у вас форма. Должно получиться так, что файл с формой будет обрабатывать сам себя.

    Далее идет проверка на корректность заполнения поля "E-mail". Любители ругулярных выражений эту проверку поймут. Для остальных немного поясню:

    Подразумевается, что e-mail должен быть такого вида:
    слово@слово.слово
    При этом слово может состоять из всех букв латинского алфавита и цифр и точка может быть не одна. (например слово@слово.слово.слово)
    [a-z,0-9] - означает "любая буква латинского алфавита или цифра"
    + - означает, что [a-z,0-9] может встречаться 1 или более раз.
    Если введен неправильный e-mail, то в переменную $error записывается ругательное сообщение.

    if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mailfrom))
    {
    $error = "Не верно заполнено поле: <b>E-mail</b><br>";
    }


    Этого может быть оказаться не достаточно для того, чтобы проверить форму на наличие e-mail. В таком случае записываем ниже:

    if (empty($mailfrom))
    {
    $error="Не заполнено поле:<b>E-mail</b><br>";
    {


    Таким же способом можно проверять и имя пользователя, только меняя переменную. Проверять можно что угодно и выводить на экран тоже - это уже на ваше усмотрение.

    Если поле "Вопрос" не заполнили, то к переменно $error добавляем еше одно ругательство:

    if (empty($question))
    {
    $error = "Не заполнено поле: <b>Ваш вопрос</b><br>";
    }


    Если переменная $error не пустая, то мы ее выводим на экран и немедленно прекращаем дальнейшую обработку с помощью exit, то есть скрипт прекращает обработку формы и выводит сообщение об ошибке.

    if ($error)
    {
    echo $error;
    echo "<br><a href=\"javascript:history.go(-1)\"
    class=\"text\">Вернуться назад</a>";
    exit;
    }


    Ну а если таки $error осталась пустой и exit не сработал, то можно приступать к отправке письма, т.е. главной цели всего этого мероприятия...
    Сформируем тему и тело сообщения:

    $subject="Вопрос от $mailfrom";
    $body="Имя:
    $username

    E-mail:
    $mailfrom

    Комментарии:
    $question";


    А теперь самое главное, чтоб потом можно было прочитать письмо "по-русски" :) Функция convert_cyr_string перекодирует строку из win в koi (w-win, k-koi) Это необходимо, т.к. все почтовые клиенты по дефалту принимают письма в koi. А у нас вверху страницы стоит charset=windows-1251, поэтому функция грамотно переводит из win в koi Затем с помощью функции mail отправляется письмо на $mailto, указанный в начале файла.

    $body=convert_cyr_string (stripslashes($body),w,k);
    $subject=convert_cyr_string (stripslashes($subject),w,k);
    $sucess = mail($mailto, $subject, $body,
    "From: $email
    X-Mailer: PHP/" . phpversion());


    Ну и самое приятное... Если письмо успешно отправлено, то выводим благодарственную надпись и предлагаем вернуться..

    if ($sucess)
    {
    echo "Спасибо. Ваш вопрос отправлен.<br><br>";
    echo "<a href=\"javascript:history.go(-1)\"
    class=\"text\">Вернуться назад</a>";
    }


    Стандартный конец..

    }
    ?>

    </body>
    </html>

    P.S. Как наверно понял читатель, нужно выделить и скопировать все синие блоки в один файл по порядку и запустить его на сервере. Весь код является полностью проверенным и рабочим. Кстати. чуть не забыл, когда выложите страницу на сервак, то нужно выставить им права доступа к этой страницы с помощью любого FTP-клиента. Это так называемые chmod. Ознакомтесь с интсрукциями на сервере хостинга. Обычно это 711 или 755. Советую ставить 755, тогда точно пользователь получит право ознакомиться с вашей страницей. Выставляйте права так: chmod 755 nameyourpage.php

    Удачи!!!


    "Домашний компьютер: от А до Я"

    Анекдоты, которые расмешили всю Россию

    "Мышеловка" или всё о мошеничестве в Интернет

    Коллекция самых необходимых ссылок по Internet

    Рассылка для настоящих мужчин

    Интернет без секретов: курс молодого бойца

    Ах какая женщина" или как стать счастливой в короткий срок

    Худеем в два счёта

    Интернет или как стать продвинутым пользователем

    Как стать обаятельной и привлекательной

    Кулинарное искусство
     

    ЖДЁМ   ПИСЕМ


    В избранное