Макс

форма обратной связи с прикреплением фото

Recommended Posts

Здравствуйте, обращаюсь к вам за помощью, может кто-то поможет решить трабл.

Нашел форму обратной связи с прикреплением фото ( http://www.php-s.ru/sendmail/phMailer/) установил все норм отправляется на почту с фотографиями, все поля приходят русской кириллицей,  но поле "описание" почему то на почту приходит кракозябрами, я так понимаю надо где то кодировку поменять, кому не сложно взгляните на код, может там решение в одной строчке.. 

post-2088-0-60900500-1433061347_thumb.pn

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

<?php

// This will show in the browsers title bar and at the top of the form.

$websitename="ihouse24.ru";

 

// Allowed file types. Please remember to keep the format of this array, add the file extensions you want

// WITHOUT the dot. Please also be aware that certain file types (such as exe) may contain malware.

$allowtypes=array("zip", "rar", "txt", "doc", "jpg", "png", "gif", "odt", "xml");

 

// What's your email address? Seperate email addresses with commas for multiple email addresses.

$myemail="Maxfactor16@gmail.com";

 

// What priority should the script send the mail? 1 (Highest), 2 (High), 3 (Normal), 4 (Low), 5 (Lowest).

$priority="3"

 

// Should we allow visitors to attach files? How Many? 0 = Do not allow attachments,

// 1 = allow only 1 file to be attached, 2 = allow two files etc.

$allowattach="10";

 

// Maximum file size for attachments in KB NOT Bytes for simplicity. MAKE SURE your php.ini can handel it,

// post_max_size, upload_max_filesize, file_uploads, max_execution_time!

// 2048kb = 2MB,       1024kb = 1MB,     512kb = 1/2MB etc..

$max_file_size="1024";

 

// Maximum file size for all attachments combined in KB. MAKE SURE your php.ini can handel it,

// post_max_size, upload_max_filesize, file_uploads, max_execution_time!

// 2048kb = 2MB,       1024kb = 1MB,     512kb = 1/2MB etc..

$max_file_total="2048";

 

// Value for the Submit Button

$submitvalue=" Send Email "

 

// Value for the Reset Button

$resetvalue=" Reset Form ";

 

// Default subject? This will be sent if the user does not type in a subject

$defaultsubject="No Subject"

 

// Because many requested it, this feature will add a drop down box for the user to select a array of

// subjects that you specify below. 

// True = Use this feature, False = do not use this feature

$use_subject_drop=false;

 

// This is an array of the email subjects the user can pick from. Make sure you keep the format of

// this array or you will get errors.

// Look at < for examples on how to use this feature.

$subjects=array("Department 1", "Department 2", "Department 3");

 

// This is an array of the email addresses for the array above. There must be an email FOR EACH

// array value specified above. You can have only 1 department if you want.

// YOU MUST HAVE THE SAME AMMOUNT OF $subjects and $emails or this WILL NOT work correctly!

// The emails also must be in order for what you specify above!

// Seperate email addresses by a comma to send an email to multiple addresses.

$emails=array("dept_1@domain.com", "dept_2@domain.com", "dept_3@domain.com");

 

// This is the message that is sent after the email has been sent. You can use html here.

// If you want to redirect users to another page on your website use this:

// <script type=\"text/javascript\">window.location=\"";</script>

$thanksmessage="Спасибо! Ваше письмо успешно отправленно.";

 

/*

//================================================================================

* ! ATTENTION !

//================================================================================

: Don't edit below this line.

*/

 

// Function to get the extension of the uploaded file.

function get_ext($key) { 

$key=strtolower(substr(strrchr($key, "."), 1));

$key=str_replace("jpeg", "jpg", $key);

return $key;

}

 

// Function used to attach files to the message

function phattach($file, $name, $boundary) {

 

$fp=fopen($file, "r");

$str=fread($fp, filesize($file));

$str=chunk_split(base64_encode($str));

$message="--".$boundary."\n";

$message.="Content-Type: application/octet-stream; name=\"".$name."\"\n";

$message.="Content-disposition: attachment; filename=\"".$name."\"\n"

$message.="Content-Transfer-Encoding: base64\n";

$message.="\n";

$message.="$str\n";

$message.="\n";

 

return $message;

}

 

//Little bit of security from people forging headers. People are mean sometimes :(

function clean_msg($key) {

$key=str_replace("\r", "", $key);

$key=str_replace("\n", "", $key);

$find=array(

"/bcc\:/i",

"/Content\-Type\:/i",

"/Mime\-Type\:/i",

"/cc\:/i",

"/to\:/i"

);

  $key=preg_replace($find, "", $key);

  return $key;

}

 

// Initilize some variables

$error="";

$sent_mail=false;

 

// When the form is submitted

If($_POST['submit']==true) {

extract($_POST, EXTR_SKIP);

 

// Check the form for errors

If(trim($yourname)=="") { 

$error.="You did not enter your name!<br />";

}

 

If(trim($youremail)=="") { 

$error.="You did not enter your email!<br />";

} Elseif(!preg_match("/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/", $youremail)) {

$error.="Invalid email address.<br />";

}

 

If(trim($emailsubject)=="") {

$emailsubject=$defaultsubject;

}

 

If(trim($yourmessage)=="") { 

$error.="You did not enter a message!<br />";

}

 

// Verify Attchment info

If($allowattach > 0) {

 

// Get the total size of all uploaded files

If((array_sum($_FILES['attachment']['size'])) > ($max_file_total*1024)) {

 

$error.="The max size allowed for all your files is ".$max_file_total."kb<br />";

 

} Else {

 

//Loop through each of the files

For($i=0; $i <= $allowattach-1; $i++) {

 

If($_FILES['attachment']['name'][$i]) {

 

//Check if the file type uploaded is a valid file type. 

If(!in_array(get_ext($_FILES['attachment']['name'][$i]), $allowtypes)) {

 

$error.= "Invalid file type for your file: ".$_FILES['attachment']['name'][$i]."<br />";

 

//Check the size of each file

} Elseif(($_FILES['attachment']['size'][$i]) > ($max_file_size*1024)) {

 

$error.= "Your file: ".$_FILES['attachment']['name'][$i]." is to big.<br />";

 

} // If in_array

 

} // If Files

 

} // For

 

} // Else array_sum($_FILES['attachment']['size'])

 

} // If Allowattach

 

If($error) {

 

$display_message=$error;

 

} Else {

 

If($use_subject_drop AND is_array($subjects) AND is_array($emails)) {

$subject_count=count($subjects);

$email_count=count($emails);

 

If($subject_count==$email_count) {

 

$myemail=$emails[$emailsubject];

$emailsubject=$subjects[$emailsubject];

 

} // If $subject_count

 

} // If $use_subject_drop

 

$boundary=md5(uniqid(time()));

 

//Headers

$headers="Return-Path: <".clean_msg($youremail).">\n";

$headers.="From: ".clean_msg($yourname)." <".clean_msg($youremail).">\n";

$headers.="X-Mailer: PHP/".phpversion()."\n";

$headers.="X-Sender: ".$_SERVER['REMOTE_ADDR']."\n";

$headers.="X-Priority: ".$priority."\n"

$headers.="MIME-Version: 1.0\n";

$headers.="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";

$headers.="This is a multi-part message in MIME format.\n";

 

//Message

$message = "--".$boundary."\n";

$message.="Content-Type: text/html; charset=\"iso-8859-1\"\n";

$message.="Content-Transfer-Encoding: quoted-printable\n";

$message.="\n";

$message.=clean_msg(nl2br(strip_tags($yourmessage)));

$message.="\n";

 

//Add attachments to message

If($allowattach > 0) {

 

For($i=0; $i <= $allowattach-1; $i++) {

 

If($_FILES['attachment']['tmp_name'][$i]) {

 

$message.=phattach($_FILES['attachment']['tmp_name'][$i], $_FILES['attachment']['name'][$i], $boundary);

 

} //If $_FILES['attachment']['name'][$i]

 

} //For

 

} // If

 

// End the message

$message.="--".$boundary."--\n";

 

// Send the completed message

If(!mail($myemail, clean_msg($emailsubject), $message, $headers)) {

 

Exit("An error has occured, please report this to the website administrator.\n");

 

} Else {

 

$sent_mail=true;

 

}

 

} // Else

 

} // $_POST

 

/*

//================================================================================

* Start the form layout

//================================================================================

:- Use the html below to customize the form.

*/

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<meta http-equiv="Content-Language" content="en-us" />

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title><?php echo $websitename; ?> - Powered By phMailer</title>

 

<style type="text/css">

body{

background-color:#FFFFFF;

font-family: Verdana, Arial, sans-serif;

font-size: 12pt;

color: #000000;

}

 

.error_message{

font-family: Verdana, Arial, sans-serif;

font-size: 11pt;

color: #FF0000;

}

 

.thanks_message{

font-family: Verdana, Arial, sans-serif;

font-size: 11pt;

color: #000000;

}

 

a:link{

text-decoration:none;

color: #000000;

}

a:visited{

text-decoration:none;

color: #000000;

}

a:hover{

text-decoration:none;

color: #000000;

}

 

.table {

border-collapse:collapse;

border:1px solid #000000;

width:500px;

}

 

.table_header{

border:1px solid #070707;

background-color:#C03738;

font-family: Verdana, Arial, sans-serif;

font-size: 11pt;

font-weight:bold;

color: #FFFFFF;

text-align:center;

padding:2px;

}

 

.attach_info{

border:1px solid #070707;

background-color:#EBEBEB;

font-family: Verdana, Arial, sans-serif;

font-size: 8pt;

color: #000000;

padding:4px;

}

 

 

.table_body{

border:1px solid #070707;

background-color:#EBEBEB;

font-family: Verdana, Arial, sans-serif;

font-size: 10pt;

color: #000000;

padding:2px;

}

 

.table_footer{

border:1px solid #070707;

background-color:#C03738;

text-align:center;

padding:2px;

}

 

input,select,textarea {

font-family: Verdana, Arial, sans-serif;

font-size: 10pt;

color: #000000;

background-color:#AFAEAE;

border:1px solid #000000;

}

 

.copyright {

border:0px;

font-family: Verdana, Arial, sans-serif;

font-size: 9pt;

color: #000000;

text-align:right;

}

 

form{

padding:0px;

margin:0px;

}

</style>

 

<script type="text/javascript">

var error="";

e_regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;

 

function Checkit(theform) {

if(theform.yourname.value=="") {

error+="You did not enter your name\n";

}

 

if(theform.youremail.value=="") {

error+="You did not enter your email\n";

} else if(!e_regex.test(theform.youremail.value)) {

error+="Invalid email address\n";

}

 

if(theform.yourmessage.value=="") {

error+="You did not enter your message\n";

}

 

if(error) {

alert('**The form returned the following errors:**\n\n' + error);

error="";

return false;

} else {

return true;

}

}

</script>

 

</head>

<body>

<?If($display_message) {?>

 

<div align="center" class="error_message"><b><?=$display_message;?></b></div>

<br />

 

<?}?>

 

<?If($sent_mail!=true) {?>

 

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" name="phmailer" onsubmit="return Checkit(this);">

<table align="center" class="table">

<tr>

<td colspan="2" class="table_header" width="100%"><?=$websitename;?></td>

</tr>

<?If($allowattach > 0) {?>

<tr>

<td width="100%" class="attach_info" colspan="2">

<b>Допустимые типы вложений:</b> <?=implode($allowtypes, ", ");?><br />

<b>Максимальный размер каждого файла:</b> <?=$max_file_size?>kb.<br />

<b>Максимальный размер файла:</b> <?=$max_file_total?>kb.

</td>

</tr>

<?}?>

 

<tr>

<td width="30%" class="table_body">Ваше имя</td>

<td width="70%" class="table_body"><input name="yourname" type="text" size="30" value="<?=stripslashes(htmlspecialchars($yourname));?>" /><span class="error_message">*</span></td>

</tr>

<tr>

<td width="30%" class="table_body">Ваш Email:</td>

<td width="70%" class="table_body"><input name="youremail" type="text" size="30" value="<?=stripslashes(htmlspecialchars($youremail));?>" /><span class="error_message">*</span></td>

</tr>

<tr>

<td width="30%" class="table_body">Что хотите сдать в аренду:</td>

<td width="70%" class="table_body">

 

<?If($use_subject_drop AND is_array($subjects)) {?>

<select name="emailsubject" size="1">

<?while(list($key,$val)=each($subjects)) {?>

 

<option value="<?=intval($key);?>"><?=htmlspecialchars(stripslashes($val));?></option>

 

<?}?>

</select>

 

 

<?} Else {?>

 

<input name="emailsubject" type="text" size="30" value="<?=stripslashes(htmlspecialchars($emailsubject));?>" />

 

<?}?>

 

</td>

</tr>

 

<?For($i=1;$i <= $allowattach; $i++) {?>

<tr>

<td width="30%" class="table_body">Прикрепите фото:</td>

<td width="70%" class="table_body"><input name="attachment[]" type="file" size="30" /></td>

</tr>

<?}?>

 

 

<tr>

<td colspan="2" width="100%" class="table_footer">

<input type="hidden" name="submit" value="true" />

<input type="submit" value="<?=$submitvalue;?>" />  

<input type="reset" value="<?=$resetvalue;?>" />

</td>

</tr>

</table>

</form>

 

<?} Else {?>

 

<div align="center" class="thanks_message"><?=$thanksmessage;?></div>

<br />

<br />

 

<?}

//Please leave this here.. It's very small and non-obtrusive. ?>

<table class="table" style="border:0px;" align="center">

<tr>

<td><div class="copyright">©<a href="http://www.phphq.net/?script=phMailer" target="_blank" title="Powered By phMailer 1.5.1 <www.phphq.net>">phMailer</a></div></td>

</tr>

</table>

</body>

</html>

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

отлично, только в дальнейшем просьба длинный листинг кода оборачивать в спойлер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас