1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Контактная форма на сайте

Тема в разделе "Web Coding", создана пользователем nikky, 27 янв 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. nikky

    nikky Постоялец

    Регистр.:
    5 июл 2007
    Сообщения:
    126
    Симпатии:
    12
    Народ помогите сделать контактную форму на сайте, врезаемую в html, самая простейшую: имя, мыло, текст сообщения, ну и что работала....
     
  2. LeXxiK

    LeXxiK Читатель

    Заблокирован
    Регистр.:
    10 авг 2007
    Сообщения:
    76
    Симпатии:
    9
    HTML:
    
    <form action="mail.php" method="post" name="1">
    Имя <input type="text" name="name"><br>
    Ваш email <input type="text" name="from"><br>
    Сообщение <input type="text" name="text"><br>
    <input type="submit" value="Отправить">
    
    Ну и код mail.php

    PHP:
    <?php
    $to      
    'nobody@example.com';
    $subject 'the subject';
    $message="Имя: $name
    Email: 
    $from
    Сообщение: 
    $text
    "
    ;

    $headers 'From: webmaster@example.com' "\r\n" .
        
    'Reply-To: webmaster@example.com' "\r\n" .
        
    'X-Mailer: PHP/' phpversion();

    mail($to$subject$message$headers);
    ?>
     
    nikky нравится это.
  3. nikky

    nikky Постоялец

    Регистр.:
    5 июл 2007
    Сообщения:
    126
    Симпатии:
    12
    БОльшое спасибо, работает)))
    а как графу сообщение увеличить... и там в коде ещё несколько ящиков, в чем их отличия?
     
  4. nopase

    nopase Создатель

    Регистр.:
    6 май 2007
    Сообщения:
    49
    Симпатии:
    22
    Добавить атрибут size с указанием размера:
    PHP:
    <input type="text" size="50" name="text">
    или заемнить эту строку на textarea
    PHP:
    <form action="mail.php" method="post" name="1">
    Имя <input type="text" name="name"><br>
    Ваш email <input type="text" name="from"><br>
    Сообщение <textarea name="text" cols="100" rows="20"><br>
    <
    input type="submit" value="Отправить">
    Размерами рулят cols и rows

    PHP:
    $to      'nobody@example.com';
    На этот ящик придет мыло из формы.

    PHP:
    $headers 'From: webmaster@example.com' "\r\n" .
    Этот адрес будет виден в поле "От:" ("From:") твоего почтовика, открыв пришедшее из формы письмо.

    PHP:
    'Reply-To: webmaster@example.com' "\r\n" .
    Адрес для ответа по-умолчанию, если нажать в почтовике "Ответить" ("Reply") на пришедшее из формы письмо.
     
  5. nwusr

    nwusr Создатель

    Регистр.:
    17 дек 2007
    Сообщения:
    16
    Симпатии:
    0
    На будующее: есть же куча сайтов с готовыми скриптами...
    К примеру woweb.ru (админы- не сочтите за рекламу;))
     
  6. ZyXEL

    ZyXEL Создатель

    Регистр.:
    13 янв 2007
    Сообщения:
    41
    Симпатии:
    16
    Мдя.. писал я тут для себя скриптик, и пришлось сделать вывод, что функция mail(); не очень то и хороша в наше время: на гмейле - в спам улетает, маил.ру - вообще прибиваеться антиспамом.

    Юзайте сокеты, и шлите через смтп.
    PHP:
    $header заголовки письма$message тело сообщения.

    $server "smtp.sever.com";
    $login_auth "login";
    $pass "password";
    $mail_from "mail@somehost.loc";

        
    $connect fsockopen ($server25$errno$errstr30); 
    if(!
    $connect) {print "соединение с серверов не прошло"fclose($connect); exit;}
    print 
    get_smtp_data($connect);
        
    fputs($connect"EHLO localhost\r\n"); 
    $code substr(get_smtp_data($connect),0,3);
    if(
    $code != 250) {print "ошибка приветсвия EHLO"fclose($connect); exit;}
        
    fputs($connect"AUTH LOGIN\r\n");
    $code substr(get_smtp_data($connect),0,3);
    if(
    $code != 334) {print "сервер не разрешил начать авторизацию"fclose($connect); exit;}
        
    fputs($connectbase64_encode($login_auth)."\r\n");
    $code substr(get_smtp_data($connect),0,3);
    if(
    $code != 334) {print "ошибка доступа к такому юзеру"fclose($connect); exit;}
        
    fputs($connectbase64_encode($pass)."\r\n");
    $code substr(get_smtp_data($connect),0,3);
    if(
    $code != 235) {print "не правильный пароль"fclose($connect); exit;}
        
    fputs($connect"MAIL FROM: $mail_from\n"); 
    $code substr(get_smtp_data($connect),0,3);
    if(
    $code != 250) {print "сервер отказал в команде MAIL FROM"fclose($connect); exit;}
        
    fputs($connect"RCPT TO: $to\n"); 
    $code substr(get_smtp_data($connect),0,3);
    if(
    $code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"fclose($connect); exit;}
        
    fputs($connect"DATA\r\n"); 
    $code substr(get_smtp_data($connect),0,3);
    if(
    $code != 354) {print "сервер не принял DATA"fclose($connect); exit;}
        
    fputs($connect$header."\r\n".$message."\r\n.\r\n");
    $code substr(get_smtp_data($connect),0,3);
    if(
    $code != 250) {print "ошибка отправки письма"fclose($connect); exit;}
        
    fputs($connect"QUIT\r\n");
     
  7. ivashka

    ivashka

    Регистр.:
    16 май 2007
    Сообщения:
    151
    Симпатии:
    15
    Странно но себе я уведомления на gmail, шлю через функцию мейл, и все пока нормально вроде. Насчет мейл.ру ничего не скажу, не пользовался. НУ смтп получше все ровно будет, но мейл проще)
     
  8. robi

    robi Прохожие

    На майле режет если этой формой часто пользуються, а если менее 10 раз в день то все отлично отрабатывает.
     
  9. nick1m

    nick1m Постоялец

    Регистр.:
    20 фев 2008
    Сообщения:
    119
    Симпатии:
    8
    у меня нормально пошло после того, как переместил из спама в нормальные, больше проблем небыло, а вообще возможно от хостинга еще зависит, тк в спам попадают иногда и обычные письма
     
  10. lolshik

    lolshik

    Регистр.:
    21 фев 2008
    Сообщения:
    316
    Симпатии:
    127
    Я для себя написал такую форму на функциях с проверкой данных. Что примечательно, если юзер ввёл неправильное мыло (невалидное), то его сообщение остаётся, а не стирается как во всех других.

    PHP:
    if (isset($_POST['submit_check'])) { //форма была отправлена

        
    if ($form_errors validate_form()) { // Если $form_errors присвоился не пустой массив
                                              // то показываем ошибки.
            
    show_form($form_errors);
            }

        else {
            
    process_form();
            }
        }

    else {
        
    show_form();
        }


    function 
    validate_form() {


        
    $errors = array();
        
    $_POST['name'] = trim($_POST['name']);
        
    $_POST['email'] = trim($_POST['email']);

        if (
    mb_strlen($_POST['name'],'utf8') == 0) {
            
    $errors[] = "Вы не заполнили имя";
            }
        if (!
    preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i',$_POST['email'])) {
            
    $errors[] = 'Введите правильный e-mail.';
            }
        if (
    mb_strlen($_POST['message']) < 10) {
            
    $errors[] = 'Введите текст сообщения.';
            }


        return 
    $errors;
        }

    function 
    show_form($errors '') {

    if (!empty(
    $errors)) {

        echo 
    "<br><center><div class='warning'><font size='2'color='#FF0000'><b>Обнаружены ошибки:</b></font><br>";

         foreach (
    $errors as $value) {
            print 
    $value."<br>";
        }
        echo 
    "</div></center>";








        
    show_form_content();
        }
    else {


    print <<<HERE

    <table align='center' class='table_form' width='400px'>
    <form method='post' action="
    $_SERVER[PHP_SELF]">
    <tr><td colspan='2'>Введите вопрос и данные для связи :</td></tr>
    <tr><td width='200'>Ваше имя</td>
    <td width='*'><input type='text' name='name' value=''></td></tr>
    <tr><td>E-Mail</td><td><input type='text' name='email' value=''></td></tr>
    <tr><td>Ваш вопрос или комментарий</td><td><textarea rows='5' cols='30' name='message'></textarea></td></tr>
    <input name='submit_check' type='hidden' value='1'>
    <td><input type='submit' name='submit' class='formbutton' value='Отправить'></td></tr></form></table>

    HERE;
    }
    }


    function 
    show_form_content() {

    print <<<HERE
    <table align='center' class='table_form' width='400px'>
    <form method='post' action="
    $_SERVER[PHP_SELF]">
    <tr><td colspan='2'>Введите вопрос и данные для связи :</td></tr>
    <tr><td width='200'>Ваше имя</td>
    <td width='*'><input type='text' name='name' value='
    $_POST[name]'></td></tr>
    <tr><td>E-Mail</td><td><input type='text' name='email' value='
    $_POST[email]'></td></tr>
    <tr><td>Ваш вопрос или комментарий</td><td><textarea rows='5' cols='30' name='message'>
    $_POST[message]</textarea></td></tr>
    <input name='submit_check' type='hidden' value='1'>
    <td><input type='submit' name='submit' class='formbutton' value='Отправить'></td></tr></form></table>


    HERE;


    }

    function 
    process_form() {

        
    $name $_POST['name'];
        
    $email $_POST['email'];
        
    $msg $_POST['message'];

        
    $name=trim($name);
        
    $email=trim($email);
        
    $msg=trim($msg);


        if (
    mail("$email""С веб сайта""$msg"));

        print 
    "<br><table align='center' class='table_form' width='350px'>
               <tr>
               <td>Cпасибо 
    $_POST[name]. Сообщение успешно отправлено. <br>Мы ответим Вам максимально быстро.
               </td></tr></table>"
    ;
        }


    //
    //    preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i',



    ?>
     
Статус темы:
Закрыта.