پردازش فرم php قسمت دوم

در اولین قسمت از پردازش فرم php آرایه های خالی برای پردازش فیلد های خالی و خطاها ساختیم. بررسی کردیم فرم ارسال شده باشد. مقصد و موضوع برای فرم خود تعیین کردیم چون قرار است فرم از طریق ایمیل ارسال شود. دو آرایه ی expected و required هم برای ممانعت از تزریق متغیر های دیگر و تعیین فیلد های اجباری ایجاد کردیم.

قسمت دوم آموزش

تا به اینجا زمینه هایی برای پردازش فرم ایجاد شده است حال نوبت به هسته ی پردازشگر است که مخصوص این فرم هم نیست و میتوان آن را در هر اسکریپت پردازش فرم دیگری اینکلود کرد. پس یک فایل دیگر به نام processmail.php ایجاد کرده و در فرم خود ، پایین تر از آرایه ی $reqeired اینکلود می کنیم.

کد های زیر را که درباره ی آن توضیح خواهم داد به فایل processmail.php وارد می کنیم.

حلقه ی foreach چکاره است ؟ در فرم پردازشگر ما این حلقه روی آرایه ی $_POST اعمال شده تا از کلید ها و مقادیر آن استفاده کنیم.

تابع is_array بررسی میکند آیا مقدار یک آرایه است یا خیر. اگر آرایه بود مقدار به متغیر $temp نسبت می دهد. اگر آرایه نبود تابع trim فواصل سفید اضافی مقدار را حذف کرده و آن را به $temp نسبت می دهد.

مقدار $temp را چرا نیاز داریم ؟ نیاز داریم تا بررسی کنیم مقدار خالی رها شده یا خیر

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

تابع emty() بررسی میکند که آیا $temp که برابر با مقدار است بعد از حذف فاصله های اول و آخر حاوی مقدار است یا خیر. اگر true باشد تابع in_array چک می کند آیا کلیدش درون آرایه ی $required که همان فیلد های اجباری است وجود دارد یا خیر اگر این نیز true بود بدان معنی است که مقدار وارد نشده اما فیلد اجباری است بنابر این دستورات بلاک اول اجرا میشود و کلید به آرایه ی $missing اضافه می شود و یک متغیر بر اساس نام کلید تعیین کرده و مقدار آن برابر با رشته ی خالی قرار می گیرد.

مثلا نام کلید ما $email است که خالی رها شده.

بخش elseif دستور شرطی در پردازشگر فرم ما چه می کند ؟ بررسی میکند آیا کلید در آرایه ی $expected هست یا نیست. اگر هست متغیر بر مبنای نام کلید ایجاد کرده و مقدار $temp به آن نسبت می دهد.

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

کد بالا متغیر های $missing و $errors را بررسی میکند که در مرحله ی اول به صورت آرایه های خالی ایجاد شده بودند. php با آرایه های خالی به عنوان false رفتار میکند بنابر این پاراگراف درون دستور شرطی برای اولین بار بارگذاری صفحه اجرا نمی شود.

اگر هنگام ارسال یک فرم فیلدی اجباری بوده و خالی رها شود نامش به آرایه ی $missing اضافه می شود و یک آرایه با حداقل یک عنصر true ارزیابی می شود و عملگر || به معنی “یا” است بنابر این true ارزیابی شدن $missing کافی است تا کد درون بلاک اجرا شود که گویای این است که یک فیلد خالی رها شده یا خطایی پیدا شده است. از آرایه ی $errors قرار است بعدا استفاده کنیم.

این اخطاری بود که در بالای فرم نمایش میدادیم. حال می خواهیم پیغام مناسب برای هر فیلد خالی ایجاد کنیم. پیغام را به سادگی درون یک <span> قرار می دهیم

مثال : کد زیر برای نمایش خطا هنگامی که name وارد نشده باشد

اولین شرط در کد پایین آرایه ی $missing را بررسی می کند. اگر خالی باشد که هیچ و پیغامی نمایش داده نمی شود. اما اگر دارای مقدار بود مقدارش true بوده و سراغ شرط مکمل که بعد از && است می رود که شرط بعدی وقتی true ارزیابی می شود که مقدار email درون آرایه ی $missing باشد ( این را توسط کد $missing[] = $key; در فایل پردازشگر تعیین کردیم). اگر حاوی مقدار نبود یعنی درون آرایه ی $missing بود کد بلاک شرطی اجرا می شود و در کنار لیبل name خطا ظاهر می شود.

این کد را میتوان برای بقیه ی مقادیر email و کامنت هم ویرایش کرد و به فرم اضافه کرد.

به صورت زیر برای ایمیل

به صورت زیر برای کامنت

یک بار تست کنید می بینید که با خالی گذاشتن فیلد email پیغام نمایش داده نمی شود و این به این دلیل است که ما برای تست مقدار email را به آرایه ی $required اضافه نکردیم. برای نمایش خطا در جلوی لیبل email مقدار email را به آرای ی $required اضافه می کنیم.

برای تست گول زدن فرم با وارد کردن فاصله های پیاپی مقادیر را وارد کنید و تست کنید. مشاهده می کنید که با وارد کردن space ( فضای خالی ) هم فرم ما گول نمی خورد 😉

زیرا پردازشگر ما فاصله های سفید را با استفاده از تابع trim() پاک کرده است.

کد نهایی پردازشگر فرم

کد نهایی فرم

پایان قسمت دوم – بررسی خالی نبودن فیلد های فرم کامل شد.

2 دیدگاه در “پردازش فرم php قسمت دوم”

  1. سلام روز بخیر
    قبلا ازتون دعوتتون کرده بودم برای عضویت در گروه جامعه وبمستران
    مهندس چرا نیومدی توی گروه
    خوشحال میشیم تشریف بیارید و دوستان دیگه تبادل اطلاعات داشته باشیم
    گروه جامعه وب مستر ها
    https://t.me/joinchat/DBhKUBJE3gUMxzABig66Ig

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

4 × 4 =