در این جلسه از سری آموزشهای پیاچپی میخواهیم اولین پروژه کاربردی را با این زبان برنامهنویسی محبوب ایجاد کنیم. پروژه ما اسکریپتی برای ارسال ایمیل است. بدین صورت شما با نحوه ارسال ایمیل و توابع مربوط به آن در PHP نیز آشنا خواهید شد. در ادامه مطلب با ما همراه باشید.
اگر آموزشهای پیاچپی را تا اینجا دنبال کردهاید پس تمامی پیشنیازهای لازم برای شروع کار یک پروژه کاربردی را دارید. میخواهیم در این جلسه یک اسکریپت کاربردی برای ارسال ایمیل ایجاد کنیم و سعی میکنیم علاوه بر استفاده از مباحث قبلی، موارد جدیدی را هم به شما آموزش دهیم.
خب اگر یادتان باشد در جلسات اولیه گفتم که مهمترین مرحله برای ایجاد یک پروژه، الگوریتم آن است. شاید بسیاری از افراد فکر کنند که یک پروژه ساده چه نیازی به الگوریتم دارد. خب شاید تا حدی گفته این افراد درست باشد زیرا بسیاری از پروژههای کوچک را بدون الگوریتمنویسی نیز میتوان ایجاد کرد. اما اگر بخواهیم بعدا اسکریپت خود را ارتقا دهیم و امکانات جدیدی به آن اضافه کنیم یا اشکلاتش را رفع کنیم، در صورتی که از الگوریتم استفاده کرده باشیم کار ما بسیار آسانتر خواهد شد.
پس اولین کاری که برای ایجاد پروژه ارسال ایمیل انجام میدهیم ترسیم یک الگوریتم است. پیش از اینکه بخواهید الگوریتم را ایجاد کنید باید در نظر داشته باشید که اسکریپتی که قصد ایجادش را دارید قرار است چه کاری را انجام دهد؟ خب در اینجا ما میخواهیم سیستم ارسال ایمیل تحت وب ایجاد کنیم پس مهمترین بخشهایی که پروژه ما باید داشته باشد به شرح زیر است:
- یک فیلد برای وارد کردن ایمیل مقصد (آدرسی که ایمیل به آن ارسال خواهد شد)
- یک فیلد برای وارد کردن نام ارسال کننده
- یک فیلد برای وارد کردن موضوع ایمیل
- یک فیلد برای نوشتن متن ایمیل
- یک دکمه برای ارسال ایمیل
- یک دکمه برای ریست کردن فرم
- یک صفحه پیاچپی که عملیات پردازش و ارسال ایمیل را انجام دهد
خب این موارد مهمترین بخشهایی هستند که ما باید ایجاد کنیم. ما باید دو فایل ایجاد کنیم که البته میتوان کل پروژه را در یک فایل ایجاد کرد اما بهتر است هر بخش را در یک فایل جداگانه ایجاد کنیم. الگوریتم سادهای که من برای این پروژه در نظر گرفتهام به این صورت است:
- کاربر اطلاعات خواسته شده را در فرم وارد میکند
- اطلاعات به صفحه بررسی و ارسال ایمیل ارسال می شوند
- در صفحه بررسی و ارسال ایمیل چک میکنیم که آیا کاربر تمامی فیلدها را پر کرده یا خیر. اگر فیلدها به درستی پر شده بود به مرحله ۴ میرویم و اگر پر نشده بود کاربر را به مرحله ۱ انتقال میدهیم
- حال براساس اطلاعاتی که کاربر وارد کرده ایمیل موردنظر را با کمک PHP ارسال می کنیم.
- بررسی میکنیم که آیا ایمیل با موفقیت ارسال شده یا خیر. اگر با موفقیت ارسال شده بود، باید پیامی مبنی بر ارسال موفق ایمیل به کاربر نمایش داده شود در غیر این صورت پیام خطای مناسب به کاربر نمایش داده شود
همانطور که میبینید در ۵ مرحله به سادهترین حالت ممکن الگوریتم پروژه ارسال ایمیل را ایجاد کردیم. البته میتوان از الگوریتمهای دیگری هم استفاده کرد و شاید الگوریتم موردنظر شما بسیار بهتر از الگوریتمی باشد که در بالا نوشتهام. اما برای یکپارچه شدن آموزش براساس همین الگوریتم پروژه را ایجاد میکنیم.
ابتدا نرمافزار زمپ را اجرا کرده و در پوشه htdocs یک پوشه جدید به نام email میسازیم. سپس در این پوشه دو فایل به نامهای index.php و send.php ایجاد میکنیم. فایل اول قرار است فرم ما را نشان دهد و فایل دوم پردازشگر و ارسال کننده ایمیل است.
در فایل index.php مطابق با نیاز خود که در بالا به آن اشاره کردم یک فرم با فیلدهای موردنظر ایجاد میکنیم. برای زیباتر شدن نتیجه کار میتوانید از دستورات اچتیامال بهره ببرید ولی ما به منظور سادهتر بودن هر چه بیشتر کدها از حداقل کد ممکن استفاده کردهایم.
<form method=”post” action=”send.php”>
email to : <input type=”text” name=”email”><br>
your name : <input type=”text” name”uname”><br=
subject : <input type=”text” name=”subject”><br>
message : <textarea name=”message” rows=”3″ cols=”4″></textarea>
<input type=”reset” value=”Reset”>
<input type=”submit” value=”Send Email”>
</form>
در فرم بالا ما به تعداد مورد نیاز فیلد ایجاد کردهایم. فیلد ایمیل، نام کاربر، موضوع و متن پیام و نیز دو دکمه ریست و ثبت فرم.
حالا در فایل send.php باید کد زیر را قرا دهید:
<?php
$mailto = trim($_POST[’email’]);
$username = trim($_POST[‘uname’]);
$subject = trim($_POST[‘subject’]);
$message = trim($_POST]’message’]);
//merge name and message
$final_message = $username . ” : ” . $message;
if ($mailto != “” && $username !=”” && $subject !=”” && $message != “”)
{
//we know user filled the form
$email_send = mail ($mailto, $from_mail, $final_message);
//check for send email
if ($email_send){
echo “Your Email Has Been Send Successfully!”;
}else{
echo “sorry, there is problem in sending email, try again!”;
}
}else{
echo ‘You Must Fill All Fields! Go <a href=”index.php”>Back</a>’;
}
?>
حال میخواهیم کد بالا را تحلیل کنیم. در واقع تمامی نکات کد بالا را قبلا یاد گرفتهاید اما در اینجا یک مرور کلی به کد داریم. ابتدا مقادیری که کاربر در فرم وارد کرده را درون چند متغیر قرار دادهایم. همچنین از تابع trim پیاچپی استفاده کردهایم تا فاصلههای اضافه اول و آخر عبارات وارد شده در هر فیلد به صورت خودکار حذف شود. سپس با یک دستور if بررسی کردهایم که در صورتیکه تمامی فیلدها خالی نباشند و کاربر یک مقدار در آنها وارد کرده باشد کد بخش صحیح بودن شرط اجرا شود و در غیر این صورت پیام خطایی به او نمایش داده میشود و یک لینک برای بازگشت به صفحه فرم در اختیار وی قرار میگیرد. اما در صورت صحیح بودن شرط با استفاده از تابع mail اقدام به ارسال ایمیل میکنیم و سپس مقدار بازگشتی این تابع را در متغیر email_send قرار میدهیم.
در مورد مقادیر بازگشتی در جلسه آموزش تابع مفصلا توضیح دادیم. اما در اینجا بد نیست بدانید در صورتی که ارسال ایمیل موفق باشد این تابع مقدار true را برمیگرداند و اگر ایمیل به هر دلیلی ارسال نشود مقدار بازگشتی تابع false خواهد بود.
پس در نتیجه مقدار متغیر email_send یا true میشود یا false. سپس با یک دستور if مجددا بررسی کردهایم که اگر ارسال ایمیل موفق بوده یعنی email_send = true بوده باشد، پیام موفق بودن ارسال ایمیل و در غیر این صورت، (یعنی email_send = false بوده) پیام خطای ارسال نشدن ایمیل به کاربر نمایش مییابد.
نکته: ما نام کاربر و متن پیام او را به هم ترکیب کردهایم و در یک متغیر دیگر به نام final_message قرار دادهایم تا کسی که ایمیل را دریافت میکند بداند این ایمیل از طرف چه شخصی برایش ارسال شده است.
تابع ارسال ایمیل را میتوان با تنظیمات و سفارشیسازیهای زیادی مورد استفاده قرار داد. اما برای شروع کار باید بدانید که این تابع به صورت پیشفرض و در سادهترین حالت ممکن چند ورودی دریافت میکند. همانطور که در کد زیر میبینید در هنگام استفاده از این تابع باید حداقل سه ورودی داشته باشد. آرگومان اول آدرس ایمیلی است که قصد داریم به آن ایمیل ارسال کنیم. آرگومان دوم موضوع ایمیل و آرگومان سوم متن ایمیل است.
<?php
mail(’email@domain.com’, ‘subject’, ’email message’);
?>
همچنین به این نکته باید توجه کنید که برای استفاده از این تابع الزاما نیاز نیست مقدار بازگشتی آن را برابر یک متغیر قرار دهیم. در واقع در کد اسکریپت ارسال ایمیل، ما به این دلیل تابع را در برابر یک متغیر قرار دادیم تا از این طریق بتوانیم کنترل بیشتری بر روی عملیات داشته باشیم و پیام خطای مناسب را ایجاد کنیم.
اگر دقت کرده باشید اسکریپت نوشته شده توسط ما دقیقا منطبق بر همان الگوریتم ساده اولیهای است که نوشته بودیم. یعنی تک تک مراحل بهخوبی در پیاچپی پیادهسازی شدهاند.
با کمی تغییرات و زیباتر کردن کد بالا میتوانید یک اسکریپت کاربرپسند و کاربردیتر ایجاد کنید. به عنوان تمرین از css و html به منظور زیباتر شدن فرم ارسال ایمیل و حتی صفحه ارسال ایمیل و نمایش پیامها بهره ببرید. همچنین در صورتی که هرگونه سوالی در این مورد برایتان پیش آمده آن را در بخش نظرات اعلام کنید.
همچنین میتوانید از آنچه که در این جلسه یاد گرفتید به منظور ایجاد فرم تماس با ما برای سایت خود استفاده کنید.
در جلسات آینده و در پروژههای پیچیدهتر روش ارسال ایمیل با ضمیمه و نیز ایمیلهای HTML و UTF-8 را خواهید آموخت. فعلا سعی کنید مباحثی که تا اینجا آموزش داده شده را به صورت روان و کامل یاد بگیرید چراکه رفته رفته با بکار گرفتن پروژههای سنگینتر کار شما کمی بیشتر میشود.
ممنون اموزش های مفیدی هستن