PDA

View Full Version : سوال: مشکل خیلی خیلی اونجوری



padidehco
یک شنبه 10 شهریور 1392, 19:08 عصر
سلام دوستان
مشکل این کد چیه؟


// بررسي فرمت فايل ضميمه
@$ext = end(explode('.',$file_name) || explode('.',$file_name1));
if(!in_array($ext,$formats)){
echo "فايل ضميمه شده مجاز نمي باشد.تنها فرمتهاي ";
foreach($formats as $value){
echo $value." , ";
}echo " قابل ارسال هستند"; die('');}



من دو تا فایل دارم که می خوام فرمت هر دوی اون ها برسی بشه
باید کد بالا را چی کار کنم؟

افشین66
یک شنبه 10 شهریور 1392, 20:41 عصر
<?php
// بررسي فرمت فايل ضميمه
$ext[] =explode('.',$file_name);
$ext[]=explode('.',$file_name1);
if(count($ext)==0)echo "فايل ضميمه شده مجاز نمي باشد.تنها فرمتهاي ";die('');
foreach($ext as $value)
{
echo $value." , ";
echo " قابل ارسال هستند";
}
die('');
?>

padidehco
یک شنبه 10 شهریور 1392, 21:36 عصر
این کد کار نمی کنه
یک صفحه سفید نشون می ده
این کل سورس صفحه ای هست که نوشتم
این کد فرمم

<form class="send-file-up" action="send-mail.php" method="post" enctype="multipart/form-data">
<p><label for="name">نام و نام خانوادگی :</label><br />
<input class="name-input" name="name" id="name" type="text" /></p>
<p><label for="email"> پست الکترونيک : </label><br />
<input class="name-input" name="email" id="email" type="text" /></p>
<p><label for="attachment"> فايل ضميمه:<span class="formats">فرمت های مجاز : jpg - png</span></label>
<br />
<input type="file" name="attachment" id="attachment" /></p>
<p><input type="file" name="attachment1" id="attachment1" /></p>
<p>
<input type="submit" class="submit" value="ارسال" />
</p>
</form>
این هم کد پی اچ پی مربوط به ارسال فایل


<?php include_once('../tools/fild.php');?>
<?php
//دريافت اطلاعات اوليه فرم
$name=stripslashes($_POST['name']);
$from=stripslashes($_POST['email']);
$attachment=$_FILES['attachment']['name'];
$attachment1=$_FILES['attachment1']['name1'];
$subject="پیوست مدارک";
$max_file_size = 1000;
$formats = array('jpg','png');
//
// بررسي خالي نبودن فيلدهاي نام ، ايميل و پيام
if ( empty($name) || empty($from) ){
die("لطفا تمام فيلدها را به درستي تکميل فرماييد.");
}
//
// بررسي معتبر بودن پست الکترونيک ارسال کننده
if (!preg_match('/[A-Za-z0-9_-]+\@[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/',$from)){
die("لطفا ايميل معتبري وارد نماييد!");
}
//
// ارسال اطلاعات متني فرم به ايميل
$hash = md5(uniqid(time()));
$header = "";
$header .= "From: ".$name."<".$from.">\nReply-To: ".$from."";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$hash."\"\n\n";
$header .= "This is a multi-part message in MIME format.\n";
$header .= "--".$hash."\n";
$header .= "Content-type: text/html; charset=utf-8\n";
$header .= "Content-Transfer-Encoding: 7bit\n\n";

//
// در صورتي که فايلي پيوست شده باشد
if (!empty ($attachment) || !empty ($attachment1)) {
// ذخيره اطلاعات فايل ضميمه در متغيرها براي دسترسي آسانتر
$tmp_name = $_FILES['attachment']['tmp_name'];
$tmp_name1 = $_FILES['attachment1']['tmp_name1'];
$type = $_FILES['attachment']['type'];
$type1 = $_FILES['attachment1']['type1'];
$file_name = $_FILES['attachment']['name'];
$file_name1 = $_FILES['attachment1']['name1'];
$file_size = $_FILES['attachment']['size']/1024;
$file_size1 = $_FILES['attachment1']['size1']/1024;
//
// بررسي حجم فايل ضميمه
if ($file_size>$max_file_size || $file_size1>$max_file_size) {
die("حجم فايل ضميمه بيشتر از حجم مجاز است. حداکثر حجم مجاز".$max_file_size." کيلوبايت مي باشد");}
//
// بررسي فرمت فايل ضميمه
$ext[] =explode('.',$file_name);
$ext[]=explode('.',$file_name1);
if(count($ext)==0)echo "فايل ضميمه شده مجاز نمي باشد.تنها فرمتهاي ";die('');
foreach($ext as $value)
{
echo $value." , ";
echo " قابل ارسال هستند";} die('');

//
// ارسال فايل ضميمه به ايميل
$content = chunk_split(base64_encode(file_get_contents($tmp_n ame)));
$header .= "--".$hash."\n";
$header .= "Content-Type: application/octet-stream; name=\"".$file_name."\"\n";
$header .= "Content-Transfer-Encoding: base64\n";
$header .= "Content-Disposition: attachment; filename=\"".$file_name."\"\n\n";
$header .= "Content-Type: application/octet-stream; name=\"".$file_name1."\"\n";
$header .= "Content-Disposition: attachment; filename=\"".$file_name1."\"\n\n";
$header .= "Content-Transfer-Encoding: base64\n";
$header .= $content."\n\n";
}
$sendemail = @mail($emailhome,$subject,null,$header, 'From: '.$emailform.'');
//
if($sendemail)
{
echo "پيام شما با موفيت ارسال شد.";
}
else
{
echo "متاسفانه مشکلي حين ارسال ايميل رخ داده است.لطفا لحظاتي ديگر مجددا تلاش نماييد.";
}
?>

افشین66
یک شنبه 10 شهریور 1392, 21:42 عصر
اولا لاین 61 خطا داره دوما رو لوکال هاست داری تست می کنی یا نه ؟؟؟؟؟خط 71 اون @ بردار ببین خروجی داره ؟؟؟؟

padidehco
یک شنبه 10 شهریور 1392, 21:47 عصر
مشکل از خط 71 نیست با اون @ نیز کار می کنه
مشکل اصلی از خطوط 50 تا 57 است
مشکلم با برسی فرمت دریافتی هست
وقتی دو تا فایل برای ایمیل می زارم کار نمی کنه(تو قسمت برسی فرمت گیر می کنه)
من می خوام 5 تا فایل را ازطریق فرم ، به ایمیل ارسال کنم

که البته در کد بالا فعلا دو تا ورودی برای ارسال فایل گذاشتم

افشین66
یک شنبه 10 شهریور 1392, 22:27 عصر
خوب به جای اینکه کارت این همه مشکل کنی بیا از کلاس phpmailer استفاده کن ببین مثلا من دوتا فایل به ایمیلم attach می کنم




<?php
include_once("class.phpmailer.php");
$max_file_size = 1000;
$formats = array('jpg','png');
//
// بررسي خالي نبودن فيلدهاي نام ، ايميل و پيام
if ( empty($name) || empty($from) ){
die("لطفا تمام فيلدها را به درستي تکميل فرماييد.");
}

// بررسي حجم فايل ضميمه
if ($file_size>$max_file_size || $file_size1>$max_file_size) {
die("حجم فايل ضميمه بيشتر از حجم مجاز است. حداکثر حجم مجاز".$max_file_size." کيلوبايت مي باشد");}


$mailer = new phpmailer();
$mailer->IsMail();
$mail->From = "from@example.com";
$mailer->Subject = "پیوست مدارک";
$mailer->AddAddress($_POST['email'], $_POST['name']);
$mailer->message_type = "attachments";

for ($i = 0; $i <= 2; $i++)
{
if (file_exists($_FILES['attachment'.$i]['tmp_name']) && in_array(pathinfo($_FILES['attachment'.$i]['tmp_name'], PATHINFO_EXTENSION ),$formats)) {
$mail->AddAttachment($_FILES['attachment'.$i]['tmp_name'], $_FILES['attachment'.$i]['tmp_name']);
}
}

if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent.';
}

?>



تو اینترنتم دونبال کلاسش بگرد خیلی امکانات داره :)

این آدرس سایتش http://phpmailer.worxware.com/

این توضیحات راجع به چیزی که تو می خوای
http://phpmailer.worxware.com/?pg=tutorial

امیدوارم بدردت بخوره

padidehco
یک شنبه 10 شهریور 1392, 22:56 عصر
خوب به جاي اينکه کارت اين همه مشکل کني بيا از کلاس phpmailer استفاده کن ببين مثلا من دوتا فايل به ايميلم attach مي کنم



تو اينترنتم دونبال کلاسش بگرد خيلي امکانات داره :)

اين آدرس سايتش http://phpmailer.worxware.com/

اين توضيحات راجع به چيزي که تو مي خواي
http://phpmailer.worxware.com/?pg=tutorial

اميدوارم بدردت بخوره

به این خط کد ارور می ده

$mailer->message_type = "attachments";
این هم متن ارور
Fatal error: Cannot access protected property PHPMailer::$message_type in C:\xampp\htdocs\form-send-file\up\send-mail.php on line 23

من می خوام این ایمیل هم به یک ایمیل ثابت که در کد هست ایمیل بشه و هم به اونی که کاربر در فرم وارد می کنهادرس ایمیلی که قرار به صورت ثابت در کد ها باشه می خوام مقدارش را از یک متغیر بگیره

AliRezaPro
دوشنبه 11 شهریور 1392, 00:05 صبح
استارتر تاپیک لطفا تاپیک های بعدی که ایجاد میکنید , نام بهتری را برگزینید , اصولا نام هایی که برای تاپیک ها انتخاب میشوند, به نفر بعدی اجازه حل شدن مشکلش را میدهد و به راحتی در سرچ سایت قابل روئیت است

padidehco
دوشنبه 11 شهریور 1392, 09:25 صبح
دوستان ، کسی می تونه خطای بالا را درست کنه؟

افشین66
دوشنبه 11 شهریور 1392, 12:47 عصر
دوستان ، کسی می تونه خطای بالا را درست کنه؟

خط 21 حذف کن ببین مشکلش حل میشه؟؟؟؟
با این کلاس به هر چند تا کاربر خواستی می تونی ایمیل بزنی یک راهش استفاده از AddCC البته تابع

AddAddress




$mail->AddAddress('person1@domain.com', 'Person One'); $mail->AddAddress('person2@domain.com', 'Person Two');


من خودم این روش ترجیح میدم



$mail->AddCC('person1@domain.com', 'Person One'); $mail->AddCC('person2@domain.com', 'Person Two');