Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужна помощь с формой обратной связи
 
 автор: piccarilla   (29.01.2007 в 11:48)   письмо автору
 
 

Здравствуйте. Помогите, пожалуйста, прикрутить в готовый обработчик формы (php) возможность отправки вложенного файла (doc, exel).

<?php
error_reporting
(0);
require(
"./config.inc");

    function 
formtohtml ($str) {
    if (
get_magic_quotes_gpc()) {
    
$str stripslashes($str);
    }
  
$str trim($str);
  
$str htmlspecialchars ($strENT_QUOTES);
  
$str str_replace("|""/"$str);
  
$str str_replace("\r"""$str);
  
$str str_replace("\n""<br>"$str);
  
$str eregi_replace("(<br>*){2,}","<br><br>",$str);
  
$str eregi_replace("[ ]{2,}"" "$str);
  return 
$str;
  }
  function 
htmltoform ($str) {
  
$str str_replace("&amp;""&"$str);
  
$str str_replace("&quot;""\""$str);
  
$str str_replace("&#039;""'"$str);
  
$str str_replace("&lt;""<"$str);
  
$str str_replace("&gt;"">"$str);
  
$str str_replace("<br>""\r\n"$str);
  return 
$str;
  }

  if (!empty(
$_GET['a']) and $_GET['a'] == "m") {
  
$var['fields'] = array("name"=>"имя""email"=>"e-mail""subject"=>"заголовок""message"=>"текст сообщения");
  
$notice['error'] = array();
    foreach (
$var['fields'] as $key => $value) {
    if (empty(
$_POST[$key]) || (($_POST[$key] = formtohtml($_POST[$key])) == "0")) $notice['error'][] = $value;
    }
    if (empty(
$notice['error'])) {
      if (
preg_match("/^([a-z,0-9,_,\-,\.])+\@([a-z,0-9,_,\-])+(\.([a-z,0-9])+)+$/",$_POST['email'])) {
      
$t['c'] = file($config['recip_f']);
      
$t['n'] = sizeof($t['c']);
        for (
$i=0;$i<$t['n'];$i++) {
        
$t['c'][$i] = explode("|",trim($t['c'][$i]));
        }
        if (!empty(
$_POST['recip']) and !empty($t['c'][$_POST['recip']-1])) {
        
$var['recip_n'] = $t['c'][$_POST['recip']-1][1];
        
$var['recip_e'] = $t['c'][$_POST['recip']-1][0];
          if (
function_exists("imap_binary")) {
            function 
mail_convert($str) {
            
$str trim(imap_binary(addcslashes($str"\"!@\\!@(!@)")));
            return 
$str;
            }
          
$var['subj'] = "=?Windows-1251?B?".trim(imap_binary(htmltoform($_POST['subject'])))."?=";
          
$var['header']  = "From: =?Windows-1251?B?".mail_convert(htmltoform($_POST['name']))."?= <".$_POST['email'].">\r\n";
          
$var['header'] .= "MIME-Version: 1.0\r\n";
          
$var['header'] .= "Content-Transfer-Encoding: 8bit\r\n";
          
$var['header'] .= "Content-Type: text/plain; charset=\"Windows-1251\"\r\n";
          
$var['header'] .= "X-Mailer: PHP v.".phpversion();
          
$var['message']  = htmltoform($_POST['message']);
          if (!empty(
$config['features'])) $var['message'] .= "\r\n\r\n---------------------------------------\r\nIP адрес отправителя: ".$_SERVER['REMOTE_ADDR'];

            if (
mail("=?Windows-1251?B?".mail_convert(htmltoform($var['recip_n']))."?= <".$var['recip_e'].">",$var['subj'],$var['message'],$var['header'])) {
            
$notice['ok'] = "Сообщение успешно отправлено";
            }
            else {
            
$notice['error'] = "Системная ошибка - сбой функции &quot;mail&quot;";
            }
          }
          else {
          
$notice['error'] = "Ошибка программы - недоступна функция &quot;imap_binary&quot;";
          }
        }
        else {
        
$notice['error'] = "Ошибка настоек программы - неверный получатель";
        }
      }
      else {
      
$notice['error'] = "Пожалуйста, проверьте правильность e-mail";
      }
    }
    else {
    
$notice['error'] = "Пожалуйста, введите ".implode(", ",$notice['error']);
    }
  }
echo 
"<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n";
  if (empty(
$notice['ok'])) {
  echo 
"<form name=\"SM\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."?a=m\">\r\n";
  }
  else {
 
  echo 
"<form name=\"GT\" method=\"POST\" action=\"".$config['url_path']."\">\r\n";
  }

  if (!empty(
$notice)) {
  echo 
"<tr><td align=\"center\">";
    if (!empty(
$notice['ok'])) {
    echo 
"<p><b><font color=\"#008000\">".$notice['ok']."!</font></b></p>";
    }
    elseif (!empty(
$notice['error'])) {
    echo 
"<p><b><font color=\"#800000\">".$notice['error']."!</font></b></p>";
    }
  echo 
"</td></tr>\r\n";
  }

  if (empty(
$notice['ok'])) {
  echo 
"<tr><td align=\"center\">";
  require(
"./form.inc");
  echo 
"</td></tr>\r\n";
  }
echo 
"<tr><td align=\"center\"><table border=\"0\" cellpadding=\"5\" cellspacing=\"0\"><tr><td>";

  if (empty(
$notice['ok'])) {
  echo 
"<div id=\"zemSubmit\"><input type=\"submit\" value=\"Отправить\"></div></td>\r\n";
  }
  else {
  echo 
"<div id=\"zemSubmit\"><input type=\"submit\" value=\"".$config['url_name']."\"></div>\r\n";
  }
echo 
"</form></table></table>\r\n";

?>


http://www.softtime.ru/scripts/mailattach.php - прочитала, единственное, что поняла - нужно добавить в form enctype='multipart/form-data'. А вот куда все остальное засовывать, не понимаю. Полный ноль в php. Поле в форме для выбора файла <input style="width: 220px" type=file name=mail_file maxlength=64>.

Спасибо огромное!

   
 
 автор: bronenos   (29.01.2007 в 12:04)   письмо автору
 
   для: piccarilla   (29.01.2007 в 11:48)
 

Насчет файлов не знаю, но я советовал бы бороться с ошибками не
if ($user!='') {
 if ($pass!='') {
  if ($email!='') {
   // ------ //
  }
 }
}

а так
if ($email=='') {
 // -- //
} elseif ($pass=='') {
 // -- //
} elseif ($email=='') {
 // -- //
} else {
 // ---------------- //
}

   
 
 автор: piccarilla   (29.01.2007 в 12:10)   письмо автору
 
   для: bronenos   (29.01.2007 в 12:04)
 

>Насчет файлов не знаю, но я советовал бы бороться с ошибками не, а так

Спасибо! А в чем разница, не подскажете? Чайница я полная ))

   
 
 автор: bronenos   (29.01.2007 в 12:21)   письмо автору
 
   для: piccarilla   (29.01.2007 в 12:10)
 

Разницы тут никакой, просто легче ориентироваться в собственном коде.
Я сталкивался с таким, когда приходилось обрабатывать по 15 ошибок и я еще делал так как вы.

   
 
 автор: piccarilla   (29.01.2007 в 12:58)   письмо автору
 
   для: bronenos   (29.01.2007 в 12:21)
 

Спасибо! Приняла к сведению. )

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования