GET و POST دو متد برای ارسال اطلاعات کاربر به وب سرور می باشند. متد GET به طور پیش فرض برای ارسال اطلاعات فرم ها به سرور استفاده می شود.
با استفاده از این متد، دادههای موجود در فرم به صورت جفتهایی به شکل name=value
در URL قرار میگیرند و در صورتی که تعداد آن ها بیش تر از یک متغیر باشد با & از هم جدا می شوند، مثلا name1=value1&name2=value2&name3=value3
. به دلیل این که این مقادیر در URL مرورگر قابل مشاهده هستند درصورت داشتن اطلاعات حساسی مانند رمزعبور، نباید از این متد برای ارسال دادهها به سمت سرور استفاده کرد و به همین دلیل بیشترین کاربرد این متد برای ارسال دادههایی است که نیاز به حفظ و نگهداری ندارند.
یکی از پرکاربردترین موارد استفاده از متد GET استفاده از آن برای فیلتر کردن محتواهاست. برای مثال می توانید از متد GET برای گرفتن پست های ذخیره شده در دیتابیس و نمایش آن ها براساس نام نویسنده و نوع پست نوشته شده استفاده کرد. مثلا می خواهیم در صفحه posts.php به دنبال نویسنده ای به نام "علی" و نوشته ای از نوع "پست" بگردیم. در این صورت پس از ارسال فرم، URL شما می تواند به صورت زیر باشد:
https://example.com/posts.php?author=ali&post_type=post
حال شما می توانید پس از ارسال درخواست، از طریق متغیرهای author و post_type در URL مقادیر مورد نظر خود را دریافت کنید و سپس با زدن یک کوئری به دیتابیس اطلاعات مورد نظر خود را دریافت کرده و آن ها را نمایش دهید. اگر دقت کرده باشید ما از متد GET برای دریافت اطلاعات از دیتابیس استفاده کردیم، نه ذخیره و یا بروزرسانی اطلاعات دیتابیس.
توجه داشته باشید که نمیتوانید از این متد برای ارسال دادههای باینری مانند تصاویر یا فایلهای Word، استفاده کنید. برای دسترسی به تمام اطلاعاتی که از طریق متد GET ارسال میشوند، میتوانید از آرایه GET_$ در زبان PHP استفاده کنید. همچنین در صورت استفاده از این متد، فقط مجاز به انتقال 1024 کاراکتر خواهید بود.
به مثال زیر توجه کنید:
<?php if(isset($_GET["name"])){ echo " Welcome," . $_GET["name"] . " "; } ?>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form method="GET" action="<?php echo $_SERVER["PHP_SELF"];?>">
<label for="inputName">Name:</label>
<input type="text" name="name" id="inputName">
<input type="submit" value="Submit">
</form>
</body>
</html>
در این مثال پس از فشردن دکمه ارسال، همین صفحه دوباره بارگذاری می شود و این بر کد php که در ابتدای صفحه نوشته شده بود متغیر name را دریافت کرده و آن را نمایش می دهد.
مزایا و معایب استفاده از متد GET
از آنجایی که اطلاعات فرستاده شده با متد GET در URL آدرس صفحه نمایش داده میشوند، میتوانید صفحه را با مقادیر query string خاص خود بوک مارک (Bookmark) کنید.
از درخواستهای GET اغلب برای دریافت دادههای مورد نیاز استفاده میشود و با استفاده از پارامترهای GET میتوانیم متوجه شویم که به دنبال چه چیزی هستیم یا در کدام صفحه از صفحات وبسایت قرار گرفتهایم.
به دلیل محدودیتهای کاراکتری در URL، ممکن است استفاده از متد GET مشکل ساز شود.
متد GET مناسب ارسال اطلاعات حساس و مهمی مثل نام کاربری، رمز عبور، اطلاعات کارت بانکی و غیره نیست، به خاطر اینکه اطلاعات به طور کامل در query string آدرس صفحه قابل مشاهده است و اینکه در حافظه مرورگر کاربر به عنوان یک صفحه بازدید شده ذخیره میشود.
متد GET تنها روش ارسال داده بين سرويس گيرنده و سرويس دهنده نمیباشد و برای ارسال اطلاعات میتوانیم از متد POST هم استفاده کنیم.