کار با فرم در PHP

متغیرهای سوپرگلوبال GET_$ و POST_$ برای جمع آوری داده استفاده می شوند.

PHP – یک فرم HTML ساده

در مثال زیر یک فرم ساده HTML با دو فیلد ورودی و یک دکمه ارسال (Submit) نمایش داده می شود:

یک فرم HTML ساده

زمانیکه کد فوق اجرا می شود، فرم زیر برای کاربر نمایش می یابد:

نمایش فرم پی اچی پی برای کاربر

زمانی که کاربر فرم فوق را تکمیل کرده و دکمه ارسال را کلیک می کند، داده های فرم برای پردازش به فایل PHP به نام «welcome_get.php» ارسال می شود. داده های فرم با استفاده از متد HTTP POST ارسال می شود.

برای نمایش داده های ارسال شده، به سادگی می توان همه متغیرها را echo کرد. فایل welcome.php شبیه زیر خواهد بود:

نمونه کد هندل کردن اطلاعات فرم پی اچ پی

خروجی این فایل چیزی مثل زیر خواهد بود:

طریقه نمایش خروجی فرم پی اچ پی

همین نتیجه را می توان با استفاده از متد HTTP GET بدست آورد:

جمع آوری اطلاعات وارده در فیلدهای فرم پی اچ پی

کد فوق نیز فرم زیر را برای کاربر نمایش می دهد:

نمونه فرم پی اچ پی

در این روش، فایل «welcome_get.php» شبیه کد زیر می شود:

فایل پی اچ پی نمونه برای متد فرم

کد بالا تقریبا یک کد ساده و ابتدایی است. هرچند مهمترین چیز آن فراموش شده است. یعنی اعتبار بخشی داده های وارده به فیلدهای فرم، بایستی داده های وارد شده در فیلدهای فرم را سنجید و اعتبار بخشی کرد تا اسکریپت خود را از کدهای ناخواسته و آلوده محافظت کنیم.

زمان پردازش فرم های PHP به امنیت (SECURITY) برنامه خود فکر کنید!
این صفحه حاوی اعتباربخشی فرم نیست، فقط طریقه ارسال و دریافت داده ها نمایش داده شد. هرچند در صفحه بعد طریقه پردازش فرم های PHP با در نظر گرفتن امنیت برنامه بحث می شود. اعتباربخشی دقیق و صحیح داده های فرم برای محافظت خود در مقابل هکرها و اسپمرها ضروری است.

متد GET در مقابل POST

هر دوی متدهای GET و POST یک آرایه ایجاد می کنند (برای نمونه؛ array( key => value, key2 => value2, key3 => value3, ...)). این آرایه جفت های کلید/مقدار (key/value) را نگه می دارد، که در آن کلیدها (key) اسامی کنترل های فرم و مقدارها (value) داده ورودی است که کاربر در فیلدهای فرم وارد می کند.

هر دوی متدهای GET و POST به صورت GET_$ و POST_$ برخورد می شوند. این ها متغیرهای سوپرگلوبال هستند، بدین معنی که همیشه در دسترس هستند، صرفنظر از اینکه حوزه فعال چیست – و می توان به متغیرهای سوپرگلوبال از داخل هر تابع، کلاس یا فایلی بدون انجام کار خاصی دسترسی داشت.

$_GET یک آرایه از متغیرها است که از طریق پارامترهای URL به اسکریپت جاری (فایل هندل فرم) ارسال می شود.

$_POST یک آرایه از متغیرها است که از طریق متد HTTP POST به اسکریپت جاری (فایل هندل فرم) ارسال می شود.

چه موقع از GET استفاده کنیم؟

اطلاعات ارسال شده از فرم از طریق متد GET برای همه قابل رویت است (اسامی و مقدار تمامی متغیرها در URL نمایش داده می شود). همچنین مقدار اطلاعاتی که می توان از طریق GET ارسال نمود محدود است. این محدودیت حدود 2000 حرف است. هرچند، از آنجایی که متغیرها در URL نمایش داده می شوند، امکان بوکمارک کردن صفحه وجود دارد. این حالت در بعضی موارد مفید است.

متد GET ممکن است برای ارسال داده ها و اطلاعات غیرحساس استفاده شود.

توجه: متد GET هرگز نباید برای ارسال رمز عبور یا اطلاعات حساس دیگر استفاده شود.

چه موقع از POST استفاده کنیم؟

اطلاعاتی که از فرم از طریق متد POST ارسال می شود برای دیگران قابل رویت نیست (تمامی اسامی و مقدار متغیرها در داخل بدنه درخواست HTTP مستتر است) و همچنین محدودیتی از لحاظ مقدار اطلاعات ارسالی وجود ندارد.

به علاوه، متد POST از عملکردهای پیشرفته از قبیل ورودی باینری چند قسمتی در زمان بارگذاری فایل ها به سرور پشتیبانی می کند.

هرچند از آنجایی که متغیرها در URL نمایش داده نمی شوند، بوکمارک کردن این نوع صفحات امکانپذیر نیست.

معمولا برنامه نویسان متد POST را برای پردازش اطلاعات فرم به شیوه ایمن و قابل اعتماد ترجیح می دهند.

در ادامه خواهیم دید که چگونه می توان اطلاعات فرم PHP را در عین رعایت نکات ایمنی پردازش کرد.

عضویت در خبرنامه پلکسا

در صورت تمایل ایمیل خود را وارد کنید و تازه های پلکسا را از طریق ایمیل دریافت کنید. خبرنامه الکسا هفته نامه بوده و حاوی جدیدترین مطالب و نشریات پلکسا است.

قابل توجه وبمسترها

وبمستر گرامی

در صورتی که به دنبال جذب بازدید کننده یا ارتقای رنکینگ سایت خود هستید، پیشنهاد می کنیم پلکسا را یک پست یا مطلب مهمان کنید. همانطور که برای سایت خود مطلب می نویسید، مطلب خود را آماده و کد نویسی کرده و در پلکسا منتشر کنید. پلکسا هیچگونه دخل یا تصرفی در پست شما نخواهد داشت.

سئوالات، نظرات، پیشنهادات و مطالب خود را با ما و کاربران پلکسا در میان بگذارید - انجمن پلکسا