Добрый день, задача такая: есть форма обратной связи для связи клиента с фирмой.
Все отилчно работает на локал хосте, ограничение убрал я в .htaccess теперь файлы загружаються любого размера, НО как доходит дело до
$text.=base64_encode(fread($file, filesize($_FILES['add']['tmp_name'])))."\n";
То скрипт тупо останавливается без объяснения причин. Если убрать base64_encode то все отлично, НО отправка вложенных файлов в письмо требует чтобы файл был закодирован в base64_encode.
Как быть? может как-то файл разбить на части закодировать в base64_encode по частям и потом в конце их объединить?
Зарастание благодарен.
1. ntro123 - 19 Февраля, 2012 - 17:17:18 - перейти к сообщению
2. illy - 21 Февраля, 2012 - 10:39:31 - перейти к сообщению
разбей на части:
и проверь этот скрипт. Если всё-равно не пашет-значит хостер ограничил 100%:
знаю - потому что вчера тоже самое делал клиенту.
Спойлер (Отобразить)
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?
- $title='Форма обратной связи | 10 КИЛОВОЛЬТ';
- $key='форма, обратная связь';
- $desc='Форма обратной связи ООО «10 киловольт», здесь Вы можете оперативно связаться с нашим менеджером.';
- $teg='<script type="text/javascript" src="/js/forma.js"></script>';
- ?>
- <h1>Форма обратной связи</h1>
- <?
- $name=$_POST['name'];
- $tel=$_POST['tel'];
- $text=$_POST['text'];
- $arrcheckbox=array(1=>'Трасформаторная подстанция',2=>'Воздушная линия электропередач',3=>'Подземная линия электропередач',4=>'Согласование эл. документации',5=>'Внутридомовая разводка',6=>'Внутриплощадочная разводка',7=>'Ремонтные работы',8=>'Разработка проектной документации');
- if(preg_match("#^[^-^а-я^0-9^a-z^!^? ^\(^\)^\*^ ]{1,50}$#i", $name) or $name=='Как к Вам обращаться?')
- $result='Неверно заполнено поле "Ваше имя".';
- $result='Неверно заполнено поле "Ваш контактный телефон".';
- $result='Неверно заполнено поле "Укажите вкратце, какие работы необходимо выполнить".';
- $result='Размер файла превышает 15 мегабайт.';
- else
- {
- $arr2=array(1=>$_POST['c1'],2=>$_POST['c2'],3=>$_POST['c3'],4=>$_POST['c4'],5=>$_POST['c5'],6=>$_POST['c6'],7=>$_POST['c7'],8=>$_POST['c8']);
- $text.="\n\r\n<br>\r\n";
- for($i=1; $i<9; $i++)
- if($arr2[$i]=='on')
- $text.="<br>\r\n".$arrcheckbox[$i].': Да';
- $text.="<br>\r\nТел.: ".$tel.", Имя: ".$name."<br><br>\r\n";
- $text.="<br>\r\nЗаказчик: ".$_POST['zak'];
- $text.="<br>\r\nПрисоединяемый объект: ".$_POST['obj'];
- $text.="<br>\r\nНеобходимая мощность: ".$_POST['kwt'];
- if($_POST['adres']!='')
- $text.="<br>\r\nАдрес обьекта: ".$_POST['adres'];
- $headers[] ="MIME-Version: 1.0";
- $headers[] ="Content-Type: multipart/mixed;boundary=\"$boundary\"; type=\"text/html;\"";
- }
- $headers[] ="From: \"Заказ с сайта 10kilovolt.ru\" <info@10kilovolt.ru>";
- $headers[] ="Subject: Тел.: ".$tel.', Имя: '.$name;
- $headers[] ="Reply-To: info@10kilovolt.ru";
- $headers[] ="Return-Path: info@10kilovolt.ru";
- $multipart[]= "--".$boundary;
- $multipart[]= "Content-Type: text/html; charset=windows-1251";
- $multipart[]= "Content-Transfer-Encoding: Quot-Printed\n";
- $multipart[]= $text;
- }
- else {
- $headers[] ="X-Mailer: PHP/" . phpversion()."\nContent-Type: text/html; charset=windows-1251\r\n\r\n";
- $multipart[]= $text;
- $multipart[]= "";
- }
- $multipart[]="--".$boundary;
- $multipart[]= "Content-Type: application/octet-stream; name=\"".$_FILES['add']['name']."\"";
- $multipart[]= "Content-Transfer-Encoding: base64";
- $multipart[]= "Content-Disposition: attachment; filename=\"".$_FILES['add']['name']."\"";
- $multipart[]= "";
- //$filecontent=file_get_contents($_FILES['add']['tmp_name']) or die("gets");
- //$multipart[]= chunk_split(base64_encode($filecontent)) or die("chunk");
- $multipart[]= chunk_split(base64_encode(fread($file, filesize($_FILES['add']['tmp_name'])))) or die("chunk");
- }
- else { $multipart[]= ""; }
- echo "Сообщение было отправлено";
- exit;
- if(mail('pobviktor@ya.ru', 'Заказчик: '.$name.', тел.: '.$tel.'. Заказ с сайта!', $multipart, $headers)){
- echo '<p>Сообщение было отправлено диспетчеру. В ближайшее время специалисты нашей компании свяжутся с Вами по указанным контактным данным. <a href="/">Перейти на главную страницу?</a></p>';
- $good=1;
- }
- else {
- $result='Произошла ошибка, попробуйте повторить отправку по форме через пару минут.';
- }
- }
- }
- echo '<p class="red">'.$result.'</p>';
- ?>
- <p>Если Вы по какой-то причине не смогли связаться с нами, в данном разделе Вы можете описать ту проблему, которая требует незамедлительного решения. Сообщение придет на электронную почту диспетчера. В кратчайшие сроки наши специалисты свяжутся с Вами, чтобы предоставить квалифицированную помощь в области электромонтажа</a>.</p><br>
- <form action="forma.php" method="post" enctype="multipart/form-data">
- <div class="frm">Форма обратной связи<input type="reset" value="Сброс" class="res"></div>
- <div>
- <p class="frn">Ваше имя: <span class="red">*</span> <input type="text" name="name" class="flr minp" value="Как к Вам обращаться?" maxlength="50"></p>
- <p class="frn">Ваш контактный телефон: <span class="red">*</span> <input type="text" name="tel" class="flr minp" value="+7 (999) 999-99-99" maxlength="50"></p>
- <p>Укажите вкратце, какие работы необходимо выполнить: <span class="red">*</span></p>
- <p><textarea name="text" class="textme"></textarea></p>
- <p><em>Поля отмеченные <span class="red">*</span> - обязательны для заполнения.</em></p>
- </div>
- <div id="vl"></div>
- <div class="twoneo">
- <p id="formne">Необязательные поля для заполнения</p>
- <p>Заказчик: <select name="zak"><option>Частное лицо</option><option>Частный предприниматель</option><option>Председатель дачного обьединения</option><option>Юридическое лицо</option></select></p>
- <p>Присоединяемый объект: <select name="obj"><option>Дом</option><option>Дачное объединение</option><option>Строящийся обьект</option><option>Помещение</option><option>Коммерческая недвижимость</option><option>Завод</option></select></p>
- <p>Необходимая мощность: <select name="kwt"><option>до 5 кВт</option><option>6-10 кВт</option><option selected>11-15 кВт</option><option>16-80 кВт</option><option>81-200 кВт</option><option>более 201 кВт</option></select></p>
- <p>Адрес обьекта: <input type="text" class="txtet" name="adres" maxlength="90"></p>
- <p>Необходимые работы:</p>
- <div class="smalltext">
- <div class="fll">
- <input type="checkbox" name="c1"> - Трасформаторная подстанция<br>
- <input type="checkbox" name="c2"> - Воздушная линия электропередач<br>
- <input type="checkbox" name="c3"> - Подземная линия электропередач<br>
- <input type="checkbox" name="c4"> - Согласование эл. документации
- </div>
- <div class="flr">
- <input type="checkbox" name="c5"> - Внутридомовая разводка<br>
- <input type="checkbox" name="c6"> - Внутриплощадочная разводка<br>
- <input type="checkbox" name="c7"> - Ремонтные работы<br>
- <input type="checkbox" name="c8"> - Разработка проектной документации
- </div>
- </div>
- <div id="addfile">Прикрепить файл (менее 15 МБ): <input type="file" name="add"></div>
- </div>
- <div class="frm"><input type="submit" class="subm" value="Отправить"></div>
- </form>
- <? endif;?>