در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
اینجاست که بحث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
به عنوان تمرین سعی کنید یک فرم وب درست کنید که یک سری اطلاعات را بگیرد و آنها را روی صفحه چاپ کند.
امیر بهاءالدین سبطالشیخ
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: