فرم های در PHP، یکی از روش های موثر برای دریافت اطلاعات از کاربر می باشد. امروز از سری مقالات تیک4 قصد داریم شما را بیشتر با فرم های در PHP آشنا کنیم.
فرم ها در PHP :
از فرم ها در PHP ، برای دریافت اطلاعات از کاربر استفاده می شود . فرم های HTML می توانند شامل یک یا چندین کنترل کادر متن ، دکمه های انتخابی و یا منوهای کرکره ای باشند . کاربر بایستی مقادیر لازم را در کنترل های تعیین شده وارد کند .
پس از وارد نمودن اطلاعات لازم ، کاربر باید فرم را ارسال ( Submit ) کنند . پس از ارسال فرم ، اطلاعات آن به یک فرم و یا صفحه دیگری ارسال می شود تا در مقصد مورد استفاده قرار گیرند .
برای مثال شما اطلاعات ثبت نام در سایت را از کاربر دریافت کرده و سپس در یک صفحه دیگر همان اطلاعات را به کاربر نمایش داده تا در صورت تایید نهایی ، در پایگاه داده ذخیره شوند .
همانطور که در بخش آموزش HTML و در قسمت آموزش فرم های HTML ، نحوه استفاده از تگ < form > برای ایجاد فرم های HTML را بیان کردیم . کلیه کنترل های دریافت اطلاعات و محتویات فرم باید در دورن تگ فرم قرار بگیرند .
شکل کلی و نمونه طراحی یک فرم HTML ساده در صفحات PHP به صورت زیر است . این فرم دارای دو کادر متن برای دریافت نام و سن از کاربر و یک دکمه ارسال ( Submit ) است ، که با فشردن آن فرم به مقصد ارسال می شود :
<form action="welcome.php" method="post"> Name: <input type="text" name="fname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form>
تگ فرم دو خاصیت مهم دارد که تعیین کننده نحوه عملکرد فرم است . خاصیت action و method . در ابتدا به تشریح کارایی این دو خاصیت کلیدی در فرم ها می پردازیم :
خاصیت action : این خاصیت از نوع آدرس ( URL ) بوده و تعیین کننده آدرس فرم یا صفحه ای است که قرار است اطلاعات فرم به آن ارسال شود . اطلاعات ارسال شده در صفحه مقصد مورد استفاده و پردازش قرار می گیرد .
برای مثال اگر مقدار آن را برابر با submit.php قرار دهیم ، اطلاعات فرم پس از submit شدن به صفحه تعیین شده ارسال شده و مرورگر نیز به همان صفحه هدایت می شود .
تعیین مقدار این خاصیت اجباری است و اگر مقدار آن را خالی رها کنیم ، برنامه دچار نقص می شود . در این حالت فرم به یک آدرس پیش فرض مثل form.html می رود .
خاصیت method : این خاصیت روش ارسال اطلاعات فرم به صفحه را مقصد تعیین کرده و می تواند یکی از دو مقدار GET یا POST را داشته باشد .
این دو حالت با هم تفاوت عملکرد نداشته و فقط در نحوه ارسال اطلاعات از روش های متفاوتی استفاده می کنند . در جدول زیر به تشزیح نحوه استفاده از هر ۲ متد پرداخته ایم :
متد GET : در این روش اطلاعات بصورت ساده و کد نشده منتقل میشوند. این روش دقیقا مشابه اینه که اطلاعات رو بصورت Query به URL اضافه کرده باشیم و وقتی فرم رو Submit می کنیم، این اطلاعات خودش به URL اضافه میشه و قابل دیدن میشه. باید توجه داشت که اطلاعات حساسی مثل Password نباید در معرض دید قرار بگیره پس نباید برای فرمی که اطلاعات مهمی داره از GET استفاده کنیم تا اطلاعات فرم توی Address Bar قابل رویت نشه. به اضافه اینکه IE توی حجم اطلاعات GET محدودیت داره. به این صورت که وقتی اطلاعات فرم بصورت Query به URL اضافه میشه، طول این URL حداکثر میتونه ۲۰۸۳ کاراکتر باشه. در روش GET، چون اطلاعات فرم کد نمیشوند و ساده منتقل میشوند ، حجم کمتری دارند . اطلاعات فرم در این حالت، توسط متد GET_$ در صفحه مقصد قابل دریافت است . همچنین در روش GET از Upload خبری نیست، یعنی با GET نمیشه آپلود کرد.
پس از submit فرم در این روش ، اطلاعات فرم به صورتی که در کد زیر نمایش داده شده به آدرس صفحه اضافه شده و به صفحه مقصد منتقل می شوند :
https://www.tik4.com/submit.php? fname = Ali & age = 26
نمونه این روش را مطمئنا قبلا در بسیاری از سایت ها مشاهده کرده اید .
متد POST :
در این روش اطلاعات فرم برای ارسال به صفحه مقصد کد شده و به صورت مخفی منتقل می شوند . در این حالت دیگر اطلاعات به صورت نمایان در آدرس بار مرورگر قابل مشاهده نبوده و برای ارسال اطلاعات حساس مثل رمز عبور مناسب است .
اطلاعات ارسال شده با این متد در صفحه مقصد توسط متد POST_$ قابل دریافت است .
فرم چگونه مقادیر را خوانده و به صفحه مقصد ارسال می کند :
همانطور که مشاهده کردید در یک فرم همواره چندین کنترل ورودی اطلاعات وجود دارد . هنگامی که فرم submit می شود ، مرورگر به صورت اتوماتیک تمامی مقادیر کنترل های ورودی به همراه نام آن کنترل ها ( خاصیت name هر کنترل ) را خوانده و به آدرس صفحه اضافه می کند ( این کار در متد POST به صورت مخفی انجام میشود ) . سپس مرورگر صفحه را به همراه جفت نام کنترل ها و مقادیرشان به صفحه مقصد ، ارسال می کند .
در طی انجام این عملیات ، مرورگر ابتدا آدرس صفحه مقصد را قرار داده و سپس یک علامت ? می گذارد . پس از علامت ? ، به ترتیب نام کنترل های ورودی اطلاعات و مقادیرشان را اضافه می کند . هر کدام از جفت نام کنترل ها و مقادیرشان را با یک علامت & از هم جدا می شوند .
توجه داشته باشید که عملیات خواندن نام کنترل های ورودی اطلاعات و مقادیرشان و در نهایت ارسال آنها به صفحه مقصد به صورت اتوماتیک توسط مرورگر انجام شده و نیازی نیست ، شما کد خاصی را بنویسید .
در مثال زیر به تشریح کلیه مطالب گفته شده در طی یک مثال واقعی می پردازیم .
مثال عملی در طراحی یک فرم HTML و سپس ارسال آن به مقصد :
مثال : در مثال زیر یک فرم طراحی کرده ایم که از کاربر نام و سن وی را سوال می کند . سپس در صورت کلیک شدن دکمه فرمان Submit ، فرم به همراه مقادیر وارد شده در کنترل های متن ، به صفحه receive.php ارسال می شوند و آن مقادیر در صفحه جدید مجدد به کاربر نمایش داده می شود .
نکته مهم : توجه داشته باشید که اطلاعات با استفاده از متد get ارسال شده است . بنابراین به نوار آدرس مرورگر دقت نمایید .
برای مشاهده خروجی مثال و سپس ارسال مقادیر به صفحه مقصد ، بر روی لینک تعیین شده در خروجی مثال کلیک نمایید :
< html > < head > </head> <body> <form action="recevie.php" method="get"> Name: <input type="text" name="fname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html>
پس از ارسال صفحه و اطلاعات به صفحه receive.php ، این اطلاعات توسط این صفحه دریافت شده و به کاربر نمایش داده می شود . کد این صفحه نیز به صورت زیر است :
در قسمت های بعدی آموزش PHP ، به توضیح کامل روش دریافت اطلاعات ارسالی فرم ها می پردازیم .
<html> <body> Hello < ? php echo $_GET [ " fname " ] ; ? > ! < br / > You are < ? php echo $_GET [ " age " ] ; ? > years old. </body> </html>
متد method get و متغیر GET_$
متد get :
در بخش قبل در قسمت آموزش فرم ها در PHP به شما نمایش دادیم که چگونه یک فرم ساده HTML را طراحی کرده و اطلاعات آن را به یک صفحه دیگر برای پردازش و استفاده انتقال دهید .
همانطور که گفتیم ۲ روش برای انتقال اطلاعات فرم ها در PHP وجود دارد . متد get و متد post . در این بخش می خواهیم نحوه ارسال اطلاعات یک فرم توسط متد get و سپس دریافت اطلاعات در صفحه مقصد ، توسط متغیر GET_$ را تشریح کنیم .
نحوه کار متد get :
هنگامی که یک فرم را به وسیله متد get ارسال می کنید ، مرورگر به صورت اتوماتیک نام کنترل های درون فرم به همراه مقادیرشان را به آدرس صفحه اضافه کرده و سپس صفحه را به صفحه مقصد ارسال می کند . در این حالت مرورگر جفت نام کنترل های فرم و مقدار آنها را با علامت & از هم جدا می کند .
فرض کنید که یک فرم به شکل زیر طراحی کرده اید . در این فرم دو کنترل کادر متن داریم که از کاربر نام و سن آن را پرسیده است .
<form action="recevie.php" method="get" > Name: <input type="text" name="fname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form>
هنگامی که کاربر اطلاعات خواسته شده را در فرم وارد نموده و آن را submit می کند ، ۲ اتفاق می افتد :
اول اینکه مرورگر به صفحه تعیین شده در خاصیت action یعنی صفحه receive.php ارسال می شود .
دوم اینکه مرورگر نام کنترل های متن و مقادیرشان را به صورت زیر به آدرس صفحه اضافه کرده وآن صفحه را به مقصد ارسال می کند :
آدرس در نوار آدرس مرورگر به صورت زیر در خواهد آمد . در این مثال فرض کرده ایم که کاربر برای نام مقدار ali و برای سن مقدار ۲۲ را وارد کرده است :
https://www.tik4.com/receive.php? fname = Ali & age = 22
چند نکته مهم :
در روش ارسال get ، اطلاعات درون فرم از طریق نوار آدرس مرورگر نمایش داده شده و بنابراین در معرض دید سایرین بوده و همچنین اطلاعت به راحتی حک می شوند . به همین دلیل نباید از این روش در ارسال اطلاعات حساس مثل رمز عبور و … استفاده کرد و برای ارسال آنها از متد post استفاده کرد .
دوم اینکه حجم اطلاعاتی که با این روش می توانید ارسال نمایید ، محدود است .
دریافت اطلاعات ارسالی در صفحه مقصد و استفاده از آنها – متغیر GET_$ :
پس از اینکه کاربر با استفاده از متد get اطلاعات فرم خود را به صفحه مقصد ارسال نمود ، باید آن اطلاعات را در صفحه مقصد دریافت کرده و از آنها استفاده نماید .
برای این منظور در صفحه مقصد از متغیر از پیش تعیین شده ، GET_$ برای دریافت اطلاعات ارسالی استفاده می شود . می توانید به تعداد متغیر های ارسالی به صفحه از متغیر GET_$ استفاده نمایید . فقط باید همان نامی که در فرم صفحه مبدا برای متغیر تعیین شده و همچنین در نوار آدرس مرورگر است ، استفاده نمایید .
تشریح روش با یک مثال عملی :
مطالب تشریح شده همراه با کد مورد نیاز آن را در مثال عملی زیر نمایش می دهیم .
کد لازم برای دریافت مقادیر متغیرهای ارسالی ، که در فرم بالای صفحه ارسال شده است به صورت زیر است . در فرم دو متغیر fname و age داشتیم ، که در کد صفحه مقصد آن ها را به روش زیر دریافت کرده و در خروجی دوباره استفاده نموده ایم . برای مشاهده عملی روند ، بر روی گزینه مشاهده خروجی مثال کلیک نمایید :
<html> <body> Hello < ? php echo $_GET [ " fname " ] ; ? > ! < br / > You are < ? php echo $_GET [ " age " ] ; ? > years old. </body> </html>
متد method post و متغیر POST_$
متد post :
در بخش قبل در قسمت آموزش فرم ها در PHP به شما نمایش دادیم که چگونه یک فرم ساده HTML را طراحی کرده و اطلاعات آن را به یک صفحه دیگر برای پردازش و استفاده انتقال دهید .
همانطور که گفتیم ۲ روش برای انتقال اطلاعات فرم ها در PHP وجود دارد . متد get و متد post . در این بخش می خواهیم نحوه ارسال اطلاعات یک فرم توسط متد post و سپس دریافت اطلاعات در صفحه مقصد ، توسط متغیر POST_$ را تشریح کنیم .
نحوه کار متد post :
هنگامی که یک فرم را به وسیله متد post ارسال می کنید ، مرورگر به صورت اتوماتیک نام کنترل های درون فرم به همراه مقادیرشان را خوانده و کد می کند . سپس صفحه را به صفحه مقصد ارسال می کند . در این حالت مرورگر جفت نام کنترل های فرم و مقدار را به صورت مخفی و کد شده ، برخلاف متد get که به صورت نمایان این کار را انجام می دهد ، به صفحه مقصد ارسال می کند . د این روش اطلاعات از دید کاربر و سایرین مخفی خواهد بود و برای انتقل اطلاعات حساس مانند رمز عبور مناسب است .
فرض کنید که یک فرم به شکل زیر طراحی کرده اید . در این فرم دو کنترل کادر متن داریم که از کاربر نام و سن آن را پرسیده است .
<form action="recevie.php" method="post" > Name: <input type="text" name="fname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form>
هنگامی که کاربر اطلاعات خواسته شده را در فرم وارد نموده و آن را submit می کند ، ۲ اتفاق می افتد :
اول اینکه مرورگر به صفحه تعیین شده در خاصیت action یعنی صفحه receive.php ارسال می شود .
دوم اینکه مرورگر نام کنترل های متن و مقادیرشان را به صورت کد شده و مخفیانه به صفحه مقصد ارسال می کند :
آدرس در نوار آدرس مرورگر به صورت زیر در خواهد آمد . در این مثال فرض کرده ایم که کاربر برای نام مقدار ali و برای سن مقدار ۲۲ را وارد کرده است :
https://www.tik4.com/receive.php
چند نکته مهم :
در روش ارسال post ، اطلاعات درون فرم کد شده و مخفی ارسال می شوند .بنابراین در معرض دید سایرین نبوده و همچنین اطلاعت به راحتی حک نخواهند شد . به همین دلیل باید از این روش در ارسال اطلاعات حساس مثل رمز عبور و … استفاده کرد .
دوم اینکه حجم اطلاعاتی که با این روش می توانید ارسال نمایید ، نا محدود است .
امکان bookmark کردن صفحه در این روش وجود ندارد .
دریافت اطلاعات ارسالی در صفحه مقصد و استفاده از آنها – متغیر POST_$ :
پس از اینکه کاربر با استفاده از متد post اطلاعات فرم خود را به صفحه مقصد ارسال نمود ، باید آن اطلاعات را در صفحه مقصد دریافت کرده و از آنها استفاده نماید .
برای این منظور در صفحه مقصد از متغیر از پیش تعیین شده ، POST_$ برای دریافت اطلاعات ارسالی استفاده می شود . می توانید به تعداد متغیر های ارسالی به صفحه از متغیر POST_$ استفاده نمایید . فقط باید همان نامی که در فرم صفحه مبدا برای متغیر تعیین شده ، استفاده نمایید .
تشریح روش با یک مثال عملی :
مطالب تشریح شده همراه با کد مورد نیاز آن را در مثال عملی زیر نمایش می دهیم .
کد لازم برای دریافت مقادیر متغیرهای ارسالی ، که در فرم بالای صفحه ارسال شده است به صورت زیر است . در فرم دو متغیر fname و age داشتیم ، که در کد صفحه مقصد آن ها را به روش زیر دریافت کرده و در خروجی دوباره استفاده نموده ایم :
<html> <body> Hello < ? php echo $_POST [ " fname " ] ; ? > ! < br / > You are < ? php echo $_POST [ " age " ] ; ? > years old. </body> </html>