آموزش ساخت فرم تماس با ما php همراه با کد امنیتی

sunyniazi

تازه وارد
:)

حالا اگه بخوایم یه فایل رو هم attach کنیم چکار باید بکنیم

فایل با پسوندهای مشخص شده

با سایز مشخص شده

و .....

 

samira

تازه وارد
سلام. من یه فرم ثبت نام طراحی کرده ام که حاوی فیلدهایی مثل “نام” – “تلفن” – “ایمیل” – “ادرس” – “شماره حساب” و… هست. توی موتور ارسال کنند این خط کدها را قرار داده ام:

<?php

$to = 'MY EMAIL';

$from = 'NAME';

$message = $_REQUEST['content'];

$subject = 'SUBJECT';

$header = "From: ” .”\r\n”;

$send = @mail($to, $subject, $message, $header);

if(!$send){

die();

}

?>

بدین ترتیب ایمیل ارسال میشه ولی فقط اطلاعات فیلدی که با نام content هست رو ارسال می کنه! هرکاری هم کردم اطلاعات فیلدهای دیگه رو ارسال نمی کنه! میشه راهنمائیم کنید چجوری و در کجای این کدها باید نام فیلدهای دیگه رو به بدنه ی ایمیل اضافه کنم!؟

فیلدهام:

Name: نام و نام خانوادگی

Phone: تلفن

Address: آدرس

accoun: شماره حساب

content: پیغام

اگر هم کسی لطف کنه بگه چجوری میشه اطلاعات این فیلدها رو بصورت جدول و منظم ایمیل کنم ممنون میشم.

یعنی مثلا ی جدول واسم ایمیل بشه که اطلاعات فیلدها منظم داخلش قرار بگیره!

یکدنیا ممنونم. خیلی از کدنویسی سردرنمیارم. ممنون میشم کدش رو بهم بگید.

مرسی :53:

 

Mohammad

مدیر انجمن
پرسنل مدیریت
خب شما متغیر message رو میفرستی! شما یک کاری میتونی بکنی. تمامی متغیر هایی که میخوای از یوزر بگیری رو بزار توی یک متغیر مثل text. بعد اون رو بفرست.(جایگزین message کن)

برای تر تمیز کردن هم باید html اضافه کنی...! بدون مشکل ارسال میشه. تاپیک های دیگه رو ببین. نمونه فرم منظم گذاشتیم...

 

Mesmaili

کاربر عضو
محمد ميگم يه فرم آماده كن كه همه ي مدل فيلدها باشه :دي

رايديو باتن ، باكس ، منو كشويي چك باكس و.. :دي :دي

 

shaahin.shk

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

 

samira

تازه وارد
خب شما متغیر message رو میفرستی! شما یک کاری میتونی بکنی. تمامی متغیر هایی که میخوای از یوزر بگیری رو بزار توی یک متغیر مثل text. بعد اون رو بفرست.(جایگزین message کن)برای تر تمیز کردن هم باید html اضافه کنی...! بدون مشکل ارسال میشه. تاپیک های دیگه رو ببین. نمونه فرم منظم گذاشتیم...
درسته ولی وقتی بخوام متغییر های دیگه رو اضافه کنم، ایمیل ارسال میشه اما خالی! حتی دیگه متغییر message هم ارسال نمیشه!!!

چجوری باید متغیر های دیگه رو هم اضافه کنم که این مشکل پیش نیاد؟! میشه کدی که باید قرار بدم رو اینجا بذارید؟!

این که گفتید همه متغییر ها رو بذارم تو ی text بعد بفرستمش یعنی چجوری؟ من بلد نیستم! چجوری باید بذارم داخل text؟ چجوری باید ارسال کنم؟

لطفا کدی که باید واسه موتور ارسال کننده قرار بدم تا اطلاعات همه فیلدها رو به ایمیلم ارسال کنه رو اگه میشه اینجا بذارید.

شاید بدرد بقیه هم بخوره!

مرسی

 

shaahin.shk

تازه وارد
سلام محمد جان ، هنوز نتونستی کاری برامون بکنی ؟ من از این فرم استفاده کردم ، ولی ایمیل به صورت زیر برام میاد :

ط´ط§ظ‡غŒظ†ط§غŒظ† ظ…طھظ† ط¨ظ‡ طµظˆط±طھ ظپط§ط±ط³غŒ ط§ط±ط³ط§ظ„ ط´ط¯ظ‡ ط§ط³طط´ط§ظ‡غŒظ†ط§غŒظ† ظ…طھظ† ط¨ظ‡ طµ(( ظˆط±طھ ظپط§ط±ط³غŒ ط§ط±ط³ط§ظ„ ط´ط¯ظ‡ ط§ط³ط))

هاست من هم رایگان نیست و پیام ها رو به ایمیل داخلی هاست ارسال می کنم ، از یونیکد هشت هم پشتیبانی می کنه ، اگر مشکلش رو میدونی لطفا راهنماییم کن .

 

jjkalu

تازه وارد
سلام.

من این فرم رو ساختم و همه چیزش اومد و پیام هم ارسال شد ولی به ایمیلم نرسید.

اگه میشه بگید چیکار کنم.

مرسی از فروم خوبتون.

 

shaahin.shk

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

 

reza63

تازه وارد
سلام

من این ارور رو دارم بالای صفحه:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

توی گوگل هم خیلی واسه رفع این ارور جستجو کردم گفته شده بود ابتدای فایل کد های خاصی بزارم که همه مدل رو گذاشتم اما رفع نشد. لطفآ بگید چطور رفع می شه؟

 

shaahin.shk

تازه وارد
سلام دوستان

بالاخره بعد از مشقت زیاد موفق شدم مشکل ارسال ایمیل این فرم رو پیدا کنم ، دوستانی که برای ارسال به صندوق پستشون مثل جیمیل یا یاهو و ... مشکل داشتن به این نکته توجه کنن :

معمولا در سایت ها فرستنده ایمیل باید خود شما باشید ، یعنی این ایمیل باید از صندوق پستی هاستتون مثل example@yoursite.com ارسال بشه .

به کد زیر نگاه کنید :

$from = $_POST['email'];

حالا روبروی from آدرس ایمیل خودتون رو معرفی کنید ، مثل :

$from = ini_set("sendmail_from", "admin@yoursite.com");

حالا میتونید آدرس ایمیل هاستتون رو به جای آدرس ایمیل فعلی بذارید .

امیدوارم مشکل شما هم مثل من حل شده باشه ، اگر نتونستید کد رو بخونید اون رو تو نت پد کپی کنید .

اگر سئوالی بود خوشحال میشم کمک کنم .

 
آخرین ویرایش توسط مدیر:

taniya

تازه وارد
سلام دوستان

در خصوص کدی که ارائه شده دو تا درخواست داشتم

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

و دوم اینکه بعد از کلیک روی دکمه ارسال، کاربر به صفحه دیگری ارجاع داده بشه

امکانش هست این تغییرات رو ارائه بدید؟

با تشکر

 

خادم

تازه وارد
در این مطلب قصد داریم آموزش دهیم که چگونه یک فرم تماس با ما همراه با کد امنیتی طراحی کنید و در سایت خود استفاده نمایید. :53:

how-to-create-contact-form.jpg

مواد اولیه :d:

  1. نرم افزار محبوب Notepad++ -
  2. یا نرم افزار DreamWeaver -

نیازمندی های درک آموزش:

  1. آشنایی با مفاهیم HTML و CSS
  2. آشنایی با PHP در حد مبتدی

شروع آموزش:

مرحله اول: طراحی فرم تماس با ما (html)

در ابتدا یک صفحه php در نرم افزار DreamWeaver میسازیم و داخلش یک فرم شبیه به زیر طراحی میکنیم. نام این صفحه رو میزاریم contact.php

(طراحی Table یا CSS بستگی به خود شما داره)

من چند فیلد و یک دکمه در این فرم گذاشتم که name (نام) هر فرم به صورت زیر هست:

نام: name

ایمیل:email

موضوع:subject

متن پیام:message

بعدا هم قراره برای کد امنیتی یک فیلد با نام code تعریف کنم.

و دکمه (submit)

من فرم خودم رو طراحی کردم و به این صورت در اومده:


کد:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>تماس با ما</title>
<link href="style.cیss" rel="stylesheet" type="text/css">
</head>
<body>
<div id="main">
<div class="content">
<h2>ارتباط با ما</h2> 
    <p>برای تماس با ما میتوانید از فرم زیر استفاده نمایید</p>
    <div class="forms">                        
    <form action="" method="post">
    <label for="username"> نام : </label>
    <input type="text" class="form" value="" name="name">
    <br/><br/><br/>
    <label for="email"> ایمیل : </label>
    <input type="text" id="email" value="" class="form-ltr" name="email">
    <br/><br/><br/>
    <label for="sub"> موضوع : </label>
    <input type="text" id="sub" value="" class="form" name="subject">
    <br/><br/><br/>
    <label for="mess"> پیام شما : </label>
    <textarea class="form" id="mess" rows="7" name="message"></textarea>
    <br/>

    <br/><br/><br/>
    <input type="submit" name="submit" value="  ارسال  ">
    </form>
    </div>
    </div>


</div>
</body></html>
همون طور که میبینید من فرم رو به وسیله POST به همین صفحه ارسال میکنم.

پیشنمایش:

You must be registered for see images attach


--------------------------

مرحله دوم - طراحی CSS:

من برای زیبا کردن طرح فرم تماس با ما, کد CSS رو طراحی کردم. برای class form,content,... همچنین برای input و textarea هم CSS تعریف کردم که به این صورت در اومده:


کد:
body {
    font-family:tahoma;
    font-size:8pt;
    color:#787878;
    direction:rtl;
    text-align:right;
    margin:0 auto;
    width:500px;
    padding:0px;
    background-color:#fff;

}

.error{
    width:400px;
    border:1px #d3400d solid;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    margin:5px 10px 10px 10px;
    padding:10px 10px 10px 10px;
    background:#ff8053;
}

.ok{
    width:400px;
    border:1px #a1cb45 solid;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    margin:5px 10px 10px 10px;
    padding:10px 10px 10px 10px;
    background:#eaf8cc;
    display:block;

}

#main{
    background-color:#ffffff;
}

.clear{clear:both}

form {
    margin:0px;
    padding:0px;
}

a {
    color:#ffffff;
    text-decoration:none;
}

a:hover {
    color:#fec053;
}

input, select, textarea {
    font-family:tahoma;
    padding:5px;
    font-size:8pt;
    border: 1px solid #cacaca;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
}
input[type="submit"]{
    font-family:tahoma;
    padding:5px;
    font-size:9pt;
    border: 1px solid #cacaca;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
}

input[type="submit"]:hover{
    font-family:tahoma;
    padding:5px;
    font-size:9pt;
    border: 1px solid #7613ae;
    background:#7613ae;
    color:#fff;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
}

input:hover ,select:hover,textarea:hover {
    border: 1px solid #6295f3;
    padding:5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
}

.content {
    -webkit-border-radius: 20px;
    -moz-border-radius: 20px;
    margin:50px 0 0 0;
    padding:10px;
    text-align:justify;
    border:1px solid #F2F2F2;

}

#copyright{padding-top:20px;text-align:center}

.forms {
    direction: rtl;
    padding-right:20px;
    text-align: right;
    font: normal 11px Tahoma, Geneva, sans-serif;
}
.forms h2 {
    font: bold 11px tahoma;
    padding: 8px 2px;
    border-bottom: 1px solid #CCC;
}

.forms label {
    width: 100px;
    float: right;
    margin: 5px 0 0 0;
}

.forms .form, .forms .form-ltr {
    width: 200px;
    float: right;
    padding: 2px;
    font: normal 11px Tahoma, Geneva, sans-serif;
    margin: 5px 0;
}
.forms .form-ltr {
    direction: ltr;
    text-align: left;
}
.forms .text {
    width: 250px;
    height: 100px;
    overflow: auto;
    font: normal 11px/1.4 Tahoma, Geneva, sans-serif;
}
پیشنمایش:

You must be registered for see images attach


-----------------------

مرحله سوم - ساخت فایل کد امنیتی:

من قصد دارم یک تصویر بسازم که داخلش چند عدد (چهار رقم) رو به صورت تصادفی بسازه و به کاربر نمایش بده. بعدا قراره ما با استفاده از سشن (session) ها بررسی کنیم که آیا مقدار وارد شده کاربر با مقدار داده شده درست هست یا خیر

کد ساخته شده به شرح زیر هست: این کد رو با نام captcha.php ذخیره میکنیم.


کد:
<?php

session_start();

$string = '';

for ($i = 0; $i < 4; $i++) {
    // this numbers refer to numbers of the ascii table (lower case)
    $string .= chr(rand(48, 57));
}

$_SESSION['rand_code'] = $string;

$dir = 'fonts/';

$image = imagecreatetruecolor(170, 60);
$black = imagecolorallocate($image, 0, 0, 0);
$color = imagecolorallocate($image, 100, 100, 90);
$white = imagecolorallocate($image, 255, 255, 255);

imagefilledrectangle($image,0,0,399,99,$white);
imagettftext ($image, 30, 0, 10, 40, $color, $dir."acmesai.ttf", $_SESSION['rand_code']);

header("Content-type: image/png");
imagepng($image);

?>
همون طور که در کد بالا میبینید ما از یک پوشه با نام fonts یک فونت با نام acmesai.ttf رو برای نمایش اعداد با این فونت میخونیم.

و از آخر به صورت خروجی تصویر چاپ میکنیم.(تنظیمات دیگه ای مثل رنگ اعداد و... هست که خودتون میتونید به دلخواه وارد کنید.

-------------

حالا ما برای نمایش کد امنیتی در فرم خودمون این کد رو به فرم اضافه میکنیم.


کد:
<label for="Email"> کد امنیتی : </label>
    <image src="captcha.php" />
    <br/><br/><br/>
    <label for="code"> وارد کنید : </label>
    <input type="text" value="" id="code" class="form-ltr" name="code">
    <br/><br/><br/>
مرحله چهارم - بررسی و ارسال ایمیل:

در این مرحله ما وارد فایل contact.php میشیم و بالای کد های html , دستورات php رو آغاز میکنیم.

مینویسیم :


کد:
<?php

session_start();

if(isset($_POST['submit'])) {

    if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']) && !empty($_POST['code']) && !empty($_POST['subject'])) {

        if($_POST['code'] == $_SESSION['rand_code']) {

            // send email

            $accept = "پیغام شما با موفقیت ارسال شد. با تشکر";
            $to = "persianscript.ir@gmail.com";
            $subject = $_POST['subject'];
            $from = $_POST['email'];
            $user_message = $_POST['message'];

            $body = "\n".
            "نام: $name\n".
            "ایمیل: $from \n".
            "توضیحات: \n ".
            "$user_message\n".

            $headers = "From: $from \r\n";
            $headers .= "Reply-To: $from \r\n";

            mail($to, $subject, $body, $headers);
        } else {

            $error = "کد امنیتی را اشتباه وارد کرده اید! دوباره امتحان کنید";

        }

    } else {

        $error = "لطفا تمامی فیلد ها را تکمیل نمایید.";

    }

}

?>
در ابتدا ما لایه جلسه رو روشن میکنیم. (سشن ها - برای بررسی صحت درست ارسال شدن کد امنیتی)

سپس با دستور شرط میگیم اگر کاربر دکمه submit را زده بود دستورات زیر مجموعه را اجرا کن

بعد از مرحله بالا ما شرط میزاریم که اگر فیلد های name,emailmsubject,message,code توسط کاربر خالی ارسال نشده بود کد های زیر رو اجرا کن در غیر اینصورت مقدار error برابر هست با "لطفا تمامی فیلد ها را تکمیل نمایید."

(قرار هست بعدا مقدار error یا accept چاپ بشن که کاربر رو از وضعیت فرم اگاه کنن)

در دستور بعدی ما میگیم در صورتی که سشن code که توسط کاربر ارسال شده برابر با مقدار داده شده کد تصادفی (rand_code) هست محتویات رو ایمیل کن و به کاربر بگو که فرم شما ارسال شد در غیر اینصورت بگو کد امنیتی رو اشتباه وارد کردی!

حالا در صورتی که کاربر کد رو درست ارسال کرده بود و تمامی شرط ها بر قرار بود و کاربر کد امنیتی رو درست ارسال کرده بود ما میایم و مقدار های ارسال شده توسط کاربر رو داخل یک متغیر میریزیم و بعد با استفاده از تابع mail() میفرستیم به کاربر

کدوم کاربر؟ همون کاربری که ایمیلش داخل قسمت متغیر $to هست.

در آخر برای نمایش وضعیت فرم ارسالی به کاربر کافیه فقط کد های زیر رو در محل دلخواه قرار بدید


کد:
<?php if(!empty($error)) echo '<div class="error">'.$error.'</div>'; ?>
<?php if(!empty($accept)) echo '<div class="ok">'.$accept.'</div>'; ?>
این کد ها میگن در صورتی که مقدار error یا accept خالی نبود اون وقت چاپشون کن!

تمام...

پیشنمایش کامل اسکریپت:

You must be registered for see images attach


شما میتونید سورس کامل این آموزش رو دانلود کنید


چطور مي شه اسكريپتي نوشت كه وقتي كاربر فرم رو پر مي كنه يك ايميل بهش بزنيم و تشكر كنيم؟

 

iPersianScript

کاربر عضو
چطور مي شه اسكريپتي نوشت كه وقتي كاربر فرم رو پر مي كنه يك ايميل بهش بزنيم و تشكر كنيم؟
.

. سـلام :55:

. ابتدا : لطفا وقتی مشاهده می کنی یه پست حجم بالایی داره "نقل قول" نکنش! :77:

. و در جواب شما، قبلا یه فرمی ارائه شده بود که این قابیلت رو داشت که به اصطلاح ایمیل تشکر بفرسته.. :|:|

. کمی جستجو کن.. تو سایت البته - اگه خودمم یافتم لینکش رو میزارم.. :67:

. مـوفق باشیـد :54:

.

 

iPersianScript

کاربر عضو
.

. همش چند دقیقه ناقابل زمان برد! /:)

.

. خـوش باشیـد :54:

.

 

iPersianScript

کاربر عضو
.

. همش چند دقیقه ناقابل زمان برد! /:)

.

. خـوش باشیـد :54:

.

 

mahdiali35

کاربر عضو
تو فایل contact.php بعد از خط 17 کدهای زیر رو وارد کن:

$ok = "Thanks for your comments";
$sub = "thanks";
mail($from, $sub , $ok);​
کد:
ok$ متن تشکر هست که ارسال میشه (به ایمیلی که وارد کرده) که تو اینجا Thanks for your comments هستش sub$ هم عنوان ایمیل هستش که میتونی هر دوی اینا رو تغییر بدی from$ هم که ایمیل نظردهنده هست....

موفق باشید....

 

خادم

تازه وارد
تو فایل contact.php بعد از خط 17 کدهای زیر رو وارد کن:

$ok = "Thanks for your comments";
$sub = "thanks";
mail($from, $sub , $ok);​
کد:
ok$ متن تشکر هست که ارسال میشه (به ایمیلی که وارد کرده) که تو اینجا Thanks for your comments هستش sub$ هم عنوان ایمیل هستش که میتونی هر دوی اینا رو تغییر بدی from$ هم که ایمیل نظردهنده هست....

موفق باشید....
خيلي خيلي ممنون كارم رو راه انتداخت

يك سوال: چكار كنم كه خيلي خوشگل تر ارسال كند(منظور رنگ بندي نوشته ها لينك دادن و...)

 
بالا