php  نقل البيانات عبر عنوان الويب

php GET : إرسال البيانات عبر URL

آخر تحيين: 09-01-2015

php حماية البيانات ، ثغرة : XSS php الجداول


Uniform Resource Locator : URL : "محدد موقع المعلومات" . و تسمى أيضا : عنوان الويب . و تقوم بحمل معلومات تُعرّف بها صفحات الويب . بكل بساطة هي الروابط المطلقة التي تشاهدونها على الدوام في شريط عناوين متصفحكم :



في بعض الأحيان تشاهدون عناوين بهذا الشكل ، :



هذا النوع من العناوين الذي يهمنا ، لأنه يحمل بيانات في طياته ، رغم أنه يبدو كعنوان مكتوب باللغة الصينية . لكنه في الحقيقة جد سهل لاستيعاب مكوناته . سندرس مثالا بسيطا ، لنتعرف عن طريقة كتابة هكذا روابط .



قمنا بتقسيم مكونات الرابط ، نلاحظ :
عنوان الويب الرّئيسي : www.site.com
متبوعا بصفحة php الحالية : hello.php
ثم مباشرة بعد اسم الصفحة نجد علامة استفهام ? . و هي جد مهمة ، لأن كل مايأتي بعدها عبارة عن بيانات منقولة عبر عنوان الويب هذا .
و لنقل البيانات ، نكتب المفتاح مثلا name ( يمكنكم تسميته كما شئتم) ، ثم علامة تساوي ، و نتبعها بقيمة المفتاح

هذه هي الطريقة العامة لنقل البيانات عبر عنوان الويب ، و سنتعرف فيما يلي عن كيفية إنشاء مثل هكذا روابط ، عبر دراسة مثال حي :
سنحتاج إلى صفحتين : و سنسميهما مثلا : index.php و hello.php
صفحة index.php سنجعلها صفحة الإنطلاقة . أي أننا سنضع فيها رابطا ، يحمل بيانات إلى صفحة hello.php
صفحة hello.php ستستقبل البيانات و تقوم بعرضها

إرسال البيانات

لصياغة رابط في صفحة index.php يحمل اسم الزائر في مثالنا . سنكتب :

1ـ اسم الصفحة التي نود الإنتقال إليها : hello.php
2ـ ثم نتبعها بعلامة استفهام "?"
3ـ ثم اسم مفتاح البيانات و قيمته : name=ahmed

<a href="hello.php?name=أحمد"> hello صفحة </a>

جربوا هذه الشيفرة على متصفحكم ضعوها في صفحة index.php مثلا ، و لا تنسوا إنشاء صفحة hello.php : "أتركوها فارغة أو ضعوا فيها ما تشاؤون ، سنرى قريبا كيف سنستقبل هذه البيانات".
ثم لاحظوا في شريط العناوين ، وجود اسم "أحمد" .
ننتقل الآن إلى طريقة استقبال البيانات في صفحة hello.php و سنستعمل لذلك متغيرا خاصا للغة php و هو عبارة عن متغير جدول نصي : $_GET[]

استقبال البيانات : GET_$

يمكننا المتغير GET_$ من استقبال البيانات الواردة عبر عنوان الويب "URL" . و ذلك عبر استخلاص قيمة اسم المفتاح الموجود في العنوان ، في مثالنا "name" . و لفعل ذلك ما علينا سوى استعمال متغير الجدول GET_$ كما تعلمنا في الجداول النصية ، و ستكون الشيفرة كالتالي :

<?php
  echo $_GET['name'];
?>

توضيح عملية نقل و استقبال البيانات بالصورة :

يمكننا إضافة أكثر من مفتاح واحد لعنوان الويب . و لفعل ذلك نفصل بينها بعلامة ampersands : & . مثال :
URL: hello.php?name=أحمد&age=24

نصيغ هذا الرّابط في صفحة index.php كالتالي :

<a href="hello.php?name=أحمد&amp;age=24">hello.php </a>
لاحظوا أننا قمنا بالفصل بين المفتاحين بإضافة amp; . لعلامة "&" و هذا ضروري لمسايرة المواصفات العالمية للغة html .

لاستخلاص البيانات في صفحة hello.php . نستعمل متغير الجدول GET_$ و نضيف له مفاتيح البيانات بين معقوفتين "[ ]"

<?php
 echo 'مرحبا بك زائرنا الكريم ، أعرف من تكون :
      إسمك : <b>'.$_GET['name'].'</b>
      و عمرك : <b>'.$_GET['age'].'</b> سنة';
?>

في مثالنا كتبنا قيم مفاتيح الرابط في صفحة index.php واضحة . إعلموا أنه يمكننا إضافة القيم على شكل متغير ، و هذا ما نفعله غالبا :

<?php
  $name = "أحمد";
  $age  = 24;
echo ' <a href="hello.php?name='.$name.'&amp;age='.$age.'">hello.php </a>';
?>

حدود استعمال GET_$

  • عندما ننقل بياناتنا عبر ال URL . فإننا ننقلها بالواضح ، أي أنه باستطاعة الجميع رؤيتها . و لهذا لا تستعملوا أبدا GET_$ لنقل بيانات حساسة ، ككلمة المرور مثلا ، أو رقم بطاقة التأمين ...إلخ .
  • نستعمل GET_$ لنقل بيانات جد عادية كرقم العضو ، أو رقم الصفحة أو عنوانها ...
    ـ أغلب المتصفحين لا يقبلون أكثر من 1024 حرفا أو رقما في عنوان الويب "URL" . و هذا يمنعنا من استخدام GET_$ لإرسال مقال أو نص .
  • ـ لا يمكننا البتة نقل ملفات كالصور و و ملفات WORD و EXCEL ...عبر ال URL
رأيتم طريقة إرسال و استقبال البيانات باستعمال GET_$ . و يبقى لنا شيء جد مهم يخص جانب الحماية عند هذا المتغير . هذا الجانب ليس بالمعقد و لا الصعب ، لكن إغفاله يعتبر سذاجة كبيرة و خطأ فادحا .