Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   форма отправки на мейл (http://forum.oszone.net/showthread.php?t=101265)

oIo_DeN_oIo 22-02-2008 11:18 746046

форма отправки на мейл
 
Есть форма отправки на емейл длинноватая полей этак 20, ниже представлен обработчик формы. Всё работает как надо. НО. Когда приходит письмо с собранными данными некоторые поля отображаются не так:

Название марки: Мазда
Адрес компании: Бобруйск
Ваша должность: Менеджер

А отображается вот так.
Название марки: Мазда Адрес компании: Бобруйск Ваша должность: Менеджер

как сделать чтобы всё было как в первом примере?

P.S. Когда отправляешь пустую форму тогда все поля расположены как надо.

PHP код:

<?php 
$date 
date ('d.m.Y, H:i'); 
$text "Название марки: $_POST[pole1]\n Адрес компании: $_POST[adress]\n Ваша должность: $_POST[dolzhnost]\n \n$date"
mail ('moi_mail@moi_mail.ru','Forma Otpravki!'$text'Content-Type: text/plain; charset=windows-1251'); 
?>
<meta http-equiv="refresh" content="0; URL=thanks.htm">

и ещё встречный вопрос сложно ли сделать чтобы когда в поле ничего не вводишь оно не отображается в присланном письме
а сейчас просто после двоеточия пусто:
Ваше имя:

bruder 22-02-2008 14:28 746192

смотря в каком едиторе проматривать. Попробуйте "\r\n". А второе не очень понял - надо условия понаставить или?
$pole1 = (empty($_POST[pole1]))?"":"Название марки:".$_POST[pole1]."\r\n";
... каждое поле так


$text = $pole1.$pole2...

---------------------------------
вообщето я не волшебник, только учусь

oIo_DeN_oIo 22-02-2008 15:30 746237

Про второе да условия имел ввиду.. если после заполнено оно отсылается если нет то не отображается в присланном письме.
насчёт просмотрщика не понял. просто письмо приходит в стандартную программу например Microsoft Outlook и там смотрится :)
А сложно сделать чтобы письмо составлялось в html?


p.s. Добавление "\r" не помогло
"Название марки: $_POST[pole1]\r\n\n когда делаешь так то все строчки в письме в таком виде
строка 1

строка 2

Т.е. через одну строчку.

Arrest 22-02-2008 15:51 746253

oIo_DeN_oIo
Код:

mail ('moi_mail@moi_mail.ru','Forma Otpravki!', $text, 'Content-Type: text/html; charset=windows-1251');
?

mountfield 22-02-2008 16:33 746290

А <br> не пробовали, заранее извиняюсь за ламерское предложение. Я его всегда вместо \n использую.

oIo_DeN_oIo 22-02-2008 16:33 746291

to Arrest
эта строка значит отправлять эту форму на мыло с темой Forma Otpravki! и далее следует кодировка .


mountfield
<br> пробЫвал приходит вместе с текстом :)

P.S. Перво что пробЫвал это разхместить код так


$text = "
Название марки: $_POST[pole1]\n
Адрес компании: $_POST[adress]\n
Ваша должность: $_POST[dolzhnost]\n \n$date";


Но текст в итоге приходит через строку
пункт1

пункт 2 итд.

bruder 22-02-2008 17:25 746322

люди правильно сказали
1. от Arrest - Content-Type: text/html -> шлет как html поэтому:
2. втыкай <br> или форматируй с css как нравится
3. поверяешь моим способом на наличие переменной и все ок

oIo_DeN_oIo 22-02-2008 17:47 746334

Цитата:

Цитата bruder
2. втыкай <br> или форматируй с css как нравится »

втыкал но оно отправлялось как бр в текст. может эту строку
Цитата:

Content-Type: text/html ...
поставить вначало файла?
про условия не понял.

bruder 22-02-2008 18:38 746359

Цитата:

поставить вначало файла?
кончай прикалываться

Цитата:

Цитата Arrest
mail ('moi_mail@moi_mail.ru','Forma Otpravki!', $text, 'Content-Type: text/html; charset=windows-1251'); »

Цитата:

про условия не понял.
так по русски операторы типа IF назвают

$pole1 = (empty($_POST[pole1]))?"":"Название марки:".$_POST[pole1]."<br>";
каждое поле проверяется пусто или нет. если нет дописывается твое предложение, в данном случае "Название марки:"

Sham 22-02-2008 21:11 746435

Цитата:

Цитата oIo_DeN_oIo
Content-Type: text/plain; charset=windows-1251 »

Вот это зачем? С чарсетом почтовик разберется (иначе возможен конфликт кодировок), а text/plain итак по умолчанию... лучше замени на "From: from@mylo.ru"

Arrest 22-02-2008 22:47 746507

Sham
Ему походу нужен html, так что Content-Type надо оставить

Sham 22-02-2008 23:46 746546

PHP код:

$headers  "MIME-Version: 1.0\nContent-type: text/html; charset=\"windows-1251\""


oIo_DeN_oIo 25-02-2008 10:52 747845

а как сделать проверку обязательных полей? включая поля чекбоксы и точки (radio) ? т.е. Чтобы форма не отправляла инфу пока обязательные поля не заполнены/отмечены?

bruder 25-02-2008 12:29 747898

вопросы у тебя становятся все интересней, так люди тебе всю логику сайта напишут :)) если совсем посто сделай просто опрос

PHP код:

$error = "";
if(empty($_POST[name]))
  $error.= "введите имя<br>;
else if(empty($_POST[email]))
  $error.= "введите email<br>;

if(!empty($error))
   <div><?=$error?></div>
   покажи форму
else
  спасибо .... ок


oIo_DeN_oIo 25-02-2008 14:10 747955

что значит
Цитата:

Цитата bruder
покажи форму
else
спасибо .... ок »

??

bruder 25-02-2008 15:52 748016

PHP код:

<?
$error 
"";

if (isset(
$_POST['send'])){    
    if(empty(
$_POST["name"]))
      
$error.= "введите имя<br>";
    if(empty(
$_POST["email"]))
      
$error.= "введите email<br>";    
}
if(empty(
$error) && isset($_POST['send'])){
?>
       <TABLE width="100%" height="100%">
      <TR>
        <TD align="center">Спасибо за все
      <FORM METHOD=POST ACTION="http://forum.oszone.net/thread-101265-2.html">
        <INPUT TYPE="submit" value='Дальше'>
      </FORM></TD>
      </TR>
      </TABLE>
<?    }else{ ?>

<div style="color:red"><?=$error?></div>
       <form method=post action="<?$_SERVER['PHP_SELF']?>">
       Name:
        <INPUT TYPE="text" NAME="name" value='<?=$_POST["name"]?>'><BR>
       Email:&nbsp;    
        <INPUT TYPE="text" NAME="email" value='<?=$_POST["email"]?>'><BR>
        <INPUT TYPE="submit" name='send' value="send">
       </form>      

<?}?>


oIo_DeN_oIo 25-02-2008 19:00 748143

это всё писать в обработчике?

или в самой форме с полями. Дело в том что у меня в движке на странице только ввод html g[g вроде не буцдет работать... а в отработчике формы наоборот html не работает... :)

bruder 25-02-2008 19:43 748176

не совсем понял о чем речь. А что за движок, cms какя то? Я знаком только с немногими и то поверхностно, хотя думаю мог бы разобраться.

timon4ik 26-02-2008 11:47 748541

oIo_DeN_oIo, валидатор без php, если я правильно понял о чем речь:
Код:

<script language="JavaScript">
function validate()
  {
      error_message="";
      if(!document.form1.name1.value) error_message="Не заполнено поле 1";
      if(!document.form1.name2.value) error_message="Не заполнено поле 2";
      if(error_message)
          {
            alert(error_message);
            return false;
          }
  }
</script>

<form name="form1" action="ссылка_на_обработчик" onsubmit="return validate();">
    <INPUT TYPE="text" NAME="name1"><BR>
    <INPUT TYPE="text" NAME="name2"><BR>
    <INPUT TYPE="submit" name='send' value="send">
</form>


bruder 26-02-2008 11:56 748547

хороший код, респект

oIo_DeN_oIo 26-02-2008 16:15 748715

timon4ik, то что надо.!!

только таким методом не проходит проверка radio даже если отмечаешьк актойтопункт точкой всёравно пишет что незаполнен...

bruder 26-02-2008 22:52 748960

яваскрипт не заменит проверки не стороне сервера. Попробуйте отключить javascript и отослать пустыми поля. Это скорее для удобства, но написанно грамотно. Что до проверки радиобатонов, то все скрипты надо подгонять под себя. Надо посмотреть как он сделал с полями и почти также сделать с радио + учебник по яваскрипту вам в помощь. Написать такое не видя кода страницы просто невозможно

<script language="JavaScript">
function validate()
{
error_message="";
if(!document.form1.name1.value) error_message+="Не заполнено поле 1 ";
if(!document.form1.name2.value) error_message+="Не заполнено поле 2 ";
if(!document.form1.check.checked) error_message+="Radiobutton пуст ";
if(error_message)
{
alert(error_message);
return false;
}
}
</script>

<form name="form1" action="ссылка_на_обработчик" onsubmit="return validate();">
<INPUT TYPE="text" NAME="name1"><BR>
<INPUT TYPE="text" NAME="name2"><BR>
<INPUT TYPE="radio" NAME="check">
<INPUT TYPE="submit" name='send' value="send">
</form>

надеюсь автор не обидится что взял его скрипт :) просто делать нечего, тренируюсь

timon4ik 27-02-2008 10:18 749116

oIo_DeN_oIo,
для radio надо писать условие

if(!document.form1.radio1name.checked) error_message="Не отмечено radio1";


--------------------------------------
О, bruder опередил, извини, не заметил)

oIo_DeN_oIo 27-02-2008 18:51 749379

ГЕНИАЛЬНО!!


Время: 18:14.

Время: 18:14.
© OSzone.net 2001-