سوالي كه 100 بار پرسيدم...

behsa

Member
بابا يك نفر يك راهي رو به من ياد بده كه بتونم اطلاعات يك فرم را به آدرس يك ايميل بفرستم
(FORM2MAIL)
دز ضمن ميخوام اطلاعات را بصورت فارس در فرم وارد كنم و پس از ارسال در ايميل بدون مشكل خوانده شود.
 

saman_sweden

Active Member
ارسال اطلاعات يك فرم به آدرس يك ايميل :wink:

بفرما اين PHP است اکه تو Asp میخواهی برو پیش اهل فنش و یا تماس بگیر

کد:
<?php
$anti_spam_option = false;
$anti_spam_mask = '<ANTI-SPAM>';
$domains = array(
  0 => 'www.brosner.com'
);
$user_defined_subject = false;
$mail_from = 'Web Form';
$reply_to = '';
$mail_seperator = ': ';
$mail_header_data = false;
$mail_header_data_pos = 'bottom';
define('VERSION','2.0');
if(!get_magic_quotes_gpc()) {
    define('QUOTES',false);
}
else {
    define('QUOTES',true);
}

if($_SERVER['REQUEST_METHOD'] == 'GET') {
    print_error("This error is due to either:<br />\n1. A GET method was used.<br />\n2. No form was submitted.",true);
}
$email_reg = '^[a-zA-Z]+@[a-zA-Z]+\.[a-zA-Z]+$';
$data_types = array(
  0 => 'blank',
  1 => 'email',
  2 => 'letters',
  3 => 'numbers',
  4 => 'age',
  5 => 'url'
);

// fetch hidden fields from form
$recipients = (isset($_POST['recipients'])) ? $_POST['recipients'] : '';
$subject = (isset($_POST['subject'])) ? $_POST['subject'] : '';
$redirect = (isset($_POST['redirect'])) ? $_POST['redirect'] : '';
$required = (isset($_POST['required'])) ? $_POST['required'] : '';

// delete parts of _POST array...they are not needed anymore
unset($_POST['recipients'],$_POST['subject'],$_POST['required'],$_POST['redirect']);

// function: print_error() - prints an error
function print_error($error,$kill = false) {
    // display error
    print '<font face="verdana" size="2" color="#ff0000"><b>Error:</b> '.$error.'</font>';

    // terminate script if requested
    if($kill == true) exit;
}

// function: check_referers() - tests referer against allowed list
function check_referer() {
    global $domains;

    // grab the url of the form
    $replace = str_replace('http://','',getenv('HTTP_REFERER'));
    $referer = strtok($replace,'/');

    // loop through each allowed domains and compare with referer
    $count = 0;
    while(list($k,$v) = each($domains)) {
        if($v == $referer) $count++;
    }

    if($count >= 1) return true;
    else return false;
}

// function: check_hidden() - validate the hidden fields
function check_hidden() {
    // grab config and form vars
    global $anti_spam_option,$anti_spam_mask,$user_defined_subject;
    global $recipients,$subject,$redirect,$email_reg;

    // test if there are no recipients (required)
    if($recipients == '') print_error('Please enter an e-mail address in the recipients hidden field.',true);

    // test if there is no subject (optional)
    if($user_defined_subject == false && $subject == '') $subject = 'Web Form';

    // test if there is no redirect (optional)
    if($redirect == '') $redirect = false;

    // break up e-mails
    $email_arr = explode(',',$recipients);

    // loop through e-mails and test validaty
    while(list($k,$email) = each($email_arr)) {
        // fix any spamming thing if set on
        if($anti_spam_option == true) {
            $email = str_replace($anti_spam_mask,'@',$email);
        }
        else {
            if(strstr($email,$anti_spam_mask)) {
                print_error('br_form2mail noticed you are using the anti-spam mask. You must turn on the anti-spam option.',true);
            }
        }

        if(!eregi($email_reg,$email,$trash)) {
            print_error("The e-mail address ".$email." is not a valid address.<br />\n");
            if((sizeof($email_arr) - 1) == $k) exit;
        }
        else {
            $email_arr[$k] = $email;
        }
    }
    $recipients = implode(',',$email_arr);
    return true;
}

function vali_blank($field,$val) {
    if(empty($val)) {
        print_error('The '.$field.' field was left empty.');
        return false;
    }
    else return true;
}

function vali_email($field,$val) {
    global $email_reg_ex;

    if(vali_blank($field,$val)) {
        if(!eregi($email_reg_ex,$val,$trash)) {
            print_error('The email address supplied in the '.$field.' field is in incorrect format.');
            return false;
        }
        else return true;
    }
}

function vali_letters($field,$val) {
    if(vali_blank($field,$val)) {
        if(!eregi('^[a-z]+$',$val)) {
            print_error('Only letters are accepted in the '.$field.' field.');
            return false;
        }
        else return true;
    }
}

function vali_numbers($field,$val) {
    if(vali_blank($field,$val)) {
        if(!eregi('^[0-9]+$',$val)) {
            print_error('Only numbers are accepted in the '.$field.' field.');
            return false;
        }
        else return true;
    }
}

function vali_age($field,$val) {
    // test blank first
    if(vali_blank($field,$val)) {
        // split the birthdate up in month, day and year
        list($month,$day,$year) = explode('/',$val);

        // if they put a two digit year change it to four with the 19 prefix
        if(strlen($year) == 2) {
          print_error('The year in the '.$field.' field must be a four digits.');
          return false;
        }

        // test to see if the date given is even a date on the calendar
        if(!checkdate($month,$day,$year)) {
            print_error('The given date in the '.$field.' field is not a valid date.');
            return false;
        }

        // grab an array of date info
        $bd_date = getdate(mktime(0,0,0,$month,$day,$year));
        $now_date = getdate(time());

        //adjust for day of the month and get final age. 
        if($now_date['yday'] >= $bd_date['yday']) $age = $now_date['year'] - $year;
        else $age = ($now_date['year'] - $year) - 1;
        
        //age range check 
        if($age < 13) {
            print_error('According to the <a href="http://members.lycos.co.uk/negaresh/farsi.html">COPPA</a> you must be 13 years of age or older to submit data on this website.');
            return false;
        }
        else return true;
    }
}


function valid_data($field,$type) {
    global $data_types;
    
    /* test if it isn't a valid field */
    if(!isset($_POST[$field])) {
        print_error('VALIDATION: The field '.$field.' is not valid to require validation.',true);
    }
    if(!in_array($type,$data_types)) {
        print_error('VALIDATION: The vaildation type '.$type.' is not valid.',true);
    }
}

// function: parse_required() - reads the required value and builds a nice array
function parse_required($data) {
    // break up each validation
    $each = explode('|',$data);

    // the array to store the validation
    $required_arr = array();

    // loop through each validation set
    while(list($k,$v) = each($each)) {
        $vali_data = explode('.',$v);

        // test if it splitted anything - if not store default
        if(in_array($v,$vali_data)) {
            // get rid of brackets and store values
            $field = eregi_replace('\[|\]','',$vali_data[0]);
            $vali_type = 'blank';

            // determine if the field specified is even valid
            valid_data($field,$vali_type);
        }
        else {
            // store values
            $field = eregi_replace('\[','',$vali_data[0]);
            $vali_type = eregi_replace('\]','',$vali_data[1]);

            // determine if the field specified is even valid
            valid_data($field,$vali_type);
        }

        // make the nice array
        $required_arr[$field] = $vali_type;
    }
    return $required_arr;
}

// function: check_required() - checks the required fields with the proper validation
function check_required() {
    global $required;

    // parse the required data
    $required_arr = parse_required($required);

    /* reset the POST data */
    reset($_POST);

    // loop through and validate the required fields
    $counter = 0;
    while(list($var,$val) = each($_POST)) {
        // is that var apart of required vars?
        if(isset($required_arr[$var])) {
            // perform the validation on the value
            eval("\$ret_val = vali_".$required_arr[$var]."(\"".$var."\",\"".$val."\");");
            if($ret_val == false) {
                $counter++;
            }
        }
    }
    if($counter >= 1) {
        print '<br /><br /><font face="verdana" size="2">Please <a href="#" onclick="history.back(1);">go back</a> and correct these errors. Thank you.';
        exit;
    }
}

function build_mail() {
    global $mail_seperator;
    global $mail_header_data,$mail_header_data_pos;
    
    // build body head
    $head = "FORM INFORMATION:\n";
    $head .= "-------------------------\n";
    $head .= "Sent: ".date("n/d/Y - h:i:s A T")."\n";
    $head .= "Browser: ".$_SERVER["HTTP_USER_AGENT"]."\n";
    $head .= "IP: ".$_SERVER["REMOTE_ADDR"];
    
    // build the form values in to e-mail
    $body = "FORM VALUES:\n";
    $body .= "-------------------------\n";

    // reset the pointer in the post global
    reset($_POST);

    // loop thorugh and output to email
    while(list($var,$val) = each($_POST)) {
        if($var != "submit" || $var != "SUBMIT" || $var != "Submit") {
            if(is_array($val)) {
                while(list($k,$v) = each($val)) {
                    $body .= $var."[".$k."]".$mail_seperator.$val[$k]."\n";
                }
            }
            else {
                $body .= $var.$mail_seperator.$val."\n";
            }
        }
    }

    if($mail_header_data) {
        if($mail_header_data_pos == 'top') {
            $data = $head."\n\n".$body;
        }
        if($mail_header_data_pos == 'bottom') {
            $data = $body."\n".$head;
        }
    }
    else {
        $data = $body;
    }

    return $data;
}

function build_headers() {
    global $mail_from,$reply_to;

    $from_line = $mail_from;
    $reply_line = $reply_to;

    $headers = '';

    if($from_line != '') $headers .= "From: ".$from_line."\n";
    else $headers = $mail_form;
    if($reply_to != '') $headers .= "Reply-to: ".$reply_line."\n";

    return $headers;
}

function send_mail($emails,$subject,$body,$headers) {
    // send the mail to all the e-mails specified
    while(list($index,$email) = each($emails)) {
        $mail = mail($email,$subject,$body,$headers);
        if(!$mail) {
            print_error('The mail did not reach the mail server.',true);
        }
    }
}

if(check_referer() == false) print_error('Access Denied.',true);

check_hidden();

check_required();

$body = build_mail();

$headers = build_headers();

if(QUOTES) $body = stripslashes($body);
send_mail(explode(',',$recipients),$subject,$body,$headers);

if($redirect == false) print '<font face="verdana" size="2"><b>Form was successfully sent.</b></font>';
else @header('Location: '.$redirect);

?>
http://members.lycos.co.uk/negaresh/farsi.html

سامان

امروز: سه شنبه 30 ارديبهشت 1382
 

behsa

Member
آقا پيشاپش از شما متشكرم.
اما ميشه يك كمي برام توضيح بدي چطور استفادش كنم .
با عرض معذرت.
 

saman_sweden

Active Member
توضیح

شما باید یک Database در Mysql بساری البته مطابق اون Form که داری برای نمو نه تو فرومت چندتا ستون وسطر داری و آدرس ایمبلت را بخونه . با وصف اینکه این فقط یک مثال بود که برایتان فرستادم فکر کردم اینکاره ای و میتونه کمکت کنه خود برنامه از چندین قسمت مجرا تشکیل میشود وهمه آنها تو برنامه دیگری بنام Config.php اجزاها را بهم مرتبط میکنه و برنامه دیگری بنام install یا setup همه را به mysql ارجا میدهد

اگه کل برنامه را بخواهی من با اطلاعات دریافتی از شما اونو تو یک هفته درست میکنم منتها خرج داره و طبق قیمت بازار کشور Sweden باشما حساب میکنم که بین 100 تا 700 دلار آمریکا بعلاوه 30 درصد مالیاتش که من باید به دولت بدهم

سامان سوئد
 

behsa

Member
ارسال اطلاعات يك فرم به آدرس يك ايميل

بفرما اين PHP است اکه تو Asp میخواهی برو پیش اهل فنش و یا تماس بگیر


اي بابا چرا كسي متوجه نميشه من چه غلطي ميخوام بكنم. :evil: :(
دوست عزيز من ميخوام اطلاعات فارسي را بفرستم و با توجه به اينكه اين پردازشگرهاي فرم اطلاعات را بصورت text ميفرستند وقتي ايميل را ميخواني اطلاعاتي كه فارسي هستند ناخوانا خواهند بود. بنابراين بايد يك پردازشگري باشه كه اطلاعات داخل فرم را بصورا html بفرسته.
يه چيزي شبيه صفحه ارسال ايميل رايگان سايت
http://members.lycos.co.uk/negaresh/farsi.html
 

Majid

مدیر سایت
عضو کادر مدیریت
سلام

آقا اين واسه php هستش كه توي خود سايت php.net هم هستش اما من يكم توش تغيير دادم اينو ببين ان شالله مشكلت رفع ميشه:
کد:
/* recipients */
$to  = "Mary <[email protected]>" . ", " ; // note the comma
$to .= "Kelly <[email protected]>";

/* subject */
$subject = "Birthday Reminders for August";

/* message */
$message = '
<html>
<head>
 <title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
 <tr>
  <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
 </tr>
 <tr>
  <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
 </tr>
 <tr>
  <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
 </tr>
</table>
</body>
</html>
';

/* To send HTML mail, you can set the Content-type header. */
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";

/* additional headers */
$headers .= "From: Birthday Reminder <[email protected]>\r\n";

$headers .= "Cc: [email][email protected][/email]\r\n";
$headers .= "Bcc: [email][email protected][/email]\r\n";

/* and now mail it */
mail($to, $subject, $message, $headers);


http://www.php.net/manual/en/function.mail.php


مجيد
 

saman_sweden

Active Member
سلام
چرا اول مسئله ات را راحت مطرح نمیکنی من فکر کردم برنامه کلی برای From 2 Email میخواهی اینکه ساده است و نیازی به خرج نداره

برنامه ارسال ایمیل رایگان شبیه اینه و مطمعنم کار میکنه

کد:
<?PHP

$today=date("M-d-Y");  
       $message_n="<html><head>
                   </head><table align=center border=1 bordercolor=$color><tr>
                   <td><p></td></tr>
                   <td><center>Message from:$sender        Send date:$today</center></td></tr>
                   <td><font color=$color size=$size>$message</p>
           </font></td>
                   </tr></table>
           </body><html>";
   }  

$headers .= "MIME-Version: 1.0  \n" ;
$headers .= "From:$sender  \n";
$headers .= "X-Sender:Admin<[email protected]>  \n";
$headers .= "X-Mailer:webFormMailer v1.0001  \n";
$headers .= "X-Priority:$Priority  \n";
$headers .= "Return-Path: <@msn.com> \n";
$headers .= "Content-Type:text/html;charset=iso-8859-1  \n";
 $mail_fn=mail($recipient,$subject,$message_n,$headers);
      echo"Done";
      echo"<br><a href=javascript:history.go(-1)>Back to M.center</a>";


?>

اگه باز مشکلی هست بگو

سامان
 

saman_sweden

Active Member
در تکمیل جواب اولم



قسمت html برای ارسال Email

کد:
<html>
<head>
<title>Anonymous E-mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body bgcolor="#FFFFFF" text="#000000">


<div id="Layer1" style="position:absolute; width:557px; height:384px; z-index:1; left: 244px; top: 144px">
<table width="100%" border="1" height="377" bgcolor="#CCCCCC" bordercolor="#FFFFFF">
<tr>
<td width="24%">To:</td>
<td width="76%">
<form name="form" method="post" action="mail.php3">
<input type="text" name="recipient" size="35">

</td>
</tr>
<tr>
<td width="24%">From:</td>
<td width="76%">

<input type="text" name="sender" size="35">

</td>
</tr>
<tr>
<td width="24%">Subject:</td>
<td width="76%">

<input type="text" name="subject" size="35">

</td>
</tr>
<tr>

<p></p>

</td>
</tr>
<tr>
<td width="24%">Message:</td>
<td width="76%">

<textarea name="message" cols="44" rows="11" wrap="VIRTUAL"></textarea>

</td>
</tr>
<tr>
<td width="24%">Send </td>
<td width="76%">
<input type="submit" name="Submit" value="Send">
<input type="reset" name="Clear" Value="Clear">
</form>
</td>
</tr>
</table>

</div>

</body>
</html>
سامان
 

saman_sweden

Active Member
ببین برنامه را تست کردم کار میکنه اگه بصورت mail.php برنامه را ظبط کنی باید تو قسمت html هم ازmail.php3 به به mail.php عوض کنی

به اینصورت <form name="form" method="post" action="mail.php"> بعد هر دوتا را test.html و mail.php را تو سرور بگذار و امتحان کن


سامان
bng.gif
 

behsa

Member
سلام
چرا اول مسئله ات را راحت مطرح نمیکنی من فکر کردم برنامه کلی برای From 2 Email میخواهی اینکه ساده است و نیازی به خرج نداره

برنامه ارسال ایمیل رایگان شبیه اینه و مطمعنم کار میکنه[quote/]


بابا جان با سر ميزنم تو مونيتور :twisted: :twisted: :twisted:
ببخشيد مونيتورو ميزنم تو سرم :roll:
من والا بلا :( :( :( به پير به پيغمبر فورم تو ميل ميخوام البته از نوع صادراتيش :)
 

saman_sweden

Active Member
behsa1110 گفت:
سلام
چرا اول مسئله ات را راحت مطرح نمیکنی من فکر کردم برنامه کلی برای From 2 Email میخواهی اینکه ساده است و نیازی به خرج نداره

برنامه ارسال ایمیل رایگان شبیه اینه و مطمعنم کار میکنه[quote/]


بابا جان با سر ميزنم تو مونيتور :twisted: :twisted: :twisted:
ببخشيد مونيتورو ميزنم تو سرم :roll:
من والا بلا :( :( :( به پير به پيغمبر فورم تو ميل ميخوام البته از نوع صادراتيش :)

سلام
ببخشید من از دهات اومدم (نه بابا از جنگل) زبون شما را نمیفهمم هر رقم مثال خواستی دادم ایندفعه دردتو واضح بگو تا ریگان هم بفهمه بلکه شاید اون از امریکا برات پست کنه

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

behsa

Member
من قربون همه شما برم كه اينقدر به من لطف داريد. به خدا شرمنده همتون هستم.
در ضمن من هرگز به خودم اين اجاره را نميدم كه به شما انسانهاي گل از گل نازكتر بگم.(چي گفتم :) )
دوست خوبم من ميخوام يك فرم درست كنم كه چند تا فيلد داره .
خوب؟
بعد ميخوام اين اطلاعات به يك آدرس ايميل فرستاده بشه.
خوب؟
ميخوام اطلاعاتي كه وارد ميشه فارسي باشه.
اما اگر از اسكريپتهاي رايج استفاده كنم (form2mail ) تا وقتي كه اطلاعات انگليسي هست
مشكلي نيست . اما وقتي شد فارسي ايملي كه فرستاده ميشه در جملات فارسي مشكل داره.
متوجه شدي دوست خوبم؟
 

Majid

مدیر سایت
عضو کادر مدیریت
سلام

اقا مشكل اينه كه اين وب ميلها مثل ياهو charset صفحشون در حالت windows-1252 هستش و وقتي متن رو يونيكد يعني utf-8 ميفرستيد بايد كاربر دستي encoding صفحه رو تغيير بده.. حالا براي اينكه به اين مشكل بر نخوريد ايميل رو بصورت windows-1252 بفرستيد نه utf-8



مجيد
 

جدیدترین ارسال ها

بالا