"Премиум"
Показано с 1 по 4 из 4

Тема: Оффтоп. Кто шарит в PHP? :) Нужна помощь

  1. #1

    Регистрация
    31.05.2010
    Адрес
    Иркутск
    Сообщений
    484
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз

    Оффтоп. Кто шарит в PHP? :) Нужна помощь

    Вобщем ситуация такая. На сайте есть функция отправки со странички текста с вложением(файлом) на ящик организации. Т.е. Указываешь Фамилию, телефон, описание, прикрепляешь файл и нажимаешь отправить. Письмо с вложением приходит на почту организации.. Это мне писал один парнишка, и он сделал почемуто отправку файла через сайт(т.е. сначало на сайт в папку копируется а потом от туда отправляется по адресу) И выяснилась недавно проблема, оказывается мой хостинг не поддерживает загрузку файлов таким образом более 2 мб...(т.е. большие файлы не приходят) Хотя Через FTP все нормально... И надо переписать немного код. Чтобы он не копировал файл на сайт, а сразу от клиента отправлял на почту...

    Кто сможет помочь, за небольшое вознаграждение или по доброте душевной??

    Это мой код.

    <?php
    $name = $_POST['name'];
    $tel = $_POST['tel'];
    $mail = $_POST['mail'];
    $text = $_POST['text'];

    $mail_to = "u1111r-irk@bk.ru"; // Адрес, на который будем отправлять.
    $thm = "Онлайн-заявка"; // Тема письма.
    $picture = "";

    $path = '/home/srv23857/htdocs/tmp/' . $_FILES['file']['name'];
    $path2 = $_FILES['file']['name'];

    // Если поле выбора вложения не пустое - закачиваем его на сервер
    if (!empty($_FILES['file']['tmp_name']))
    {
    // Закачиваем файл
    //$path = $_FILES['file']['name'];
    if (copy($_FILES['file']['tmp_name'], $path)) $picture = $path;
    }


    // Обрезаем поля, которые не должны быть длиннее 30 символов.
    if ($name !='' ){$name = substr($name,0,30);}
    if ($tel !=''){$tel = substr($tel,0,30);}
    if ($mail!=''){$mail = substr($mail,0,30);}

    $msg = "Имя: $name\nТелефон: $tel\nE-mail: $mail\nСообщение: $text\n\nIP: $REMOTE_ADDR";

    // Отправляем почтовое сообщение
    if(empty($picture))
    {
    mail($mail_to, $thm, $msg);
    }
    else
    {
    $msg = "Имя: $name

    Телефон: $tel

    E-mail: $mail

    Сообщение: $text


    IP: $REMOTE_ADDR";

    send_mail($mail_to, $thm, $msg, $picture);
    unlink($picture);
    }

    // Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)
    function send_mail($to, $thm, $html, $path)
    { if ($path) {
    $fp = fopen($path,"rb");}
    if (!$fp)
    {
    print "Файл $path не может быть прочитан";
    exit();
    }

    $file = fread($fp, filesize($path));
    fclose($fp);
    $EOL = "\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
    $boundary = "--".md5(uniqid(time())); // любая строка, которой не будет ниже в потоке данных.
    $headers = "MIME-Version: 1.0;$EOL";
    $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
    $multipart = "--$boundary$EOL";
    $multipart .= "Content-Type: text/html; charset=windows-1251$EOL";
    $multipart .= "Content-Transfer-Encoding: base64$EOL";
    $multipart .= $EOL; // раздел между заголовками и телом html-части
    $multipart .= chunk_split(base64_encode($html));

    $multipart .= "$EOL--$boundary$EOL";
    $multipart .= "Content-Type: application/octet-stream; name=" . basename($path) . $EOL . "";
    $multipart .= "Content-Transfer-Encoding: base64$EOL";
    $multipart .= "Content-Disposition: attachment; filename=" . basename($path) . $EOL . "";
    $multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла
    $multipart .= chunk_split(base64_encode($file));
    $multipart .= "$EOL--$boundary--$EOL";

    if(!mail($to, $thm, $multipart, $headers))
    {
    echo "К сожалению, письмо не отправлено";
    exit();
    }
    }
    header('Refresh: 3; URL=index.html');
    echo '<center>Ваше сообщение отправлено!
    Через 3 секунды вы будете перенаправлены.</center>';

    ?>

  2. #2
    Аватар для Virusoff
    Регистрация
    26.12.2009
    Адрес
    Irkutsk
    Сообщений
    640
    Сказал(а) спасибо
    4
    Поблагодарили 10 раз
    напиши в сапорт, попроси что-бы увеличили эти самые 2 мб.. и ничего переписывать не понадобится) это стандартная настройка в php.ini, ничего заурядного)

  3. #3

    Регистрация
    31.05.2010
    Адрес
    Иркутск
    Сообщений
    484
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз
    Цитата Сообщение от Virusoff
    напиши в сапорт, попроси что-бы увеличили эти самые 2 мб.. и ничего переписывать не понадобится) это стандартная настройка в php.ini, ничего заурядного)
    Так и сделал, написал сразу в поддержку, а они ответили
    "Нет, к сожалению, для шаред-хостинга это не возомжно. Используйте для загрузки фтп или сфтп клиент."

  4. #4

    Регистрация
    31.05.2010
    Адрес
    Иркутск
    Сообщений
    484
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз
    Пееделал немного вроде обошёл загрузку на сайт, но всё равно не работает,.... вот код переделаный слегка

    <?php
    $name = $_POST['name'];
    $tel = $_POST['tel'];
    $mail = $_POST['mail'];
    $text = $_POST['text'];

    $mail_to = "univer-irk@bk.ru"; // Адрес, на который будем отправлять.
    $thm = "Онлайн-заявка"; // Тема письма.
    $picture = "";

    //$path = '/home/srv23857/htdocs/tmp/' . $_FILES['file']['name'];//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!Изменил!!!! Закоментил загрузку
    $path2 = $_FILES['file']['name'];

    // Если поле выбора вложения не пустое - закачиваем его на сервер
    if (!empty($_FILES['file']['tmp_name']))
    {
    // Закачиваем файл
    $path = $_FILES['file']['name']; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Изме ил
    if (copy($_FILES['file']['tmp_name'], $path)) $picture = $path;
    }


    // Обрезаем поля, которые не должны быть длиннее 30 символов.
    if ($name !='' ){$name = substr($name,0,30);}
    if ($tel !=''){$tel = substr($tel,0,30);}
    if ($mail!=''){$mail = substr($mail,0,30);}

    $msg = "Имя: $name\nТелефон: $tel\nE-mail: $mail\nСообщение: $text\n\nIP: $REMOTE_ADDR";

    // Отправляем почтовое сообщение
    if(empty($picture))
    {
    mail($mail_to, $thm, $msg);
    }
    else
    {
    $msg = "Имя: $name

    Телефон: $tel

    E-mail: $mail

    Сообщение: $text


    IP: $REMOTE_ADDR";

    send_mail($mail_to, $thm, $msg, $picture);
    unlink($picture);
    }

    // Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)
    function send_mail($to, $thm, $html, $path)
    { if ($path) {
    $fp = fopen($path,"rb");}
    if (!$fp)
    {
    print "Файл $path не может быть прочитан";
    exit();
    }

    $file = fread($fp, filesize($path));
    fclose($fp);
    $EOL = "\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
    $boundary = "--".md5(uniqid(time())); // любая строка, которой не будет ниже в потоке данных.
    $headers = "MIME-Version: 1.0;$EOL";
    $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
    $multipart = "--$boundary$EOL";
    $multipart .= "Content-Type: text/html; charset=windows-1251$EOL";
    $multipart .= "Content-Transfer-Encoding: base64$EOL";
    $multipart .= $EOL; // раздел между заголовками и телом html-части
    $multipart .= chunk_split(base64_encode($html));

    $multipart .= "$EOL--$boundary$EOL";
    $multipart .= "Content-Type: application/octet-stream; name=" . basename($path) . $EOL . "";
    $multipart .= "Content-Transfer-Encoding: base64$EOL";
    $multipart .= "Content-Disposition: attachment; filename=" . basename($path) . $EOL . "";
    $multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла
    $multipart .= chunk_split(base64_encode($file));
    $multipart .= "$EOL--$boundary--$EOL";

    if(!mail($to, $thm, $multipart, $headers))
    {
    echo "К сожалению, письмо не отправлено";
    exit();
    }
    }
    header('Refresh: 3; URL=index.html');
    echo '<center>Ваше сообщение отправлено!
    Через 3 секунды вы будете перенаправлены.</center>';

    ?>

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
-->