مرورگر در سمت کلاینت (کاربر) می تواند داده ها را به دو روش به وب سرور تحویل دهد.
- روش GET
- روش POST
قبل از ارسال داده ها، مرورگر آن را با استفاده از روشی به نام رمزگذاری URL رمزگذاری می کند. جفتهای نام/مقدار با استفاده از علامتهای مساوی در این سیستم به هم متصل میشوند، در حالی که جفتهای متمایز توسط یک آمپرساند (علامت &) از هم جدا میشوند. فاصله ها با نماد + جایگزین می شوند و هر کاراکتر غیر الفبایی دیگر با مقادیر هگزا دسیمال جایگزین می شود. پس از اینکه داده ها کدگذاری شدند، به سرور منتقل می شوند.
حال اجازه دهید به تک تک روش ها نگاهی بیندازیم و عملکرد این روش ها را درک کنیم و آنها را درک کنیم.
روش GET:
روش GET اطلاعات کاربر رمزگذاری شده را به آدرس صفحه اضافه می کند. کاراکتر ؟ آدرس صفحه را از محتوای کدگذاری شده جدا می کند.
- روش GET یک رشته طولانی تولید می کند که در گزارش های سرور شما و در کادر Location: مرورگر شما نمایش داده می شود.
- روش GET فقط می تواند تا 1024 کاراکتر ارسال کند.
- اگر نیاز به ارسال رمز عبور یا سایر اطلاعات حساس به سرور دارید، هرگز از روش GET استفاده نکنید.
- از GET نمی توان برای تحویل داده های باینری به سرور، مانند عکس ها یا اسناد word استفاده کرد.
- متغیر محیطی QUERY STRING می تواند برای به دست آوردن داده های ارسال شده با روش GET استفاده شود.
- PHP یک آرایه انجمنی $_GET برای دسترسی به تمام اطلاعات داده شده از طریق متد GET ارائه می دهد.
کد:
<?php
if( $_GET["name"] || $_GET["age"] ) {
echo "Welcome ". $_GET['name']. "<br />";
echo "You are ". $_GET['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "GET">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>
روش POST:
روش POST داده ها را با استفاده از هدرهای HTTP به سرور ارسال می کند. اطلاعات به همان روشی که برای متد GET مشخص شده است کدگذاری می شود و در هدری (header) به نام QUERY STRING گنجانده می شود.
- روش POST هیچ محدودیتی در میزان داده قابل تحویل ندارد.
- روش POST به شما امکان می دهد داده های ASCII و باینری را ارسال کنید.
- از آنجایی که داده های ارسال شده با استفاده از روش POST از طریق هدر HTTP هدایت می شوند، امنیت آن به پروتکل HTTP بستگی دارد. می توانید با استفاده از HTTP امن از امنیت داده های خود اطمینان حاصل کنید.
- PHP یک آرایه انجمنی $_POST برای دسترسی به تمام اطلاعات داده شده از طریق روش POST ارائه می دهد.
کد:
<?php
if( $_POST["name"] || $_POST["age"] ) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
die ("invalid name and name should be alpha");
}
echo "Welcome ". $_POST['name']. "<br />";
echo "You are ". $_POST['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "POST">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>
دیدگاهها