فرمها یکی از پرکاربردترین عناصر صفحات وب هستند که باعث ایجاد تعامل بین کاربر و سامانه سرور میشوند. حتما افرادی که از اینترنت، سایتها و شبکههای اجتماعی استفاده میکنند تجربه کار با فرمها دارند. با استفاده از فرمها میتوان اطلاعاتی را به سمت سرور ارسال کرده، پس از پردازش نتیجه یا عملکرد خاصی را از سامانه سرور انتظار داشت. برای ایجاد فرمها از تگ فرم استفاده میشود. اما فرمها به تنهایی نمیتوانند نیاز کاربر را برطرف نمایند. لذا درون فرمها عناصری مانند فیلدها و دکمهها نیز تعریف میشوند.
صفتهای اصلی
یک تگ فرم دارای دو صفت اصلی است که باید همواره در کنار تگ اصلی به کار برد. شکل کلی این برچسب به صورت زیر است :
<form action="آدرسی که اطلاعات فرم به آن ارسال میشوند" method="روش ارسال اطلاعات"> ... </form>
نکته : به جای سه نقطه (…) اجزا و عناصر فرم شامل فیلدها، دکمهها و … استفاده میشوند که در مطالب آتی توضیح داده خواهد شد.
صفت action
درون این صفت یک URL تعریف میشود و آدرسی است که قرار است اطلاعات درون فرم به آن ارسال شوند. این آدرس به دو صورت مطلق و نسبی قابل تعریف است.
صفت method
این صفت نیز نحوه ارسال اطلاعات را تعریف میکند. این صفت همواره یکی از دو مقدار get
یا post
را دریافت میکند.
مقدار get
اگر اطلاعات ارسالی حساس نبوده و دسترسی به آنها توسط دیگران موجب مشکلات امنیتی نمیشود، از طرفی این اطلاعات ارسالی دارای حجم پایینی میباشد نحوه ارسال به صورت get
تعریف میشود. در این حالت، تمامی مقادیر ارسالی به صورت پارامترهای URL تعریف شده و در نوار آدرس قابل مشاهده خواهند بود.
حد اکثر تعداد کاراکترهایی که میتوان با این مقدار ارسال کرد چیزی در حدود 2000 کاراکتر است. لذا معمولا برای ارسال اطلاعات فیلدهای متنی فرم استفاده میشوند.
مقدار post
بر خلاف مقدار get
از این مقدار برای ارسال اطلاعات حساس مانند رمزها استفاده میشود. در این روش، اطلاعات فرم به صورت درخواستهای HTTP ارسال شده و در نتیجه در نوار آدرس مقادیر ارسالی قابل دیدن نخواهد بود.
در این نحوه ارسال، تعداد کاراکتر مطرح نبوده و بر مبنای حجم دادهها این ارسال صورت میگیرد. معمولا به صورت پیشفرض حجم اطلاعات ارسالی فرم چیزی در حدود 2 مگابایت است که در تنظیمات سرور میتوان این مقدار را تغییر داد.
این روش ارسال برای ارسال متن و فایلها مناسب است.
تگ فرم زیر، اطلاعات فرم را از روش get
به فایل save.php ارسال میکند.
<form action="save.php" method="get"> ... </form>
سایر صفتها
صفت enctype
برخی موارد ممکن است بخواهیم فایلی اعم از عکس، فیلم، صدا و هر نوع سند دیگر را از طریق فرم به سرور ارسال نماییم. در این حالت حتما صفت method
برابر post
خواهد بود. اما در کنار آن، صفتی به نام enctype
نیز باید تعریف شود که روش کدگذاری دادههای ارسالی فرم را تعریف میکند.
این صفت دارای مقدار پیشفرض application/x-www-form-urlencoded
است. در این حالت، اگر بخواهیم اطلاعاتی ارسال نماییم، تمامی کاراکترهای Space به کاراکتر + تغییر کرده و سایر کاراکترهای ویژه به کدهای هگزادسیمال اسکی کدگذاری میشوند.
اما اگر بخواهیم فایلی نیز ضمیمه اطلاعات ارسالی نماییم باید مقدار این صفت multipart/form-data
باشد. در این روش، یک فایل به چند بسته اطلاعاتی تقسیم شده و ارسال میشوند. سپس توسط سرور به صورت موقت در فضایی ذخیره شده و پس از ارسال کامل، بستههای داده با هم ترکیب و فایل اصلی را شکل میدهند.
همچنین اگر مقدار این صفت text/plain
باشد، در این صورت بدون هیچ کدگذاری، دادههای فرم ارسال خواهند شد.
کد زیر فرمی با قابلیت ارسال فایل را نمایش میدهد.
<form action="upload.php" method="post" enctype="multipart/form-data"> ... </form>
صفت autocomplete
احتمالا شما نیز هنگام کار با فرمها متوجه شدهاید که اگر قبلا فرمی را تکمیل کرده باشید و بعدا هم بخواهید فیلدهای همان فرم را دوباره پر کنید، اطلاعات قبلی شما در مرورگر ذخیره شده و فیلدها به صورت خودکار تکمیل میشوند. این صفت تعیین میکند که یک فرم قابلیت تکمیل خودکار اطلاعات فیلدها را دارا باشد یا خیر.
این صفت دو مقدار on
یا off
میگیرد. در صورتی که off
باشد حالت تکمیل خودکار فیلدها متوقف خواهد شد. مقدار پیشفرض آن on است.
<form action="save.php" method="get" autocomplete="off"> ... </form>
صفت target
اگر فرم درون یک تگ iframe
تعریف شده باشد، این صفت تعیین میکند که پس از دریافت پاسخ از سرور، در کدام صفحه اطلاعات دریافتی را نمایش دهد. این صفت مقادیر زیر را دریافت میکند.
_top
| _parent
| _blank
| _self
نکته : برای آشنایی با تگهای iframe
به این مطلب مراجعه نمایید.
صفت novalidate
در مبحث فیلدها، میتوان برای هر فیلد قوانینی تعریف کرد که اگر کاربر هنگام تکمیل آن فیلد آن قوانین را رعایت نکرد، امکان ارسال اطلاعات (Submit) میسر نباشد.
مثلا برای فیلد کد ملی میتوان قانون تعداد 10 کاراکتر در نظر گرفت. اگر کاربر کمتر یا بیشتر از 10 کاراکتر درج کرد، امکان ارسال اطلاعات مقدور نشود.
اگر فرمی صفت novalidate
داشته باشد، بدون در نظر گرفتن قوانین فیلدها، اطلاعات ارسال خواهند شد. این صفت به صورت بدون مقدار میباشد.
در کنار این صفتها، صفتهای کمکاربردی مانند accept-charset
، name
و rel
نیز وجود دارند. برای آشنایی بیشتر با این صفتها به لینک زیر مراجعه نمایید.