PDA

View Full Version : سوال: تصحیح کد ارسال متن



arman2000
دوشنبه 22 شهریور 1389, 13:49 عصر
سلام
من برای فرسادن اطلاعات از طریق باکس در صفحه html، از کد PHP (کد تماس با ما) استفاده کردم که بعد از کلیک دکمه ارسال، به صفحه html دیگری که در اون نوشته شده "پیام با موفقیت ارسال شد" می رود:

$redirect='http://page.htm';


می خواستم راهنمایی کنید تا بتونم کد رو جوری تغییر بدم که در همون صفحه که باکس و دکمه ارسال هست بعد از کلیک دکمه ارسال، اطلاعات فرستاده بشه و پنجره ای (Message) باز بشه که شامل دکمه OK باشه و بعد از کلیک اون (OK)، همون صفحه با باکس خالی دیده شه (نه به یک صفحه دیگه بره).
کد کلی رو در زیر کپی کردم

$to='yourname@gmail.com';
$subject='name;
$redirect='http://page.htm';
$from='name';


نیازی به تغییر در کد زیر که در فایل .conf.php وجود داره، نیست؟ (چون قراره که بعد از ارسال، پیغام بده نه به یه صفحه دیگه بره)

$redirect='http://page.htm';

سوال بعد: برای اینکه متن تکست باکس، به چند آدرس ایمیل ارسال بشه چه تغییری در کد زیر باید بدم:

$to='yourname@gmail.com';

با کاما باید آدرس ها رو جدا کنم؟ مثل زیر؟:

$to='yourname@gmail.com, name@yahoo.com';

سوال بعدی: اگه بخوایم علاوه بر متن، Attach هم ارسال بشه، چه تغییری باید در کد فایل .php زیر داد؟

if (isset($_POST['email']))
$email=$_POST['email'];
else
$email=$from;
if (isset($_POST['subject']))
$subject=$_POST['subject'];
##############################
$header='From: "'.$email.'" <'.$email.">\r\n"
.'Reply-To: "'.$email.'" <'.$email.">\r\n"
.'To:<'.$to.">\r\n"
."Mime-Version: 1.0\r\n"
."Content-type: text/html; charset=utf-8\r\n"
."Content-Transfer-Encoding: 7bit\r\n";
##############################
$main='';
foreach($_POST as $k => $v)
{
$lists=$body;
$lists=ereg_replace('%field',$k,$body);
$lists=ereg_replace('%info',$v,$lists);
$main .=$lists;
}
#############################
$ip= $_SERVER['REMOTE_ADDR'];
$link=$_SERVER['HTTP_REFERER'];
$footer=ereg_replace('%ip',$ip,$footer);
$footer=ereg_replace('%link',$link,$footer);
$body=$top.$main.$footer;
mail($to,$subject,$body, $header);
header("location: $redirect")
?>
با تشکر فراوان از شما

funpatogh
دوشنبه 22 شهریور 1389, 23:10 عصر
خط آخر جای header(); یک تابع جاوا اسکریپت بگزار


<?php
if (isset($_POST['email']))
$email=$_POST['email'];
else
$email=$from;
if (isset($_POST['subject']))
$subject=$_POST['subject'];
##############################
$header='From: "'.$email.'" <'.$email.">\r\n"
.'Reply-To: "'.$email.'" <'.$email.">\r\n"
.'To:<'.$to.">\r\n"
."Mime-Version: 1.0\r\n"
."Content-type: text/html; charset=utf-8\r\n"
."Content-Transfer-Encoding: 7bit\r\n";
##############################
$main='';
foreach($_POST as $k => $v)
{
$lists=$body;
$lists=ereg_replace('%field',$k,$body);
$lists=ereg_replace('%info',$v,$lists);
$main .=$lists;
}
#############################
$ip= $_SERVER['REMOTE_ADDR'];
$link=$_SERVER['HTTP_REFERER'];
$footer=ereg_replace('%ip',$ip,$footer);
$footer=ereg_replace('%link',$link,$footer);
$body=$top.$main.$footer;
mail($to,$subject,$body, $header);
echo "<script type='text/javascript'>confirm('پیغام شما با موفقیت ارسال شد')</script>";
?>

--------------------
این هم یک نمونه برای سوال دوم


<?php
//define the receiver of the email
$to = 'youraddress@example.com';
//define the subject of the email
$subject = 'Test email with attachment';
//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash
$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
//add boundary string and mime type specification
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
//read the atachment file contents into a string,
//encode it with MIME base64,
//and split it into smaller chunks
$attachment = chunk_split(base64_encode(file_get_contents('attac hment.zip')));
//define the body of the message.
ob_start(); //Turn on output buffering
?>
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>"

--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Hello World!!!
This is simple text email message.

--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

<h2>Hello World!</h2>
<p>This is something with <b>HTML</b> formatting.</p>

--PHP-alt-<?php echo $random_hash; ?>--

--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: application/zip; name="attachment.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment

<?php echo $attachment; ?>
--PHP-mixed-<?php echo $random_hash; ?>--

<?php
//copy current buffer contents into $message variable and delete current output buffer
$message = ob_get_clean();
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"
echo $mail_sent ? "Mail sent" : "Mail failed";
?>

arman2000
سه شنبه 23 شهریور 1389, 11:59 صبح
ممنونم از راهنمايي هاي كامل شما

سوال 1- برای اینکه به چند آدرس ایمیل ارسال بشه چه تغییری در کد زیر باید بدم:

$to='yourname@gmail.com';
با کاما باید آدرس ها رو جدا کنم؟ مثل زیر؟ يا روش ديگه اي هست:

$to='yourname@gmail.com, name@yahoo.com';

سوال 2- اگه بخوايم اجازه چند تا پيوست كردن رو به كاربر بديم (بيشتر از يك مورد) چه تغييري توي كدها بايد بدم؟

arman2000
پنج شنبه 25 شهریور 1389, 09:51 صبح
سلام
منتظر جواب مي مونم

arman2000
پنج شنبه 25 شهریور 1389, 23:47 عصر
مرا دریاب جان من!

xoogle.ir
جمعه 26 شهریور 1389, 10:13 صبح
از کلاس phpmailer استفاده کن دوست عزیز هم میتونی چندین گیرنده به آدرس اضافه کنی هم فایل attach کنی به ایمیلت.
یه سرچ بزنی توی گوگل کلاسش رو پیدا میکنی خودش نمونه و مثال هم زیاد داره.

arman2000
دوشنبه 29 شهریور 1389, 22:17 عصر
سلام دوست من
در مورد کد "نمونه برای سوال دوم" که لطف کردید پیشنهاد دادید، مواردی که باید جایگزین کنم چه چیزایی هست؟ چون این کد رو گذاشتم ولی بعد از کلیک دکمه ارسال، همون کد در بروزر دیده شد.
من قبلا از دو فایل PHP استفاده می کرد. این دو کد رو چه تغییری بدم که همون کارهای کد پیشنهادی شما رو انجام بده؟
کد فرم HTM:

<FORM onsubmit="return CheckForm(this);" action=email.php method=post>
<INPUT size=25 name=name style="font-family: Tahoma; valign: middle; font-size: 13px; color: #000080; text-align:center"></P>
<INPUT style="FONT-SIZE: 8pt; FONT-FAMILY: Tahoma; TEXT-ALIGN: center" type=submit value=" ارسال "></p>
<SCRIPT language=JavaScript>
<!--
function CheckForm(formID) {
if (formID.name.value == "") { alert("لطفا نام خود را وارد کنيد"); formID.name.focus(); return false; }
return true;
}
//
-->
</SCRIPT>
بعد از کلیک دکمه ارسال در فرم، فایل email.php خونده می شه با کد زیر:

<?
############################
include 'mail.conf.php';
############################
$top='<html dir="rtl">
<head>
<meta http-equiv="Content-Language" content="fa">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div align="center">
<p style="margin-top: 0; margin-bottom: 0">
<font face="Tahoma" size="1" color="#003366">به نام خدا</font></p>
<p style="margin-top: 0; margin-bottom: 0"><b>
<font face="Tahoma" size="1" color="#003366">محتویات فرم ارسال شده</font></b></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Tahoma" size="1">&nbsp;</font></p>
<table border="0" cellpadding="0" style="border-collapse: collapse" width="500" height="20" bordercolor="#000000" id="table1">
<tr>
<td width="161" height="24" style="border-style: solid; border-width: 1px" bgcolor="#F4F4F4" bordercolor="#333333">
<p align="center" style="margin: 2px 5px"><b>
<font face="Tahoma" style="font-size: 9pt">نام گزینه</font></b></td>
<td height="24" style="border-style: solid; border-width: 1px" bgcolor="#F4F4F4" bordercolor="#333333">
<p align="center" style="margin: 2px 5px"><b>
<font face="Tahoma" style="font-size: 9pt">&nbsp;اطلاعات وارد شده توسط
کاربر</font></b></td>
</tr>';
##############################
$body=' <tr>
<td width="161" style="border-style: solid; border-width: 1px" height="24" bordercolor="#333333">
<p align="center" style="margin: 2px 5px"><span lang="en-us">
<font face="Tahoma" style="font-size: 9pt">%field</font></span></td>
<td style="border-style: solid; border-width: 1px" height="24" bordercolor="#333333">
<p align="justify" style="margin: 2px 10px; "><span lang="en-us">
<font face="Tahoma" style="font-size: 9pt">%info</font></span></td>
</tr>';
##############################
$footer=' </table>
<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
<p style="margin-top: 0; margin-bottom: 0"><b><font face="Tahoma" size="1">&nbsp;</font></b></div>
<div align="center">
<table border="0" cellpadding="0" style="border-collapse: collapse" width="500" height="20" bordercolor="#000000" id="table2">
<tr>
<td height="25" style="border-style: solid; border-width: 1px" bgcolor="#F2CC84" colspan="2" bordercolor="#333333">
<p style="margin-top: 0; margin-bottom: 0" align="center"><b>
<font face="Tahoma" size="1" color="#800000">مشخصات کاربر</font></b></p>
</td>
</tr>
<tr>
<td width="161" height="25" style="border-style: solid; border-width: 1px" bordercolor="#333333">
<p align="center" style="margin: 2px 5px">
<font face="Tahoma" style="font-size: 9pt">آدرس آی پی</font></td>
<td height="25" style="border-style: solid; border-width: 1px" bordercolor="#333333">
<p align="center" style="margin: 2px 5px"><span lang="en-us">
<font face="Tahoma" style="font-size: 9pt">%ip</font></span></td>
</tr>
<tr>
<td width="161" style="border-style: solid; border-width: 1px" height="25" bordercolor="#333333">
<p align="center" style="margin: 2px 5px">
<font face="Tahoma" style="font-size: 9pt">لینک معرف</font></td>
<td style="border-style: solid; border-width: 1px" height="25" bordercolor="#333333">
<p align="center" style="margin: 2px 5px"><span lang="en-us">
<font face="Tahoma" style="font-size: 9pt">%link</font></span></td>
</tr>
</table>
<p align="center" style="margin: 2px 5px">&nbsp;<p align="center" style="margin: 2px 5px">&nbsp;</div>
<p align="center" dir="ltr" style="margin-top: 2px; margin-bottom: 2px">
<span lang="en-us"><font face="Verdana" size="1" color="#333333">if you can,t
Read this , change the encoding to UTF-8</font></span></p>
<p align="center" style="margin-top: 2px; margin-bottom: 2px">
<span lang="en-us"><font size="1" face="Verdana">
<a href="http://www.siqma.com"><font color="#800000">Powered By: www.siqma.com</font></a></font></span></p>
<p align="center">&nbsp;</p>
</body>
</html>';
##############################
if (isset($_POST['email']))
$email=$_POST['email'];
else
$email=$from;
if (isset($_POST['subject']))
$subject=$_POST['subject'];
##############################
$header='From: "'.$email.'" <'.$email.">\r\n"
.'Reply-To: "'.$email.'" <'.$email.">\r\n"
.'To:<'.$to.">\r\n"
."Mime-Version: 1.0\r\n"
."Content-type: text/html; charset=utf-8\r\n"
."Content-Transfer-Encoding: 7bit\r\n";
##############################
$main='';
foreach($_POST as $k => $v)
{
$lists=$body;
$lists=ereg_replace('%field',$k,$body);
$lists=ereg_replace('%info',$v,$lists);
$main .=$lists;
}
#############################
$ip= $_SERVER['REMOTE_ADDR'];
$link=$_SERVER['HTTP_REFERER'];
$footer=ereg_replace('%ip',$ip,$footer);
$footer=ereg_replace('%link',$link,$footer);
$body=$top.$main.$footer;
mail($to,$subject,$body, $header);
header("location: $redirect")
?>

کد فایل mail.conf.php هم در زیر هست:

<?
################################################## ###
$to='yourname@gmail.com';
$subject=Mail;
$redirect='http://page.htm';
$from='mail';
################################################## ###
?>

بزرگوار ممنون می شم راهنمایی بفرمائید

arman2000
سه شنبه 30 شهریور 1389, 12:45 عصر
منتظر راهنمايي شما هستم

shahriyar3
سه شنبه 30 شهریور 1389, 22:47 عصر
كلاس phpmailer رو دانلود كنيد براي فولدرش مجوز 777 در نظر بگيريد


PHPMailer Features




Can send emails with multiple TOs, CCs, BCCs and REPLY-TOs
Redundant SMTP servers
Multipart/alternative emails for mail clients that do not read HTML email
Support for 8bit, base64, binary, and quoted-printable encoding
Uses the same methods (http://phpmailer.sourceforge.net/phpdoc/default/phpmailer.html) as the very popular AspEmail active server (COM) component
SMTP authentication
Word wrap
Address reset functions
HTML email
Tested on multiple SMTP servers: Sendmail (http://www.sendmail.org/), qmail (http://www.qmail.org/), Postfix (http://www.postfix.org/), Imail, Exchange, Mercury, Courier
Works on any win32 or *nix platform
Flexible debugging
Custom mail headers
Multiple fs, string, and binary attachments (those from database, string, etc)
Embedded image support

arman2000
چهارشنبه 31 شهریور 1389, 10:43 صبح
دوست من دانلود كردم ولي منظورتون رو از "مجوز فولدر" متوجه نشدم.
بزرگوار همون دو تا فايلي رو كه كدشون رو گذاشتم نمي شه تغيير داد كه بتونم كارهايي رو كه مي خوام انجام بده؟ حداقل محتواي باكس رو بعد از ارسال، پاك كنه.

arman2000
چهارشنبه 31 شهریور 1389, 21:31 عصر
منتظریم بزرگوار

arman2000
پنج شنبه 01 مهر 1389, 12:30 عصر
چي شد؟ ما منتظريم

arman2000
یک شنبه 04 مهر 1389, 10:55 صبح
نه
اينم نشد زندگي

arman2000
چهارشنبه 07 مهر 1389, 09:28 صبح
دوست عزيز چيزي كه فعلا خيلي برام مهمه پاك شدن نوشته هاي داخل باكس، بعد از ارسال هست. امكان داره با تصحيح همين دو فايل PHP اين كار رو انجام بدم؟
ممنون مي شم راهنمايي بفرمائيد.

farhadfery
چهارشنبه 07 مهر 1389, 09:56 صبح
دوست عزيز چيزي كه فعلا خيلي برام مهمه پاك شدن نوشته هاي داخل باكس، بعد از ارسال هست. امكان داره با تصحيح همين دو فايل PHP اين كار رو انجام بدم؟
ممنون مي شم راهنمايي بفرمائيد.
در اینجا من هم یه سوال دارم:
ببنید هر بار صفحهرا رفرش می کنی یک بار هم فرم ارسال می شود اینرو باید چکار کنیم؟

alonemm
چهارشنبه 07 مهر 1389, 14:48 عصر
در اینجا من هم یه سوال دارم:
ببنید هر بار صفحهرا رفرش می کنی یک بار هم فرم ارسال می شود اینرو باید چکار کنیم؟

من هم یک صفحه داشتم که نمیخاستم دوباره رفرش بشه برای رفع این مشکل باید پس از ارسال اول یک سشن تعریف کنی و بعد چک کنی اگه وجود نداشت ارسال بشه.

arman2000
چهارشنبه 07 مهر 1389, 17:08 عصر
دوست عزيز چيزي كه فعلا خيلي برام مهمه پاك شدن نوشته هاي داخل باكس، بعد از ارسال هست. امكان داره با تصحيح همين دو فايل PHP اين كار رو انجام بدم؟
ممنون مي شم راهنمايي بفرمائيد.

farhadfery
پنج شنبه 08 مهر 1389, 14:35 عصر
من هم یک صفحه داشتم که نمیخاستم دوباره رفرش بشه برای رفع این مشکل باید پس از ارسال اول یک سشن تعریف کنی و بعد چک کنی اگه وجود نداشت ارسال بشه.
ایده خوبییه اما سیژن کی از بین میره؟ تا وقتی شخص از سایت خارج نشود اون سژنه می مونه؟

arman2000
یک شنبه 11 مهر 1389, 11:52 صبح
دوست عزيز چيزي كه فعلا خيلي برام مهمه پاك شدن نوشته هاي داخل باكس، بعد از ارسال هست. امكان داره با تصحيح همين دو فايل PHP اين كار رو انجام بدم؟
ممنون مي شم راهنمايي بفرمائيد.

alonemm
یک شنبه 11 مهر 1389, 12:28 عصر
برای ارسال به چند آدرس میتونید این آدرس ها رو از چند تکس باکس گرفته و در یک آرایه قرار بدید.
و بایک حلقه تکرار این رو عملیات رو انجام داد.

alonemm
یک شنبه 11 مهر 1389, 12:32 عصر
دوست عزيز چيزي كه فعلا خيلي برام مهمه پاك شدن نوشته هاي داخل باكس، بعد از ارسال هست. امكان داره با تصحيح همين دو فايل PHP اين كار رو انجام بدم؟
ممنون مي شم راهنمايي بفرمائيد.
میتونید یک فیلد مخفی هم توی فرم داشته باشید و تست کنید اگر مقدار داشت یا post شد تکس باکس ها خالی بشند.

farhadfery
یک شنبه 11 مهر 1389, 14:46 عصر
ایده خوبییه اما سیژن کی از بین میره؟ تا وقتی شخص از سایت خارج نشود اون سژنه می مونه؟
می شه بگید سژن چی می شه؟

arman2000
دوشنبه 12 مهر 1389, 00:28 صبح
سلام دوست من
امکان داره یه مثال در مورد پیشنهادتون بذارید:
"قرار دادن یک فیلد مخفی توی فرم که اگر مقدار داشت یا post شد تکس باکس ها خالی بشند".

arman2000
یک شنبه 18 مهر 1389, 10:45 صبح
منتظر راهنمایی شما هستم