اینجاست كه بحثForm های وب مطرح میشود، این مبحث چیزی مستقل از زبان PHP است و مفاهیم آن در HTTP و HTML گنجانده میشود و در تمامی زبانها و چارچوبهای كاری برای توسعه برنامههای تحت وب نیز گنجانده شده است.
بعضی از چارچوبهای كاری مانندNET . فرمهای وب را به گونهای دیگر ارائه میكنند؛ اما در نهایت خروجی آنها هم از قوانین فرمهای وب پیروی میكند. قبل از این كه با فرمهای وب آشنا شویم، لازم است مختصری در زمینه HTTP آگاهی به دست بیاوریم.
شما نشانی سایتی را در مرورگر خود وارد میكنید. چه اتفاقی میافتد؟
یك درخواست HTTP ساخته میشود و برای نشانی مورد نظر ارسال میشود، سپس وب سروری كه وظیفه آن خدمترسانی است درخواست را دریافت میكند و با توجه به درخواست صادر شده از سوی مرورگر شما به آن پاسخ میدهد. اما درخواستها به چه صورت هستند؟
برای مثال ما آدرس گوگل را درمرورگر Google Chrome وارد میكنیم. درخواستی كه مرورگر برای سرور گوگل ارسال میكند به صورت زیر است:
GET http://www.google.com/ HTTP/1.1
Host: www.google.com
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.0 Safari/534.30
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,fa;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: rememberme=true;
در خط اول درخواست GET و سپس آدرس گوگل نوشته شده است. به چه معنی است؟
GET یك متد HTTP است. در HTTP متدهای مختلفی وجود دارد و هر یك دارای كاربردهای خاص خود است. در این مقاله با GET و POST كار داریم، برای آشنایی بیشتر با متدهای دیگر HTTP به نشانی زیر مراجعه كنید:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
در آخر خط اول هم عبارت HTTP/1.1 نوشته شده است كه در واقع نسخه HTTP را مشخص میكند.
از دیگر المانها میتوان به User-Agent اشاره كرد كه حاوی اطلاعاتی در مورد ارسال كننده درخواست است و مشخص میكند این درخواست از سوی كدام مرورگر یا چه برنامهای ارسال شده است و المانهای دیگر كه توضیح آنها خارج از حوصله این مقاله است. برای آشنایی بیشتر با آنها به لینك زیر مراجعه كنید:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html
حالا كه با مفهوم درخواستهای HTTP بیشتر آشنا شدید به سراغ فرمهای وب میرویم.
اما ساختار فرمهای وب چگونه است؟ كل فرمهای وب در یك تگ HTML با نام فرم به صورت زیر خلاصه میشوند:
«form» «/form»
حال هر چیزی كه در این تگ قرار بگیرد باید برای سرور ارسال شود، اما چگونه؟
ابتدا باید بگوییم كه اطلاعات این فرم به كجا ارسال شود؟ این كار را به وسیله 2 صفت از تگ form انجام میدهیم. یعنی action و method، اولی مشخص میكند این اطلاعات برای چه آدرسی ارسال شود، مثلا login.php یا login.aspx و...، این آدرس میتواند به صورت كامل یا Relative باشد (تمامی قوانین حاكم بر آدرس دهی در المانهای HTML بر action نیز حاكم است). ویژگی بعدی یعنی method، متد HTTP را مشخص میكند كه میتواند GET یا POST باشد متدهای GET و POST تفاوتی با هم دارند كه در ادامه راجع به تفاوت آنها توضیح خواهیم داد. حال بررسی كنیم ببینیم فرمهای وب چه اطلاعاتی را برای سرور ارسال میكنند. برای این كه اطلاعاتی توسط فرم شما برای سرور ارسال شود باید درون آن از input استفاده كنید، اما input خود بر چند نوع است كه بعضی از آنها را در زیر ذكر میكنیم:
text : حاوی یك باكس متنی است.
radio : یك Radio Button را نشان میدهد
checkbox : شامل CheckBox است.
button : یك دكمه است.
submit : مهمترین عنصر در یك فرم وب به شمار میآید، درست است خروجی آن شبیه button است با این تفاوت كه وقتی روی آن كلیك میكنید، اطلاعات فرم برای سرور ارسال میشود.
تمامی المانها باید دارای 2 خصیصه اصلی باشند:
1 ـ name : در واقع نام كنترل ورودی است كه در كدهای سمت سرور شما میتوانید مقدار یك input را به وسیله نام آن بازیابی كنید.
2 ـ value : مقدار یك input را درخود نگه میدارد، و در سمت سرور با داشتن name یك input میتوان این مقدار را بازیابی كرد.
نكته: فرمهای وب میتوانند دارای چند submit باشند؛ اما برای دانستن این كه كدام یك از آنها اطلاعات را ارسال كردند، شما باید توسط كدهای سمت وب و در صفحهای كه اطلاعات برای آن ارسال شده است بررسی كنید كه اطلاعات چگونه ارسال و توسط كدام یك از این submitها ارسال شده است.
اما تفاوت GET و POST در چیست؟ اگر اطلاعات را به وسیله GET برای سرور ارسال كنید، تمامی inputها به صورت كلید/ مقدار در آدرس URL قرار میگیرند، اما در POST این گونه نیست. برای مثال داریم:
«form action»login.php» method=»get»»
Username : «input type=»text» name=»username»»
Password : «input type=»text» name=»username»»
«input type=»submit» value=»Login»»
«/form»
اگر روی Login كلیك كنید در آدرس بار مرورگر خود این نشانی مشاهده میشود:
login.php?username=click&password=123
به عنوان تمرین سعی كنید یك فرم وب درست كنید كه یك سری اطلاعات را بگیرد و آنها را روی صفحه چاپ كند.
امير بهاءالدين سبطالشيخ