Ответы пользователя по тегу PHP
  • Как задать id через запятую in_array?

    @Heyhihello
    Ответ написан
    Комментировать
  • Как проверить работоспособность функции сайта на macbook?

    @Heyhihello
    А еще можно виртуальную машину поставить. Образы El Capitan есть на русских торрентах для vmware.
    Ответ написан
    Комментировать
  • Какая IDE максимально похожа на Notepad++?

    @Heyhihello
    Notepad++ - это редактор, но никак не IDE.

    Если рассматривать редакторы кода, то конечно же Sublime Text или Atom. Я не понимаю как Вы писали в Notepad, если честно. В любом случае, можно найти темы которые повторят Вами любимый Notepad, только функционал возрастет. Atom - бесплатная, Sublime Text стоит около 30 долларов вроде.

    Если рассматривать IDE, то дико советую PhpStorm. Если Вы студент, то лицензию можно получить по ISIC или студенческому имейлу на целый год вперед. Если Вас конечно же интересует лицензионный софт.
    Ответ написан
    Комментировать
  • Как разрешить ошибку mail(): Multiple or malformed newlines found in additional_header?

    @Heyhihello Автор вопроса
    xtreme: Получается, только в одном месте нужно оставить два $eol подряд? Вот так?

    // Email header
                    $header = "From: " . $user_name . " <" . trim($_POST['contact_user_email']) . ">" . PHP_EOL;
                    $header .= "Reply-To: " . trim($_POST['contact_user_email']) . PHP_EOL;
                    $header .= "MIME-Version: 1.0" . PHP_EOL;
    
    
                    $header .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"" . PHP_EOL;
                    $header .= "This is a multi-part message in MIME format." . PHP_EOL;
                    $header .= "--" . $boundary . PHP_EOL . PHP_EOL;
    
                    // Email content
                    // Content-type can be text/plain or text/html
                    $header .= "Content-type:text/plain; charset=iso-8859-1" . PHP_EOL;
                    $header .= "Content-Transfer-Encoding: 7bit" . PHP_EOL;
                    $header .= "$message" . PHP_EOL;
                    $header .= "--" . $boundary . PHP_EOL;
    
                    // Attachment
                    $header .= "Content-Type: application/xml; name=\"" . $file_name . "\"" . PHP_EOL;
                    $header .= "Content-Transfer-Encoding: base64" . PHP_EOL;
                    $header .= "Content-Disposition: attachment; filename=\"" . $file_name . "\"" . PHP_EOL;
                    $header .= $content . PHP_EOL;
                    $header .= "--" . $boundary . "--";


    Я добавил еще такую вот функцию и обернул $headers при отправке в нее:

    function validateMail($str) {
        return str_replace(array('\r\r', '\r\0', '\r\n\r\n', '\n\n', '\n\0', PHP_EOL . PHP_EOL), '', $str);
    }


    Теперь вместо ошибки просто отображается NULL и сообщение не отправляется. (UPD. Стоял лимит от хостинга в 20 сообщений на внешние ящики. А сам код работал нормально.)

    UPD. Ответ на 2ой комментарий.

    Честно сказать, вот те письма, что отправлялись без проблем. Как видно тут больше пустых строк и почему-то отправлялось. Опять же, очень странно, что один и тот же код работал какое-то время, а потом резко перестал. :)
    f7a889e31b134d0e9eb26b9a2b9f99f2.png

    UPD. Решение проблемы:

    Лучше всего использоваться PHP_EOL вместо \n или \r\n - сама определяется в зависимости от ОС
    И разделить headers

    $header = "From: " . $from . $endl;
                   $header .= "Reply-To: " . $user_email . $endl;
                    $header .= "MIME-Version: 1.0" . $endl;
    
                    $header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"" . $endl . $endl;
                    $emessage = "--" . $uid . "\n";
                    $emessage .= "Content-type:text/html; charset=utf-8\n";
                    $emessage .= "Content-Transfer-Encoding: 7bit\n\n";
                    $emessage .= $message . "\n\n";
    
                    $emessage .= "--" . $uid . "\n";
                    $emessage .= "Content-Type: application/octet-stream; name=\"" . $file_name . "\"\n";
                    $emessage .= "Content-Transfer-Encoding: base64\n";
                    $emessage .= "Content-Disposition: attachment; filename=\"" . $file_name . "\"\n\n";
                    $emessage .= $content . "\n\n";
    
                    $emessage .= "--" . $uid . "--";


    Отправлять так:
    mail($to, $subject, $emessage, $header);

    У меня проблема была в этом и в том, что на хостинге лимит в 20 сообщений на внешние ящики стоит. :) Капец злой был.
    Ответ написан