الفرق بين post و get فى PHP

الفرق بين post و get فى PHP

لغة PHP هى لغة كما نعلم تعمل على السيرفر وليس على المتصفح مما يعنى انه عند اجراء العمليات المختلفة مثل تسجيل الدخول او البحث عن شئ ما داخل مواقع.

فاننا اولًا بحاجة إلى ارسال القيم المكتوبة فى الفورم Form من المتصفح إلى السيرفر وعندما تتواجد هذه المتغيرات على السيرفر يمكننا تخزينها فى متغيرات PHP وبالتالى اجراء العمليات المختلفة عليه مثلًا البحث داخل قاعدة البيانات عن الكلمة المراد البحث عنها والرجوع بالنتائج للمتصفح.

مثال على ذلك عند محاولة تسجيل الدخول إلى موقع فيسبوك فانك فى حاجة لنقل البيانات التى ادخلتها (الاسم والرقم السرى) من الفورم Form الموجود على متصفحك إلى سيرفرات الفيسبوك لتتحقق سيرفرات الفيسبوك من ان البيانات التى ادخلتها صحيحة.

بعد ذلك يعود إليك الفيسبوك بالدخول للموقع او الاخطار فى حالة ما اذا كان الرقم السرى خاطئ مثلًا.

الفرق بين post و get فى PHP
الفرق بين post و get فى PHP

لنقل البيانات من المتصفح إلى السيرفر فإننا بحاجة إلى احدى الطرقتين GET او POST

فائدة GET و POST

هى طرق لعمل طلب او Request لارسال او طلب شئ من السيرفر

إذًا هى ادوات وسيطة بين المستخدم والسيرفر

على اساس ان المستخدم هو المتصفح والسيرفر هو جهاز الكمبيوتر الذى يستضيف الموقع الذى يزوره المستخدم

لغة PHP لها نوعين من المتغيرات GET و POST

سنتعرف على كل طريقة منهم كيفية كتابة الكود الخاص بها والميزات ومتى تستخدم كل طريقة

طريقة GET

نرى هذه الطريقة احيانًا فى بعض صفحات المواقع ويمكن تميزها من رابط الموقع فى المتصفح مثال على ذلك

https://www.motwr.com/post?username=amrelarabi&location=egypt

فى المثال السابق بعد علامة ‘?’ يتم تحديد اسم المتغير الذى نريد تمريره وبعد علامة ‘=’ نرى القيمة المسندة إلى هذا المتغير

ويمكن تمرير اكثر من متغير عن طريقة علامة ‘&’.

ويمكن عمل فورم Form لارسال البيانات إلى السيرفر عن طريق رابط URL كالتالى

<form action="#" method="get">
<input type="text" name="name" placeholder="Your Name"></input><br/>
<input type="text" name="email" placeholder="Your Email"></input><br/>
<input type="text" name="contact" placeholder="Your Mobile"></input><br/>
<input type="submit" name="submit" value="Submit"></input>
</form>

فى الكود السابق نلاحظ تحديد القيمة get للخاصية method

مما يعنى انه عند عمل submit لهذا الفورم فان قيم الحقول الاسم والاميل والموبيل بالاسامى name و email و contact سوف تظهر فى المتصفح بهذا الشكل

?name=amr&email=amr@motwr.com&contact=1234

معنى هذا ان هذه القيم انتقلت من المتصفح إلى السيرفر ويمكنها الان التعامل معها بلغة PHP واجراء العمليات المختلفة عليها

عن طريق هذا المتغيرات

$name = $_GET['name'];
$email = $_GET['email'];
$contact = $_GET['contact'];

نلاحظ ان $_GET يحتوي على كل القيم الموجودة فى المتصفح من النوع GET ويمكن الحصول على قيمة اي متغير عن طريق

$_GET['the_name_of_attr']

حيث the_name_of_attr هو اسم الخاصية المراد الحصول عليها من المتصفح مثال name.

بعد ذلك يمكن اجراء اي عملية على المتغيرات التى اصبحت تحتوي القيم مثل name$ و email$ و contact$ مثل ارسالها لقاعدة البيانات لتسجيلها إذا كانت هذه الفورم لتسجيل عضو جديد مثلًا او اي كانت العملية عليها.

طريقة POST

من جهة المتصفح

<form action="#" method="post">
<input type="text" name="name" placeholder="Your Name"></input><br/>
<input type="text" name="email" placeholder="Your Email"></input><br/>
<input type="text" name="contact" placeholder="Your Mobile"></input><br/>
<input type="submit" name="submit" value="Submit"></input>
</form>

لاحظ ان قيمة method هى post فى هذه الحالة

وعند محاولة الحصول على هذه القيمة من جهة السيرفر

$name = $_POST['name'];
$email = $_POST['email'];
$contact = $_POST['contact'];

بنفس الطريقة السابقة ولكن مع اختلاف $_POST .

ملاحظات على $_POST و $_GET

إذا $_POST و $_GET هى مصفوفة وتحتوي هذه المصفوفة على القيم التى تخزن عليها عند عمل Submit لفورم معين على حسب نوع هذا الفورم GET او POST.

ويمكن الحصول على اي قيمة مفردة منها

$_GET['the_name_of_attr']

هذه المتغيرات $_GET و $_POST تسمى Superglobal Variables لانها يمكن الوصول عليها من جميع الصفحات

قبل الحصول على قيم هذه المتغيرات يمكن التأكد اولًا ما اذا كانت هذه المتغيرات غير فارغة على سبيل المثال

if( $_POST["name"] || $_POST["email"] || $_POST["contact"]){

$name = $_POST['name'];
$email = $_POST['email'];
$contact = $_POST['contact'];

}

متى نستخدم GET و متى نستخدم POST و الفرق بين post و get فى PHP

لعلك تتسأل الان عن الفرق بينهم ومتى تستخدم كل خاصية منهم

ولفهم الفرق بينهم سنقارن بينهم فى شكل نقاط

عند الضغط على زر الرجوع او اعادة تحميل الصفحة

فى حالة GET : غير ضارة

فى حالة POST : سيقوم المتصفح باشعار المستخدم لاعادة ارسال الفورم

الاشارة المرجعية او Bookmark

فى حالة GET : يمكن عمل اشارة مرجعية لها

فى حالة POST : لا يمكن

الكاش Cache

فى حالة GET : يحدث لها

فى حالة POST : لا يحدث لها

History فى المتصفح

فى حالة GET : تخزن فى History

فى حالة POST : لا تحزن فى History

طول البيانات

فى حالة GET : لانها تستخدم URL لارسال البيانات فهى محدودة لان اقصى طول لعنوان URL هو 2048

فى حالة POST : غير محدودة

نوع البيانات

فى حالة GET : فقط نوع البيانات ASCII

فى حالة POST : أي نوع بيانات , النوع الثنائى او Binary ايضًا متاح

الامان

فى حالة GET : اقل من حيث الامان فلا تستخدمها فى ارسال بيانات حساسة مثل الرقم السرى او خلافه لان البيانات تصبح جزء من عنوان المتصفح URL

فى حالة POST : اكثر امانًا لان البيانات لاتخزن فى المتصفح او URL

الرؤية

فى حالة GET : يمكن للجميع رؤية البيانات لانها ببساطة جزء من عنوان URL

فى حالة POST : البيانات مخفية

إذا يمكن تلخيص الفروق السابقة انه فى حالة البيانات الحساسة مثل الرقم السرى او الحساب البنكى او خلافة لاتستخدم GET ام فى حاجة اسكربت البحث مثلًا يمكن استخدام GET.

كان هذا درسنا لليوم عن الفرق بين post و get فى PHP وشكرًا لكم.


كتب بواسطة عمرو العربى

مؤسس مطور

التعليقات

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

*