cocacola
Постоялец
- Регистрация
- 4 Апр 2006
- Сообщения
- 137
- Реакции
- 48
- Автор темы
- #1
Имеется форма обратной связи, одной из функцией которой является прикрепление файлов к письму.
Столкнулся с такой проблемой что из прикрепляемого файла удаляется информация, после чего файл невозможно использовать!
Пример: через форму был отправлен текстовый файл со следующей информацией
Столкнулся с такой проблемой что из прикрепляемого файла удаляется информация, после чего файл невозможно использовать!
Пример: через форму был отправлен текстовый файл со следующей информацией
на почту пришел файл уже с такой информациейВозможность создания файловых вложений определяется для каждого из форумов в отдельности, и возможно вы сможете это делать в одном форуме, но не...
файл отвечающий за сборку письма имеет следующий кодаждого из форумов в отдельности, и возможно вы сможете это делать в одном форуме, но не...
PHP:
<?php
//часть кода отсутствует
//=======Прикрепление файла======//
if(!empty($fid))
{
for($i = 0; $i < sizeof($fid); $i++)
{
$key = 'file-id-' . $fid[$i];
//dump($key);
if(is_uploaded_file($_FILES[$key]['tmp_name']))
{
$uploaddir=ROOT_DIR."/img/";
$file_name=$_FILES[$key]["name"];
$uploadfile=$uploaddir.$file_name;
$size=$_POST['size']*1024;
if($_FILES[$key]['size'] > $size)
{
$file_st="error"; msgbox($form_lang['USER_TEXT_3'],"<center><font color='red' size=2>{$form_lang['USER_TEXT_4']} {$_POST['size']} Kb.</font></center>");
}
else
{
if(move_uploaded_file($_FILES[$key]['tmp_name'], $uploadfile))
{
echo $uploadfile;
$file[$i]=$uploadfile;
$file_type[$i]=$_FILES[$key]["type"];
}
}
}
}
}
//=============================//
if($_POST['email']) { $from_email=$_POST['email']; } else { $from_email=$config['admin_mail']; }
if($row2['code']==1) {
$code.=<<<HTML
<script language='JavaScript' type="text/javascript">
function reload () {
var rndval = new Date().getTime();
document.getElementById('dle-captcha').innerHTML = '<a onclick="reload(); return false;" href="#">{$lang['reload_code']}</a><br><img src="{$path['path']}engine/modules/antibot.php?rndval=' + rndval + '" border="0" width="120" height="50">';
};
</script>
HTML;
$code.="<p><font color='red' size=2>*</font> <b>{$form_lang['USER_TEXT_5']}</b><br>
<span id='dle-captcha'><a onclick='reload(); return false;' href='#'>{$lang['reload_code']}</a><br><img src='{$path['path']}engine/modules/antibot.php' alt='{$lang['sec_image']}' border='0'></span>
<br><input type='text' name='passe' style='width:113px;'></p>";
}
$code.="<p><input type='submit' name='ok' value='{$form_lang['USER_TEXT_6']}'></form></p>";
$code.="{$form_lang['USER_TEXT_7']} <font color='red' size=2>*</font> {$form_lang['USER_TEXT_8']}";
}
#####
if($row2['code']==1) {
if($_POST['passe']==$_SESSION['sec_code_session']) { $stop_code="ok"; } else { $stop_code="err"; }
} else { $stop_code="ok"; }
if($_POST['ok']) {
// инициализация переменной, сообщающей об ошибке.
$obz = '';
$res=$db->query("SELECT * FROM `$db_items` WHERE id_project='{$_GET['id']}'"); $row=$db->get_row($res);
do
{
if($row['objaz']==1)
{
$name="pole_".$row['id'];
// Если поле обязательное, то проверяем его на корректность //
switch( $row['type'] )
{
case 'text':
case 'textarea':
{
if($_POST[$name]=="")
{
//print 'te';
$obz="<center><font color='red' size=2>{$form_lang['USER_TEXT_9']}</font>";
}
break;
}
case 'radio':
{
if (!(isset($_POST[ $name ]) && $_POST[ $name ] !== ''))
{
//print 'ra: '.$_POST[$name];
$obz="<center><font color='red' size=2>{$form_lang['USER_TEXT_9']}</font>";
}
break;
}
case 'checkbox':
{
$values = explode(',', $row['value']);
$count_sel = 0;
for($i=0; $i<count($values); $i++) {
if (isset($_POST[$name.'_'.$i])) {
$count_sel++;
}
}
if ($count_sel == 0) {
$obz="<center><font color='red' size=2>{$form_lang['USER_TEXT_9']}</font>";
}
/*
if (!isset($_POST[$name]))
{
//print 'chk: '.$_POST[$name];
$obz="<center><font color='red' size=2>{$form_lang['USER_TEXT_9']}</font>";
}
*/
break;
}
case 'select':
{
/*if (!isset($_POST[$name]) ||
empty($_POST[$name]) ||
(is_array($_POST[$name]) && count($_POST[$name])==0) ||
(!is_array($_POST[$name]) && ($_POST[$name] == '-1'))) */
if (@$_POST[ $name ] === '')
{
//print 'sel';
$obz="<center><font color='red' size=2>{$form_lang['USER_TEXT_9']}</font>";
}
break;
}
}
//$name="pole_".$row['id'];
//if($_POST[$name]=="") { $obz="<center><font color='red' size=2>{$form_lang['USER_TEXT_9']}</font>"; }
}
} while($row=$db->get_row($res));
if($file_st!="error") {
if(!$obz) {
if ($stop_code=="ok") {
$subject=$_POST['subject'];
$msg=msg();
$row2=$db->super_query("SELECT * FROM `$db_project` WHERE id={$_GET['id']}");
if($row2['email']!="") {
print 'before send';
XMail($from_email, $row2['email'], $subject, $msg);
} else {
$val=explode(",",$row2['email2']); foreach($val as $v) { XMail($from_email, $v, $subject, $msg);}
}
} else { msgbox($form_lang['USER_TEXT_3'],"<center><font color='red' size=2>{$form_lang['USER_TEXT_10']}</font></center>"); }
} else { msgbox($form_lang['USER_TEXT_3'],$obz."<br>{$form_lang['USER_TEXT_7']} <font color='red' size=2>*</font> {$form_lang['USER_TEXT_8']}</center>"); }
}
}
} else { $code.="<center><h1>{$row2['text_not_prav']}</h1></center>"; }
//-------Функции-------//
### Функция Отправки на email
function XMail($from, $to, $subject, $msg) {
global $form_lang,$config,$file;
if(isset($file))
{
$un = strtoupper(uniqid(time()));
$head = "From: $from\n";
$head .= "To: $to\n";
$head .= "Subject: $subject\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: $from\n";
$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type:multipart/mixed;";
$head .= "boundary=\"----------".$un."\"\n";
$zag = "";
$zag .= "------------".$un."\nContent-Type:text/html; charset=\"windows-1251\"\n";
$zag .= "Content-Transfer-Encoding: 8bit\n\n$msg\n";
$zag .= "------------".$un."\n";
for($i = 0; $i < sizeof($file); $i++)
{
$f = @fopen($file[$i],"rb");
$zag .= "Content-Type: ".$file_type[$i].";";
$zag .= "name=\"".basename($file[$i])."\"\n";
$zag .= "Content-Transfer-Encoding:base64\n";
$zag .= "Content-Disposition:attachment;";
$zag .= "filename=\"".basename($file[$i])."\"\n";
$zag .= chunk_split(base64_encode(fread($f,filesize($file[$i]))))."\n";
$zag .= "------------".$un."\n";
fclose($f); unlink($file[$i]);
}
}
else
{
$un = strtoupper(uniqid(time()));
$head = "From: $from\n";
$head .= "To: $to\n";
$head .= "Subject: $subject\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: $from\n";
$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type: text/html; charset=windows-1251\n";
//$head .= "Content-Length: ".strlen($msg)."\n";
$zag = $msg;
}
$result=mail("$to", $subject, $zag, $head);
if ($result!=TRUE) { msgbox($form_lang['USER_TEXT_13']," {$form_lang['USER_TEXT_11']} <a href='{$config['http_home_url']}'>{$form_lang['USER_TEXT_12']}</a>");
} else { msgbox($form_lang['USER_TEXT_13']," {$form_lang['USER_TEXT_14']} <a href='{$config['http_home_url']}'>{$form_lang['USER_TEXT_12']}</a>"); }
}
### Функция Сборки текста сообщения
function msg()
{
global $db_items,$db_project,$db,$form_lang;
$date=date("d/m/Y - H:i:s");
$proj_id = intval(@$_GET['id']);
$res=$db->query("SELECT * FROM `$db_items` WHERE id_project='{$proj_id}'");
$row=$db->get_row($res);
do
{
$id=$row['id'];
$name="pole_".$id;
unset($tex);
if($row['type']=="radio" or $row['type']=="select")
{
$n=$_POST[$name];
$array = $row['value'];
$val = explode(",",$array);
$tex="{$val[$n]}";
}
if($row['type']=="checkbox")
{
$array = $row['value'];
$val=explode(",",$array);
foreach($val as $k=>$v)
{
$name2="pole_".$id."_".$k;
//$name2 = 'pole_'.$id;
if ( isset($_POST[$name2]) )
{
$tex.="{$val[$k]}<br>";
}
}
}
if($row['type']=="text" || $row['type'] == 'textarea')
{
$tex=$_POST[$name];
}
$msg.="<dl><dt><font size=4>{$row['title']}</font></dt>";
$msg.="<dd><font size=3>{$tex}</font></dd></dl>";
} while( $row = $db->get_row($res) );
$msg.="<br><b>{$form_lang['USER_TEXT_15']}</b> $date";
return $msg;
}
### Функция Сборка полей типа: (radio,checkbox,select)
function radio($id)
{
global $db_items,$db;
$val=array();
$ro=$db->super_query("SELECT * FROM `$db_items` WHERE id='$id'"); $array=$ro['value'];
$val=explode(",",$array);
$pol="";
foreach($val as $n=>$v)
{
$name="pole_".$ro['id']; $name2="pole_".$ro['id']."_".$n;
if($ro['type']=="checkbox") { $pol.="<input name='$name2' value=$n type='{$ro['type']}'>{$val[$n]} "; }
elseif($ro['type']=="radio") { $pol.="<input name='$name' value=$n type='{$ro['type']}'>{$val[$n]} "; }
elseif($ro['type']=="select") { $sel1="<select name='$name'><option value=''></option>"; $pol.="<option value=$n>{$val[$n]}</option>"; $sel2="</select>"; }
}
return $sel1.$pol.$sel2;
}
// часть кода отсутствует
?>