PHP – آرایه $_POST

PHP - $_POST

$_POST یک متغیر فوق‌جهانی در PHP است که حاوی آرایه‌ای از متغیرهای دریافت شده از طریق متد HTTP POST می‌باشد.

دو روش اصلی برای ارسال متغیرها از طریق متد HTTP POST وجود دارد:

  1. فرم‌های HTML
  2. درخواست‌های HTTP جاوااسکریپت

$_POST در فرم‌های HTML

یک فرم HTML اطلاعات را از طریق متد HTTP POST ارسال می‌کند اگر ویژگی method فرم به “POST” تنظیم شده باشد.

برای نشان دادن این موضوع، با ایجاد یک فرم HTML ساده شروع می‌کنیم:

فرم HTML

<html>
<body>

<form method="POST" action="demo_request.php">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

</body>
</html>

هنگامی که کاربر بر روی دکمه ارسال کلیک می‌کند، داده‌های فرم به فایل PHP مشخص شده در ویژگی action تگ <form> ارسال می‌شوند.

در فایل اکشن می‌توانیم از متغیر $_POST برای جمع‌آوری مقدار فیلد ورودی استفاده کنیم:

فایل PHP

$name = $_POST['fname'];
echo $name;

در مثال زیر، فرم HTML و کد PHP را در یک فایل PHP قرار داده‌ایم. همچنین چند خط اضافی برای امنیت اضافه کرده‌ایم.

مثال

<html>
<body>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = htmlspecialchars($_POST['fname']);
  if (empty($name)) {
    echo "Name is empty";
  } else {
    echo $name;
  }
}
?>

</body>
</html>

$_POST در درخواست‌های HTTP جاوااسکریپت

هنگام ارسال درخواست HTTP در جاوااسکریپت، می‌توانید مشخص کنید که متد HTTP POST باشد.

برای نشان دادن این موضوع، با ایجاد یک تابع جاوااسکریپت حاوی یک درخواست HTTP شروع می‌کنیم:

تابع جاوااسکریپت

function myfunction() {
  const xhttp = new XMLHttpRequest();
  xhttp.open("POST", "demo_phpfile.php");
  xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhttp.onload = function() {
    document.getElementById("demo").innerHTML = this.responseText;
  }
  xhttp.send("fname=Mary");
}

کد بالا:

  1. یک درخواست HTTP را آغاز می‌کند.
  2. متد HTTP را به POST تنظیم می‌کند.
  3. یک هدر درخواست معتبر تنظیم می‌کند.
  4. یک تابع برای اجرا زمانی که درخواست به پایان رسید، ایجاد می‌کند.
  5. درخواست HTTP را با متغیر fname که به Mary تنظیم شده است، ارسال می‌کند.

نگاهی به تابعی که پس از پایان درخواست اجرا می‌شود:

xhttp.onload = function() {
    document.getElementById("demo").innerHTML = this.responseText;
}

این تابع تلاش می‌کند تا پاسخ از عملیات را در یک عنصر HTML با id=”demo” بنویسد.

بیایید یک صفحه HTML با چنین عنصری ایجاد کنیم و همچنین یک دکمه که تابع را اجرا می‌کند.

اگر جاوااسکریپت را نیز اضافه کنیم، صفحه به این صورت خواهد بود:

مثال

چگونه داده‌ها را از یک درخواست HTTP ارسال و دریافت کنیم:

<html>
<script>
function myfunction() {
  const xhttp = new XMLHttpRequest();
  xhttp.open("POST", "demo_ajax.php");
  xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhttp.onload = function() {
    document.getElementById("demo").innerHTML = this.responseText;
  }
  xhttp.send("fname=Mary");
}
</script>
<body>

<button onclick="myfunction()">Click me!</button>

<h1 id="demo"></h1>

</body>
</html>

در فایل PHP که این درخواست HTTP را دریافت می‌کند (demo_ajax.php)، به سادگی از متغیر $_POST برای بازیابی متغیر fname استفاده کرده و آن را به عنوان پاسخ می‌نویسیم.

فایل PHP

$name = $_POST['fname'];
echo $name;

این مثال‌ها نشان می‌دهند که چگونه می‌توانید از $_POST برای دسترسی به داده‌های ارسال شده از طریق فرم‌های HTML و درخواست‌های HTTP جاوااسکریپت استفاده کنید.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - کلمه کلیدی Let (Let)

JavaScript – کلمه کلیدی Let (Let)

تعریف let کلیدواژه let در ES6 (2015) معرفی شد و دارای ویژگی‌های خاصی است که آن را از var...

بیشتر بخوانید
JavaScript - متغیرها (Variables)

JavaScript – متغیرها (Variables)

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

بیشتر بخوانید
JavaScript - کامنت‌ها (Comments)

JavaScript – کامنت‌ها (Comments)

کامنت‌ها در جاوا اسکریپت کامنت‌ها در جاوا اسکریپت به برنامه‌نویسان این امکان را می‌دهند تا توضیحاتی را به کد...

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

نظرات

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

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