آموزش برنامه نویسی پی اچ پی قسمت دهم
در این جلسه از سری آموزشهای پیاچپی میخواهیم اولین پروژه کاربردی را با این زبان برنامه نویسی محبوب ایجاد کنیم. پروژه ما اسکریپتی برای ارسال ایمیل است. بدین صورت شما با نحوه ارسال ایمیل و توابع مربوط به آن در 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 را خواهید آموخت. فعلا سعی کنید مباحثی که تا اینجا آموزش داده شده را به صورت روان و کامل یاد بگیرید چراکه رفته رفته با بکار گرفتن پروژههای سنگینتر کار شما کمی بیشتر میشود.
منبع: www.zoomit.ir