PHP – پردازش فرم‌ها (PHP Form Handling)

پی‌اچ‌پی سوپرگلوبال‌ها (PHP Superglobals)

سوپرگلوبال‌های پی‌اچ‌پی $_GET و $_POST برای جمع‌آوری داده‌های فرم استفاده می‌شوند.

یک فرم ساده اچ‌تی‌ام‌ال (PHP - A Simple HTML Form)

مثال زیر یک فرم ساده اچ‌تی‌ام‌ال با دو فیلد ورودی و یک دکمه ارسال را نمایش می‌دهد:

مثال

<html>
<body>

<form action="welcome.php" method="POST">
  Name: <input type="text" name="name"><br>
  E-mail: <input type="text" name="email"><br>
  <input type="submit">
</form>

</body>
</html>

زمانی که کاربر فرم بالا را پر کرده و دکمه ارسال را کلیک می‌کند، داده‌های فرم برای پردازش به فایل پی‌اچ‌پی به نام welcome.php ارسال می‌شوند. داده‌های فرم با روش POST ارسال می‌شوند.

برای نمایش داده‌های ارسال شده می‌توانید به سادگی تمامی متغیرها را echo کنید.

welcome.php به این صورت خواهد بود:

<html>
<body>

Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html>

خروجی می‌تواند چیزی شبیه به این باشد:

Welcome John

Your email address is john.doe@example.com

استفاده از روش GET (Using the GET Method)

نتیجه مشابهی نیز می‌تواند با استفاده از روش GET حاصل شود:

مثال

همان مثال، اما با روش GET:

<html>
<body>

<form action="welcome_get.php" method="GET">
  Name: <input type="text" name="name"><br>
  E-mail: <input type="text" name="email"><br>
  <input type="submit">
</form>

</body>
</html>

و welcome_get.php به این صورت خواهد بود:

<html>
<body>

Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>

</body>
</html>

کد بالا بسیار ساده است و هیچ گونه اعتبارسنجی ندارد.

شما نیاز دارید که داده‌های فرم را اعتبارسنجی کنید تا از اسکریپت خود در برابر کدهای مخرب محافظت کنید.

تفاوت GET و POST (GET vs. POST)

هر دو GET و POST یک آرایه ایجاد می‌کنند (مثل array( key1 => value1, key2 => value2, key3 => value3, ...)). این آرایه حاوی جفت‌های کلید/مقدار است که کلیدها نام کنترل‌های فرم و مقادیر داده‌های ورودی از کاربر هستند.

هر دو GET و POST به عنوان $_GET و $_POST در نظر گرفته می‌شوند. این‌ها سوپرگلوبال‌ها هستند، به این معنی که همیشه در دسترس هستند، بدون توجه به محدوده – و شما می‌توانید از هر تابع، کلاس یا فایل به آن‌ها دسترسی داشته باشید بدون نیاز به انجام کار خاصی.

  • $_GET یک آرایه از متغیرهایی است که از طریق پارامترهای URL به اسکریپت فعلی ارسال شده‌اند.
  • $_POST یک آرایه از متغیرهایی است که از طریق روش HTTP POST به اسکریپت فعلی ارسال شده‌اند.

چه زمانی از GET استفاده کنیم؟ (When to use GET?)

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

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

نکته: GET نباید هرگز برای ارسال گذرواژه‌ها یا سایر اطلاعات حساس استفاده شود!

چه زمانی از POST استفاده کنیم؟ (When to use POST?)

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

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

با این حال، به دلیل عدم نمایش متغیرها در URL، امکان بوکمارک کردن صفحه وجود ندارد.

توسعه‌دهندگان POST را برای ارسال داده‌های فرم ترجیح می‌دهند.

نکات امنیتی (Security Considerations)

این صفحه حاوی هیچگونه اعتبارسنجی فرم نیست، فقط نشان می‌دهد که چگونه می‌توانید داده‌های فرم را ارسال و دریافت کنید.

اما صفحات بعدی نشان خواهند داد که چگونه می‌توان فرم‌های پی‌اچ‌پی را با امنیت در نظر گرفته پردازش کرد! اعتبارسنجی صحیح داده‌های فرم برای محافظت از فرم شما در برابر هکرها و اسپمرها مهم است!

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.