آموزش PHP : پردازش فرم در PHP
در این بخش از آموزش برنامه نویسی به زبان PHP به مبحث پردازش فرم ها در پی اچ پی خواهیم پرداخت. با توجه به اینکه مباحث این بخش تا حدی حول محول استفاده از فرم ها در HTML خواهد بود، بنابراین در صورتی که با تگ form در HTML آشنایی کافی ندارید مطالعه آموزش ساختن فرم HTML با استفاده از تگ form را به شما توصیه میکنیم.
نمونه یک فرم ساده HTML
در زیر نمونه کد یک فرم html ساده را مشاهده میکنید که از دو فیلد فرودی و یک دکمه ارسال تشکیل شده است :
1 2 3 4 5 6 7 8 9 10 11 | <html> <body> <form action="welcome.php" method="post"> نام: <input type="text" name="name"><br> ایمیل: <input type="text" name="email"><br> <input type="submit"> </form> </body> </html> |
وقتی کاربر فرم بالا را پر کرده و روی دکمه سابمیت کلیک کند، اطلاعات فرم جهت پردازش به فایل welcome.php ارسال میشود. در مثال فوق، جهت ارسال اطلاعات فرم از متد POST استفاده کرده ایم.
برای نمایش اطلاعات ارسالی میتوانید به سادگی متغیر ها را در فایل welcome.php به شکل زیر echo کنیم :
1 2 3 4 5 6 7 8 | <html> <body> خوش آمدید، <?php echo $_POST["name"]; ?><br> آدرس ایمیل شما : <?php echo $_POST["email"]; ?> </body> </html> |
خروجی کد بالا پس از پر شدن فرم میتواند چیزی مشابه زیر باشد :
خوش آمدید، آرش
آدرس ایمیل شما : info@yourwebsite.com
دقیقا همین نتیجه را با استفاده از متد GET نیز میتوان به دست آورد. در این حالت نمونه فرم ما به شکر زیر خواهد بود :
1 2 3 4 5 6 7 8 9 10 11 | <html> <body> <form action="welcome_get.php" method="get"> نام: <input type="text" name="name"><br> ایمیل: <input type="text" name="email"><br> <input type="submit"> </form> </body> </html> |
در این حالت محتوای فایل “welcome_get.php” که وظیفه پردازش فرم بالا را بر عهده دارد به شکل زیر خواهد بود :
1 2 3 4 5 6 7 8 | <html> <body> خوش آمدید، <?php echo $_GET["name"]; ?><br> آدرس ایمیل شما : <?php echo $_GET["email"]; ?> </body> </html> |
کد بالا، کدی بسیار ساده است. این کد بخش مهمی را کم دارد و آن هم بخش مربوط به اعتبارسنجی اطلاعات فرم است. بدون انجام اعتبارسنجی، اسکریپت شما در برابر انواع کد های مخرب، آسیب پذیر خواهد بود. بنابراین همین در طراحی انواع فرم به بعد امنیتی مسئله نیز بیاندیشید و با انجام اعتبارسنجی مناسب اطلاعات امکان سوء استفاده از اسکریپت خود را از هکر ها و افراد سودجو سلب کنید.
مقایسه GET و POST
هم POST و هم GET در زمان استفاده، آرایه ای از کلید ها و مقادیر ایجاد میکنند. در این آرایه، کلید ها نام کنترل ها و فیلد های فرم بوده و مقادیر آنها از مقدار های ورودی ارائه شده توسط کاربر ایجاد میشود.
با POST و GET به عنوان $_POST
و $_GET
برخورد میشود. یعنی هر دو آنها سوپرگلوبال هستند. اگر به یاد داشته باشید در بخش مربوط به سوپرگلوبال ها شرح دادیم که این متغیر ها فارغ از محدوده دسترسی (scope) در هر تابع یا کلاس یا هر بخشی از کد در دسترس ما هستند.
$_GET
آرایه ای از متغیر هاست که پارامتر های آن از طریق URL به اسکریپت فعلی ارسال میشود. (متغیر ها در آدرس صفحه قابل مشاهده خواهند بود)
$_POST
آرایه ای از متغیر هاست که از طریق متد HTTP POST به اسکریپت فعلی ارسال میشود. (متغیر ها در URL قابل مشاهده نخواهند بود)
چه زمانی از GET استفاده کنیم؟
اطلاعاتی که از طریق متد GET از فرم به اسکریپت ارسال میکنیم توسط هر شخصی قابل مشاهده هستند. (نام متغیر ها و مقادیر آنها در URL به نمایش در می آید) علاوه بر این برای ارسال اطلاعات با استفاده از متد GET محدودیت 2000 کارکتری نیز وجود دارد. اما بخاطر اینکه متغیر های ارسالی با این متد در آدرس صفحه نمایش داده میشوند، کاربر میتواند صفحه فعلی را بوکمارک کرده و مجددا مورد استفاده قرار دهد که ممکن است در برخی موارد کاربردی باشد.
بنابراین از متد GET میتوانید جهت ارسال برخی اطلاعات غیر حساس بهره بگیرید.
توجه : هرگز از متد GET برای ارسال اطلاعات حساس، خصوصا رمز ها استفاده نکنید.
چه زمانی از POST استفاده کنیم؟
اطلاعاتی که توسط متد POST از طریق فرم ارسال میشوند، برای دیگران قابل مشاهده نیستند چرا که نام و مقادیر متغیر ها در آدرس صفحه نشان داده نشده و در بدنه درخواست HTTP قرار خواهد گرفت. مقدار اطلاعات ارسالی در این حالت محدودیتی ندارد. همچنین متد POST از قابلیت های پیشرفته ای همچون بارگذاری فایل های چند بخشی باینری روی سرور پشتیبانی میکند.
به این جهت که با استفاده از متد POST متغیر ها در آدرس به نمایش در نمی آیند، در این حالت امکان بوکمارک صفحه برای استفاده های بعدی وجود نخواهد شد.
به طور کلی متد POST متد ترجیحی توسعه دهندگان جهت ارسال اطلاعات است.
مطالعه بخش بعدی : اعتبارسنجی اطلاعات فرم درPHP