متد post :
در بخش قبل در قسمت آموزش فرم ها در PHP به شما نمایش دادیم که چگونه یک فرم ساده HTML را طراحی کرده و اطلاعات آن را به یک صفحه دیگر برای پردازش و استفاده انتقال دهید .
همانطور که گفتیم 2 روش برای انتقال اطلاعات فرم ها در PHP وجود دارد . متد get و متد post . در این بخش می خواهیم نحوه ارسال اطلاعات یک فرم توسط متد post و سپس دریافت اطلاعات در صفحه مقصد ، توسط متغیر POST_$ را تشریح کنیم .
نحوه کار متد post :
هنگامی که یک فرم را به وسیله متد post ارسال می کنید ، مرورگر به صورت اتوماتیک نام کنترل های درون فرم به همراه مقادیرشان را خوانده و کد می کند . سپس صفحه را به صفحه مقصد ارسال می کند . در این حالت مرورگر جفت نام کنترل های فرم و مقدار را به صورت مخفی و کد شده ، برخلاف متد get که به صورت نمایان این کار را انجام می دهد ، به صفحه مقصد ارسال می کند . در این روش اطلاعات از دید کاربر و سایرین مخفی خواهد بود و برای انتقل اطلاعات حساس مانند رمز عبور مناسب است .
فرض کنید که یک فرم به شکل زیر طراحی کرده اید . در این فرم دو کنترل کادر متن داریم که از کاربر نام و سن آن را پرسیده است .
Example | |
<form action="recevie.php" method="post" > Name: <input type="text" name="fname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> |
کد |
هنگامی که کاربر اطلاعات خواسته شده را در فرم وارد نموده و آن را submit می کند ، 2 اتفاق می افتد :
- اول اینکه مرورگر به صفحه تعیین شده در خاصیت action یعنی صفحه receive.php ارسال می شود .
-
دوم اینکه مرورگر نام کنترل های متن و مقادیرشان را به صورت کد شده و مخفیانه به صفحه مقصد ارسال می کند :
آدرس در نوار آدرس مرورگر به صورت زیر در خواهد آمد . در این مثال فرض کرده ایم که کاربر برای نام مقدار ali و برای سن مقدار 22 را وارد کرده است :Syntax http://www.example.com/receive.php
چند نکته مهم :
در روش ارسال post ، اطلاعات درون فرم کد شده و مخفی ارسال می شوند .بنابراین در معرض دید سایرین نبوده و همچنین اطلاعات به راحتی هک نخواهند شد . به همین دلیل باید از این روش در ارسال اطلاعات حساس مثل رمز عبور و ... استفاده کرد .
دوم اینکه حجم اطلاعاتی که با این روش می توانید ارسال نمایید ، نامحدود است .
امکان bookmark کردن صفحه در این روش وجود ندارد .
دریافت اطلاعات ارسالی در صفحه مقصد و استفاده از آنها - متغیر POST_$ :
پس از اینکه کاربر با استفاده از متد post اطلاعات فرم خود را به صفحه مقصد ارسال نمود ، باید آن اطلاعات را در صفحه مقصد دریافت کرده و از آنها استفاده نماید .
برای این منظور در صفحه مقصد از متغیر از پیش تعیین شده ، POST_$ برای دریافت اطلاعات ارسالی استفاده می شود . می توانید به تعداد متغیر های ارسالی به صفحه از متغیر POST_$ استفاده نمایید . فقط باید همان نامی که در فرم صفحه مبدا برای متغیر تعیین شده ، استفاده نمایید .
تشریح روش با یک مثال عملی :
مطالب تشریح شده همراه با کد مورد نیاز آن را در مثال عملی زیر نمایش می دهیم .
کد لازم برای دریافت مقادیر متغیرهای ارسالی ، که در فرم بالای صفحه ارسال شده است به صورت زیر است . در فرم دو متغیر fname و age داشتیم ، که در کد صفحه مقصد آن ها را به روش زیر دریافت کرده و در خروجی دوباره استفاده نموده ایم :
Example | |
<html> <body> Hello < ? php echo $_POST [ " fname " ] ; ? > ! < br / > You are < ? php echo $_POST [ " age " ] ; ? > years old. </body> </html> |
کد |
input
سلام اگه بخوام یه input داشته باشم از نوع تکست که چیزی که کاربر مینویسه زیرش نمایش داده بشه .و بعد دوباره تو همون input چیزدیگری نوشت نمایش تکست قبلی پاک نشه و زیر هم نشون داده بشه چیکار کنم؟
پاسخ
اگر بخواهید بدون رفرش صفحه چنین چیزی اتفاق بیفته باید از جاوااسکریپت استفاده کنید. ولی یک مقدار این سناریوی شما مبهم است. وقتی کار کاربر در کادر چیزی می نویسه اگر در حال ویرایش متن زیر input آپدیت بشه از رویداد keyup میشه استفاده کرد. و اگر بخواهید وقتی از input خارج میشه متن زیرش آپدیت بشه میشه از رویداد change استفاده کرد.
ولی به هر حال باید مشخص باشه براتون که وقتی کاربر برای بار دوم داخل کادر چیزی تایپ میکنه تغییرات بار دوم هم بره توی کادر زیرش یا نه.