1. PHP / Говнокод #11935

    +46

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    function send_attach(
     $to, //!< Email получателя
     $from, //!< Email отправителя
     $task, //!< Тема письма
     $text //!< Текст письма
     ) {
     
     $boundary = "--".md5(uniqid(time())); // генерируем разделитель
     $subject= $task." [".stripslashes($_SERVER['HTTP_HOST'])."]";
     $subject ='=?windows-1251?B?'.base64_encode($subject).'?=';
     $headers = "To: ".$to."\r\n";
     $headers="From: =?windows-1251?B?".base64_encode(stripslashes($_SERVER['HTTP_HOST']))."?= <".$from.">\r\n";
     $headers .= "MIME-Version: 1.0\n";
     $headers .= "Content-Type: multipart/mixed; boundary=\""
     .$boundary."\"\r\n";
     $headers .= "--".$boundary."\r\n";
     $headers .= "Content-type: text/html; charset=windows-1251 \r\n";
     $headers.="Subject: ".$subject."\r\n";
     $headers.="X-Mailer: PHP/".phpversion()."\r\n";
     $headers .= "Content-Transfer-Encoding: Quot-Printed\r\n\r\n";
     $headers .= '<html><head><title>Заявка с сайта</title></head>';
     $headers .= '<body>'.$text.'</body></html>';
     //.'<img src=\'24.jpg\' alt="img">
     $message_part = "";
     
     if(
     isset($_FILES['f_file']['tmp_name']) and
     is_array($_FILES['f_file']['tmp_name'])
     ) {
     foreach($_FILES['f_file']['name'] as $k => $v) {
     if (trim($v) != '') {
     
     $fname = $_FILES['f_file']['tmp_name'][$k];
     $fp = fopen($fname,"r");
     $file = fread($fp, $_FILES['f_file']['size'][$k]);
     fclose($fp);
     
     $message_part .= "--$boundary\r\n";
     $message_part .= "Content-Type: application/octet-stream\r\n";
     $message_part .= "Content-Transfer-Encoding: base64\r\n";
     $message_part .= "Content-Disposition: attachment; filename = \""
     .$_FILES['f_file']['name'][$k]."\"\r\n\r\n";
     $message_part .= chunk_split(base64_encode($file))."\r\n";
     
     }
     }
     }
     $message_part .= "--".$boundary."--\n";
     
     
     return mail($to, $subject, $message_part, $headers);
    
     }

    Функция отправки письма с сайта. Технически - вроде работает. А так, вполне себе "обфускация" получилась.

    Запостил: Lblss, 16 Октября 2012

    Комментарии (5) RSS

    • разве что не гибко. А так говна нет.
      Ответить
      • Не только не гибко, но и совершенно нетестируемо ($_FILES, $_SERVER, mail()). Нет чтобы использовать Swiftmailer или еще что-нибудь. Велосипедисты повсюду!
        Ответить
      • $headers .= "Content-Transfer-Encoding: Quot-Printed\r\n\r\n";
        $headers .= '<html><head><title>Заявка с сайта</title></head>'

        А 8битные символы в номинально 7битном потоке?
        Ответить
        • Вынос мозга это. Первая строка цитируемого кода - еще хидеры, а вторая - уже совсем не хидеры, хотя, пихается туда же, в переменную $headers. Все смешалось в голове автора.
          Ответить
    • И не лень была кому-то в этом разбираться. Хотя, можно же сниффнуть/сохранить/добыть из отправленных local mailbox письмо в raw-формате и просто заменить данные своими.
      Ответить

    Добавить комментарий