Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Erikson

Страницы: [1]
1
Помогите разобраться с сабжем. Все сделал, файл отправляется корректно, но есть проблема с mime-типом, никак не могу понять, как его определять. Уже скурил несколько мануалов - недогнал... Как использовать $_FILES при заливке на сервак файла понял, но в данном случае не спасает. Сейчас сервак отправляет файлы text/plain по умолчанию (пока посылает текстовики, но в планах будут картинки, архивы...).

Ниже приведены коды. В mailclass.inc изменил значение по умолчанию $encoding_type в функции attach_file(). С формой в sendfile.html поизголялся, не обращайте внимания.


//sendfile.html
послать файл









Кому послать
Что послать



Сабж
Текст





//testmail.php
include "mailclass.inc";
$mail = new multi_mail;
$mail->from = "admin@eriksona.net";
$mail->to = $to;
$mail->subject = $subjz;
$mail->body = $bodyz;
copy($_SERVER["DOCUMENT_ROOT"].$pathz.$filez,$_SERVER["DOCUMENT_ROOT"]."/test/".$filez.$extz);
$filez=$filez.$extz;
$file_name = $_SERVER["DOCUMENT_ROOT"]."/test/".$filez;
$file_desc = fopen($file_name,"r");
$file_data = fread($file_desc,filesize($file_name));
             fclose($file_desc);
echo"Путь к файлу:  $file_name
";
$file_size = filesize($file_name);
echo"Размер файла:  $file_size
";
chdir($_SERVER["DOCUMENT_ROOT"]."/test/");
$mail -> attach_file($filez,$file_data);
$mail->send_mail();
echo"Отправка на $mail->to прошла успешно!";
chdir(\'../\');
?>


//mailclass.inc
class multi_mail
{
  var $from;
  var $parts;
  var $to;
  var $headers;
  var $body;

  function multi_mail()
  {
       $this -> from = "";
       $this -> to = "";
       $this -> body = "";
       $this -> headers = Array();
       $this -> subject = "";
  }

  function attach_file($file_name = "" ,$file_content,$encoding_type = "text/plain")
  {
    $this -> headers[] = array(
             "name" => $file_name,
             "content" => $file_content,
             "encode" => $encoding_type
             );
  }

  function build_letter($header)
  {
    $letter = $header["content"];
    if ($header["encode"] != "text/plain"):
    $letter = chunk_split(base64_encode($letter));
    $encoding = "base64";
    else:
    $encoding = $header["encode"];
    endif;
    return "Content-Type: ".$header["encode"].
           ($header["name"]? ".; name = \\"".$header["name"]."\\"" : "")."\\nContent-Transfer-Encoding: $encoding\\n\\n$letter\\n";
  }

  function set_multipart_mail()
  {
    $boundary = \'b\'.md5(uniqid(time()));

    $multipart = "Content-Type: multipart/mixed; boundary =$boundary\\n\\nThis is a MIME encoded letter\\n\\n--$boundary";
    for($step = sizeof($this->headers)-1; $step >=0; $step--)
    {
      $multipart .= "\\n".$this->build_letter($this->headers[$step])."--$boundary";
    }
    return $multipart .= "--\\n";
  }

  function get_full_message()
  {
    $mime = "";
    if (!empty($this->from)):
       $mime .= "From: ".$this->from." \\n";
    endif;
    if (!empty($this->body)):
       $this -> attach_file("",$this->body,"text/plain");
       $mime .= "MIME-Version: 1.0\\n".$this->set_multipart_mail();
    endif;

    return $mime;
  }

  function send_mail()
  {
    $mime = $this -> get_full_message(false);
    mail($this->to,$this->subject,"",$mime);
  }
}
?>

2
PHP / проверка начала сценария
« : 26 Февраля 2007, 01:59:47 »
Сразу прошу не плеваться, я начинающий... Ну так вот.
Захотел сделать отправку письма себе на ящик при посещении кем-либо моего сайта. Отправку сделал быстро, ничего сложного, но при прогулке по сайту генерируются страницы и письма постоянно отправляются. Т.е. отправляется не одно письмо, а пачка (по одному за каждый клик). Мне достаточно одного. Начитался всяких книг про проверочные сценарии и ничего не понял. Прошу популярнее объяснить, конечно если я не отниму сильно много времени.

Лист ниже. Если я убираю ремарки с session_start и session_register он у меня не гуляет по ссылкам в сайте, т.е. не работают ссылки типа get.

//session_start();
//session_register(\'visit_count\');
?>





include(\'head.php\');        // Открытие шапки сайта
include (\'fotoviewer.php\');
include(\'footer.php\');      // Нижний колонтитул

if (!IsSet($visit_count)) {
   $address = "admin@site.ru";
   $subject = "Посещение!";
   $sendday = date(\'j.m.Y\');
   $sendtime = date(\'H:i:s\');
   $body = "Довожу до вашего сведения, что $sendday в $sendtime было зарегистрировано посещение.";
   mail($address, $subject, $body, "From: http://www.site.com");
}

?>


3
PHP / одинаковые name в checkbox
« : 20 Февраля 2007, 01:12:47 »
Цитировать
hanslinger:
Если хочешь красивые урлы, не используй в форме GET, вот и все.


post не позволит сохранять ссылки на страницы. Или я не прав?

4
PHP / одинаковые name в checkbox
« : 18 Февраля 2007, 01:02:22 »
Цитировать
html_coder:
Ну а чем тебе не подходит способ от hanslinger?


Ну я объяснял выше, что урл получается совсем не корректный.

Цитировать
html_coder:
Если ты хочешь красивые урлы, то нет! А что за требование такое одним PHP?


Изучаю PHP. Пытаюсь узнать возможности. А тема возникла при написании конкретного сайта, зашел в ступор. Обычно сам разбирался, а тут и книги не помогли. :-)

5
PHP / одинаковые name в checkbox
« : 17 Февраля 2007, 17:24:45 »
Так работает. Значит одним PHP не реализовать?

6
PHP / одинаковые name в checkbox
« : 17 Февраля 2007, 15:04:08 »
Тогда урл получается вида ?section=weather&city%5B%5D=SPb&city%5B%5D=Nerungri&city%5B%5D=Salavat.

7
PHP / одинаковые name в checkbox
« : 17 Февраля 2007, 05:39:25 »
Привет, доки. Прошу помощи!
Пытаюсь создать страницу, которая выводит данные по трем городам. Листинг (weather_info.php):

if (!IsSet($_GET[\'city\'])) {
   print("Выберите город:\\n
");
   print("
\\n");
   print("\\n");
   print(" Санкт-Петербург
\\n");
   print(" Нерюнгри
\\n");
   print(" Салават
\\n");
   print("\\n");
   print("
\\n");
} else {
   if (IsSet($_GET[\'city\']) && ($_GET[\'city\'] == (("SPb") or ("Nerungri") or ("Salavat")))) {
      if ($_GET[\'city\'] == "SPb") {
         print("Санкт-Петербург!!!!!!");
      }
      if ($_GET[\'city\'] == "Nerungri") {
         print("Нерюнгри!!!!!!");
      }
      if ($_GET[\'city\'] == "Salavat") {
         print("Салават!!!!!!");
      }
   }
}

Это часть сайта. Должна выводить инфу о погоде. Смысл в том, что когда URL выглядит ?section=weather должен выводиться список городов (и выводится). Когда выбираешь город (URL ?section=weather&city=SPb) то выводится инфа о Санкт-Петербурге, но когда выбираешь несколько городов, то выводится инфа о последнем выбранном городе. Судя по урлу (?section=weather&city=SPb&city=Nerungri&city=Salavat) так и должно быть.

Так как же сделать правильно, чтоб при выборе нескольких городов выводилась инфа обо всех выбранных городах? Или хотябы как привести урл к нормальной форме, типа ?section=weather&city=SPb+Nerungri+Salavat или ?section=weather&city=SPb,Nerungri,Salavat? Не хотелось бы заморачиваться с CGI, а решить все посредством PHP.

Страницы: [1]