فـُرم

سلام

تغييرات:
- در همين جلسه، تغييراتي داده شده. (سه‌شنبه 20 ارديبهشت)
- در جلسه 7، تغييراتي داده شد. (پنجشنبه 25 فروردين)

اينبار به مقوله‌اي مي‌پردازيم كه هم كاربردي است و هم محلي براي تمرين دروس قبلي.

اگر به خاطر داشته باشيد، گفته شد كه قسمتي از برنامه نويسي، با داده‌هايي سر و كار دارد كه از كاربران، دريافت مي‌شود. دريافت اطلاعات، راه‌هاي مختلفي دارد كه مهمترين و معروفترين آنها، استفاده از فرم است.

روزانه، فرمهاي مختلفي را پر مي‌كنيم. فرم ثبت نام در يك اداره، فرم باز كردن حساب در بانك، فرم ثبت نام در قرعه‌كشي، و ... . حتما در اينترنت هم با امثال اين فرمها، روبرو شده‌ايد. مثلا فرم عضويت در يك پايگاه، فرم ثبت يك ايميل در ياهو، فرم ارسال نامه، يا مثلا فرم نظرخواهي همين وبلاگ. آيا تا به حال، به طرز كار اين فرمها فكر كرده‌ايد؟ براي شما كه يك برنامه‌نويس هستيد، توجه به ساختمان و ماهيت فرم - و اشياء ديگر - لازم است.

«پايگاههاي وب، از فرمها براي منظورهاي مختلفي استفاده مي‌كنند. از قبيل: ثبت نام كردن كاربران، و يا ورود آنها به فضاهاي خاص وب (Login)، دريافت نظرات و فرمهاي نظرسنجي، و يا خريد و فروش آنلاين.»
 

ساختمان فرم

هر فرمي، عمليات خود را - كه دريافت و ارسال داده باشد - در سه بخش، انجام مي‌دهد.

  • اسكلت و ظاهر: اين بخش - كه تشكليل شده از تعدادي جعبه متن (فيلد) و دكمه - توسط اچ‌تي‌ام‌ال ساخته مي‌شود. البته با نرم‌افزارهايي - كه قبلا نام برديم - اين كار، سريعتر و دقيقتر انجام مي‌شود. اين قسمت، مكان نوشتن اطلاعات، توسط كاربر است.
  • خطاياب: اين بخش، تخصص جاوا اسكريپت است. يك حد مياني بين اچ‌تي‌ام‌ال و زبان سِروري. در اين قسمت، اطلاعات وارد شده توسط كاربر، كنترل مي‌شود. مثلا تمامي فيلدهايي كه بايد نوشته شود، پر شده يا نه؟ و  آيا تركيب ايميلي كه وارد شده، درست است؟ در صورت وجود خطا، با اخطار به كاربر، مانع از ارسال مطالب به صورت ناقص يا نادرست مي‌شود.
  • ارسال و ذخيره اطلاعات: اين قسمت، به عهده يك زبان سروري مانند asp و php است، و از حيطه مسؤوليت جاوا، خارج است.

با توجه به اين تقسيم بندي، وظيفه جاوا، مشخص شده و دقيقا مي‌دانيم كه از او چه مي‌خواهيم.

داخل پرانتز:
با توجه به مطالبي كه گفته شد، بديهي است كه از بعضي از فرم‌ها نمي‌شود در وبلاگ استفاده كرد؛ يا حتي در سايتهايي كه فضايشان را به صورت رايگان، تهيه كرده‌اند؛ چون اينگونه فضاها، اجازه نوشتن و اجراي زبان سروري را نمي‌دهند.
 

اجزاي فرم

فرمها، بسته به نياز ما، مي‌توانند ساده يا پيچيده باشند. كمترين حد فرم، يك جعبه متن و يك دكمه ارسال (Submit) است؛ همانند فرم ثبت نامي كه در همين وبلاگ، قرار داده‌ام.

نام:

دكمه Reset كه يك دكمه اختياري است، براي پاك كردن فرم است. اين ساده‌ترين شكل فرم است.
 

اسكلت فرم (كد HTML)

<form method="post" action="test.htm" name="Form1"  onSubmit="return funForm()"><!--  شروع فرم -->
نام:
<input type="text" value="" name="Name"><!--  جعبه متن -->
<input type="submit" value="Submit" name="B1"><!--  دكمه ارسال -->
<input type="reset" value="Reset" name="B2"><!--  دكمه پاك كردن -->
</form><!--  پايان فرم -->

method = نوع ارسال اطلاعات را معين مي‌كند، كه دو نوع است: post, get. اين دو روش با تفاوتهايي، عمليات ارسال را انجام ‌مي‌دهند. روش پُست، عمومي‌تر است و  از لحاظ امنيتي، برتري دارد. اگر متد را ننويسيد، از پُست، استفاده مي‌شود.
action = محلي را نشان مي‌دهد كه اطلاعات، براي پردازش، به آنجا ارسال خواهد شد؛ يعني آدرس يك صفحه است، كه در اينجا براي مثال، test.htm را انتخاب كرده‌ام.
name = نام فرم.
onSubmit = يك رويداد است. تابعي را كه در جاوا اسكريپت، نوشته‌ايد را صدا مي‌كند.

فراموش نكنيد كه براي هر جزء، نامي بگذاريد. تا اينجاي كار، اسكلت و ظاهر فرم، ساخته شده است.
 

خطايابي (كد جاوا)

 • از اين به بعد، به بخش خطايابي مي‌پردازيم. اول بايد در نظر بگيريم كه خطا از نظر ما چيست.
- مثلا در يك فرم ارسال ايميل، نبايد آدرس ايميل غلط باشد.
- يا مثلا متني كه نوشته مي‌شود، نبايد بيشتر يا كمتر از فلان حد باشد.
- يا موردي كه بايد نوشته و مشخص شود، خالي مانده.

 پس بايد طوري برنامه نويسي كنيم كه مانع انجام اين اشتباههات بشويم.

 • در فرم ساده ما، خطا، زماني است كه اسمي نوشته نشود، و فرم خالي ارسال شود. پس بايد با كمك جاوا بنويسيم كه اگر فيلد نام، خالي بود، مانع ارسال فرم شده و پيام بدهد.

<script>
function funForm()
{
        if (Form1.Name.value == '')
        {
            alert ('نام خود را بنويسيد!');
            Form1.Name.focus();
            return false;
        }
}
</script>
 

ارسال و ذخيره اطلاعات

 بعد از دريافت صحيح اطلاعات، بايد آن را به جايي كه قرار است ذخيره شود، بفرستيم. در اينترنت، به چند صورت مي‌شود اطلاعات را ذخيره نمود.

  • ذخيره در كوكي: اطلاعات كوتاه و ضروري را در آن ذخيره مي‌كنند. به اميد خدا در جلسات آتي، به آن خواهيم پرداخت.
  • ذخيره در پرونده‌هاي معمولي: مثلا در پرونده متني (Text). نسبت به كوكي، قادر به ذخيره اطلاعات بيشتري است؛ اما به لحاظ اينكه براي ساخت، تغيير و حذف يك پرونده يا پوشه، احتياج به مجوز از طرف سيستم شماست، و اين كار، به خاطر جلوگيري از نفوذ ويروس و خرابكاران (هكر)، به سختي انجام مي‌پذيرد، مقرون به صرفه نيست.
  • ذخيره در بانك اطلاعاتي: بهترين روش ذخيره اطلاعات است؛ هم از لحاظ ذخيره حجم بالاي اطلاعات، هم ترتيب و نظم، هم خواندن راحت و سريع آنها. اساس كار بانك اطاعات، استفاده از جدول است؛ جدولي كه تشكيل شده از ستون و سطرهاي مختلف؛ مانند جداولي كه در بسياري از جاها، ديده‌ايد.

استفاده از بانك اطلاعاتي، مناسبترين روش است كه معمولا اطلاعات فرمها، به آن ارسال مي‌شود؛ اما

  • بانكها، زبان ما - جاوا اسكريپت - را نمي‌فهمند، و زبان خاص خودشان را دارند؛ يعني زبانهاي سروري كه قبلا گفته شد.
  • وبلاگها و پايگهايي كه رايگان تهيه شده‌اند، اجازه اجرا اين گونه زبانها را نمي‌دهند.

 • به اميد خدا بعد از پايان درس جاوا اسكريپت، اگر دوستان علاقمندي باشند، به بحث درباره يكي از زبانهاي سروري (asp, php) خواهيم پراخت؛ حداقل تا جايي كه بتوانيد خودتان يك بانك را ساخته و اطلاعاتان را در آن ذخيره كنيد.

 • ظاهرا بحث فرم - تا آنجا كه به جاوا مربوط مي‌شده - در اينجا به پايان رسيده است. اين جلسه، هديه‌اي به دوستان عزيزي كه تقاضاي درس عملي و كاربردي را داشته‌اند. در پايان، شما را با عناصر ديگري كه ممكن است در فرم، استفاده شوند، آشنا مي‌كنم.
 

واژه‌نامه

Get - Post = تفاوت بين اين دو، در چگونگي ارسال اطلاعات از فرم، به اسكريپت پردازشگر است.

  • اگر از روش گت، استفاده كنيد، مقدار اطلاعاتي كه مي‌توانيد ارسال كنيد، محدود است.
  • با استفاده از روش get، اطلاعات به دست آمده از فرم، به عنوان بخشي از يك URL، انتقال مي‌يابد؛ اما در روش post، اطلاعات، در حقيقت به صورت نامرئي، منتقل مي‌شود. اگر براي مثال، در روش گت، كاربر، يك رمز عبور را در فيلد پسورد، بنويسد، و فرد ديگري نيز در حال مشاهده صفحه نمايش كاربر باشد، به راحتي مي‌تواند از رمز عبور كاربر، آگاه شود. به عبارت ديگر، اين روش، در سطح امنيتي پايين‌تري از روش پست مي‌باشد.
  • صفحه‌اي كه حاوي فرمي با مشخصه گت است، مي‌تواند نشانه گذاري (Bookmark) شود؛ در حالي كه در روش پست، اين كار، ممكن نيست.


عناصر فرم

 • هميشه پاسخها، به صورت تشريحي نيست. گاهي اوقات، تستي بوده و جوابهاي از پيش تعريف شده دارد. مثل سوال از جنسيت كاربر، يا شهر محل سكونت. در اين موارد، بايد از عناصر ديگه فرم استفاده نمود؛ مانند چك باكس، يا دكمه راديويي.

گروه

دكمه

 كد اين دو دكمه، با هم تفاوت دارد

دكمه ارسال

دكمه پاك كردن


 Checkbox - چك باكس


 دكمه راديويي

    ComboBox-JumpMenu - فهرست آبشاري


 ListBox - ليست باكس

 ListBox-Multiple - ليست باكس چند انتخابي


Button-Image - دكمه عكسي


 File - دريافت فايل


 Text - متن


 Password - پسورد


Hidden - متن مخفي


 TextArea - متن زياد


به اميد ديدار
خدانگهدار