Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Фрма для отправки почты


Автор: Михалыч 4.9.2008, 21:43
Подскажите пожалуйста,нужна форма для отправки сообщения на почту,
но не просто форма,а только одно поле и кнопка для отправки.Есть вот такой код,но он не отправляет:
Код
<?php
 if (isset($_POST['okbutton']))
 {

        $komu="[email protected]";
        $tema="Вопрос от: ".$_POST['person'];
        mail($tema);
        }


?>
<FORM action="" method="post">
<b><font color="#7B3000" size="1">Название нерабочей ссылки:</font></b><br>
<input name="person" size="20" style="background-color: #FFC58A">
<br>
<input class="button" type="submit" value="Отправить" name="okbutton"/>
</form>



Автор: PARROT 4.9.2008, 22:01
Так а форма никому не отправляется, переменная содержащая адрес выпадает.
Поищите по форуму  smile 

Автор: bars80080 4.9.2008, 22:28
ну так надо посмотреть синтаксис функции mail() и понять, что там должно быть несколько больше атрибутов

Автор: Михалыч 4.9.2008, 22:40
Атрибутов должно быть больше, это я код уменьшил,я только начал изучать язык php ,поэтому не понимаю.
Если можно напишите код на одну строку для текста и кнопки для отправки для так называемого понятия языка,а я буду пробовать дальше изучать smile 

Автор: PARROT 4.9.2008, 22:55
А поиском не хотите воспользоваться? 
А как можно писать и не понимать? 
А как можно уменьшить и не знать что?

Добавлено через 1 минуту и 51 секунду
Код

if ($_SERVER['REQUEST_METHOD']=="POST") {
  mail("моя@почта","Feedback",$_POST['text'],"Content-Type: text/plain; charset=windows-1251\r\n");
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?thanks");
  exit;
}
if ($_SERVER['QUERY_STRING']=="thanks") {
  echo "Спасибо большое!";
  exit;
}
?>
<form method="POST">
<textarea name="text">
<input type="submit">
</form>


Добавлено через 3 минуты и 36 секунд
http://phpfaq.ru/

Автор: bars80080 4.9.2008, 22:59
это же одна из самых популярных тем: http://php.ru/manual/function.mail.html


Цитата(PARROT @  4.9.2008,  22:55 Найти цитируемый пост)
А как можно уменьшить и не знать что? 
 smile 
это конечно жесть. почему вы тогда не записали функцию как ma(); ? это же короче

Автор: Gold Dragon 5.9.2008, 08:38
вот сделал на скорую руку, думаю поможет

newfile.php
Код

<?php
if (isset($_GET['id'])){// если существет переменная отправки формы то..
    // проверяем переменные, удаляем лишнее
    $info['fio'] = (isset($_POST['fio'])) ? strip_tags(trim($_POST['fio'])) : '';
    $info['ps'] =  (isset($_POST['ps'])) ? strip_tags(trim($_POST['ps'])) : '';
    $info['data'] = date("d.m.Y H:i:s");
    
    //формируем сообщение
    $message = sMailMessage($info);
    
    // формируем письмо
    $to  = "=?windows-1251?b?".base64_encode('Куда')."?= <[email protected]>" ;
    $subject = "=?windows-1251?b?".base64_encode('Сообщение')."?=";
    $headers  = "Content-type: text/html; charset=windows-1251 \r\n";
    $headers .= "From: =?windows-1251?b?".base64_encode('От куда')."?= <[email protected]>\r\n";
    
    // письмо пошло
    mail($to, $subject, $message, $headers);
    
    // говорим что всё хорошо
    $content = sMailOk();
}else{ // если переменная не существет, выводим форму
    $content = sMailForma();
}

// выводим результат
echo $content;

// функция - выводит информацию от отправке письма
function sMailOk(){
    return <<<EOF
<div>
<h2>Результат</h2>
<p>Спасибо. Ваше сообщение успешно отправлено.
</div>
EOF;
}

// функция - выводит форму для заполнения
function sMailForma(){
    return <<<EOF
<div>
<h2>Форма</h2>
<form action="newfile.php?id=1" method="post">
<p>Ваше имя: <input type="text" name="fio" value="">
<p>Ваше сообщение: <textarea cols="40" rows="10" name="ps"></textarea>
<p><input type="submit" name="r4" value="Отправить">
</form>
</div>
EOF;
}

// функция - формирует письмо
function sMailMessage($info){
    $a  = '<p>Доброе время суток!';
    $a .= '<br>Вам поступило новое сообщение';
    $a .= '<hr><p>Имя: '.$info['fio'];
    $a .= '<p>Сообщение: '.$info['ps'];
    $a .= '<p>Дата: '.$info['data'].'<hr>';
    return $a;
}
?>


к этому ещё нужно сделать проверку если данные пустые. Также нужно защитить от повторной отправки письма через обновление страницы, ну и ещё маленькие мелочи

Автор: Михалыч 5.9.2008, 19:55
Спасибо большое за скрипты,но дело в том что Вы даете более полные скрипты для отправки писем,а мне нужно что бы не было ни каких проверок,и ни каких лишних полей,а только поле для ввода текста в одну строку типа (input), и кнока для отправления,и что бы небыло после завершения отправки подтверждения.Нужно для того что бы с сайта пользователи смогли в поле указать неработающую ссылку и отправить админу.
Я поэтому и начал из нормальной формы все удалять,а в итоге нет отправки.

Автор: bars80080 5.9.2008, 20:16
ну, это проблема из пальца

выкидываешь в форме все поля кроме одного для сообщения

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

к примеру скрипт Gold Dragon:

Код

<?php
if (isset($_GET['id'])){// если существет переменная отправки формы то..
    // проверяем переменные, удаляем лишнее
    $info['fio'] = 'users message';
    $info['ps'] =  (isset($_POST['ps'])) ? strip_tags(trim($_POST['ps'])) : '';
    $info['data'] = date("d.m.Y H:i:s");
    
    //формируем сообщение
    $message = sMailMessage($info);
    
    // формируем письмо
    $to  = "=?windows-1251?b?".base64_encode('Куда')."?= <[email protected]>" ;
    $subject = "=?windows-1251?b?".base64_encode('Сообщение')."?=";
    $headers  = "Content-type: text/html; charset=windows-1251 \r\n";
    $headers .= "From: =?windows-1251?b?".base64_encode('От куда')."?= <[email protected]>\r\n";
    
    // письмо пошло
    mail($to, $subject, $message, $headers);
    
}else{ // если переменная не существет, выводим форму
    $content = sMailForma();
}

// функция - выводит форму для заполнения
function sMailForma(){
    return <<<EOF
<div>
<h2>Форма</h2>
<form action="newfile.php?id=1" method="post">
<p>Ваше сообщение: <textarea cols="40" rows="10" name="ps"></textarea>
<p><input type="submit" name="r4" value="Отправить">
</form>
</div>
EOF;
}

// функция - формирует письмо
function sMailMessage($info){
    $a  = '<p>Доброе время суток!';
    $a .= '<br>Вам поступило новое сообщение';
    $a .= '<hr><p>Имя: '.$info['fio'];
    $a .= '<p>Сообщение: '.$info['ps'];
    $a .= '<p>Дата: '.$info['data'].'<hr>';
    return $a;
}
?>
 всё

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)