recent
أخبار ساخنة

ارسال البيانات عبر المتغيرات والنماذج في لغة PHP الدرس|11|

الصفحة الرئيسية
ارسال البيانات عبر المتغيرات والنماذج php

إرسال البيانات عبر صفحات الموقع في php

إرسال المتغيرات عبر النماذج في php, كثير من الأحيان نريد أن نرسل بيانات من صفحة إلى أخرى و تلك البيانات تكون قيم المتغيرات. و نريد أن يتم إرسال القيم إلى صفحة ثانية.

هناك طرق كثيرة لإرسال البيانات لكن اليوم سوف نستخدم إرسال البيانات عن طريق الروابط و النماذج forms.

كثير من الأحيان نرى رابط أحد المواقع بالشكل.

https://www.google.com/index.php?id=12345&page=send&sd=s3ss

ما يهمنا من الرابط بعد إسم الصفحة index.php فبعدها يوجد هناك الرمز ? ثم تأتي المتغيرات التي نريد نقلها.

على سبيل المثال معرف الشخص id و إسم الشخص name نريد أن يتم نقلهم إلى صفحة اخرى. و يكون الرابط بعد صفحة index.php بالشكل id=21&name=kaissar?.

لآحظ أن العلامة ? يأتي بعدها إسم المتغير ثم علامة = ثم قيمة المتغير المراد نقلها و تأتي العلامة & للفصل بين عدّة متغيرات نريد إرسالها بين الصفحات.


كيف لي أن اجلب قيم المتغيرات من الروابط؟

توفر لنا php مجموعة من الدوال التي يمكن إستخدامها حين نريد إرسال بيانات عبر الروابط. أو النماذج أو بإختصار من صفحة إلى أُخرى من خلال الروابط و هي GET و POST.


دالة GET في لغة PHP

توفر لنا php متغيرات عامة مثل GET_$ للحصول على قيم المتغيرات من الرابط.

على سبيل المثال نريد الحصول على قيمة المعرف id و الإسم name من الرابط السابق.

يكون الكود كالتالي

<?php
$id = $_GET['id'];
$name = $_GET['name'];
echo $id . '-' . $name;
?>

بداخل الأقواس المربعة ['']GET_$ يتم وضع إسم المتغير المراد جلب قيمته بين علامات الإقتباس الزوجية أو الفردية.

في الكود السابق تم إسناد قيم المتغير id الموجودة في الرابط للمتغير id$ و إسناد قيمة. المتغير name الموجودة في الرابط للمتغير name$ و تم طباعة المتغيرات.

قم بحفظ الكود السابق داخل صفحة و لتكن html.php و قم بتشغيل الصفحة داخل. السيرفر و لا تقلق من رسائل الخطأ التي سوف تظهر.

فسيتم شرح سبب الأخطاء, لكن الآن خذ الكود و قم بكتابته بعد إسم الملف في الرابط الذي هو html.php الكود id=500&name=kaissar?.

هنا سيتم طبع البيانات داخل المتغير name و هي 500_kaissar.

لكن السؤال هنا ماذا إذا قمت بتغيير إسم المتغير نفسه؟

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

و لتلاشي تلك الأخطاء توفر لنا php دالة للتعرف على وجود المتغير في الرابط و هي isset.


دالة isset في لغة PHP

يمكن لتلك الدالة التعرف على المتغيرات variable إذا كانت موجودة أو لا حتى لا تظهر أخطاء.

و أنه لم يعثر على متغير معين داخل الرابط أثناء إرسال البيانات لنقوم نإستخدام تلك الدالة في مثال.

<?php
$id = '';
$name = '';
if(isset($_GET['id']))
    $id = $_GET['id'];
if(isset($_GET['name']))
    $name = $_GET['name'];
echo $id  . $name;
?>

قمنا بإنشاء متغير بإسم id$ لكن لم يحمل بيانات و هو فقط فارغ و كذلك الأمر مع متغير name$.

و إستخدمنا دالة isset لتعرف ما إذا كانت المتغيرات موجودة أو لا و في النهاية تم طبع المتغيرات الذي لا تحمل شيئ من القيم.

يمكنك إعطاء قيم للمتغيرات, حتى تفهموا هذا بنسة 100%.

 

إرسال المتغيرات عبر النماذج في PHP

النماذج هي وحدة داخل html و هي وحدات لجلب المعلومات من المستخدمين مثل عمليات تسجيل الدخول و إضافة مستخدم جديد.

و تحتوي على العديد من عناصر الإدخال و نختار منها حسب الحاجة, تحتوي html على وسم أو تاغ بإسم form.

و هذا التاغ يحتوي على مجموعة من الخصائص في تميبز طريقة إرسال البيانات.

 

الخصائص التي يميزها form في تمييز إرسال البيانات

  • خاصية html form html: وظيفة تلك الخاصيّة هي تحديد مسار الملف الذي نود الإنتقال عليه أو المعالجة له.
  • خاصية method form html: تقوم تلك الخاصية بتحديد نوع إرسال البيانات إذا كان Get أو Post و طبعاً. نستخدم Post عندما نقوم بإرسال البيانات عبر النماذج أو عندما تكون البيانات. حجمها كبير أما بالنسبة لـ GET نستخدمها عندما نريد جلب المعلومات من الصفحات.
  • خاصية form html name: تقوم تلك الخاصية بإعطاء إسم للتعرّف على عناصر النماذج المرسله.

مثال

<body>
    <form action="login.php" method="post">
        <label> userName </label>
        <input name="username" type="txt" />
        <br /><br />
        <label> Password </label>
        <input name="password" type="password" />
        <input type="submit" value="login" />
      </form>
</body>

قمنا بإنشاء form أو نموذج تسجيل دخول يحتوي من الحقول على حقل إدخال. user name و حقل إدخال password و ايضاً زر تسجيل بإسم login.

لكن لاحظ هنا في السطر الأول عندما إستخدمت الخاصية action الموجوده داخل form و تم تحديد. مسار ملف آخر يجب أن ينتقل إليه المُستخدم عندما يقوم بإدخال البيانات في الحقول. و إسم هذا الملف الذي نود الإنتقال إليه هو login.php.

و إستخدمنا خاصية method لتحديد شكل الإرسال و هنا إستخدمنا post.

لماذا إستخدمنا post هنا؟

لأنها بيانات حساسة لا يجب أن تظهر في الرابط و نحن نعرف أن إرسال البيانات عن طريق GET. نستطيع أن نشاهد مسار البيانات و ايضاً متغير البيانات و الملف المستقبل لتلك البيانات.

و سيكون الشكل في المتصفح.

صورة لحقول الإستقبال


سنقوم الآن بإنشاء الملف المستقبل للبيانات و كان بإسم login.php فقط سيحتوي هذا الملف. على foreach الذي يستعمل بدوره لإستقبال البيانات من الدالة post إذا كان key أو value.

لنشاهد كيفية التعامل مع هذا الملف.

<h1>welcome admin form </h1>
<?php
foreach ($_POST as $key => $value)
{
    echo $key . ' : ' . $value  . ' : ' ;
}
?>

قمنا بإضافة عنوان في الملف المُستقبل للبيانات بإستخدام الوسم h1 يحتوي على رسالة ترحيبية.

ثم قمنا بإنشاء foreach و هنا إستخدمنا دالة POST_$ للإستعلام عن ما يحتويه form المرسل بإستخدام post.

سوف نقول هنا إذا المتغير KEY يساوي المتغير value إطبع المتغير key و إطبع المتغير value.

و سنقوم الآن بملئ الحقول بإسم kaissar و الباسورد سيكون 123456 و نشاهد بعد ملئ الحقول. بالقيم سوف نجد أن المتصفح إنتقل إلى الملف الآخر الذي هو login.php.

و سيكون المسار http://localhost/login.php ثم سيقوم بطباعة رسالة الترحيب الذي قُمنا بإنشائها.

وهي welcome admin form.

و سيقوم بطباعة ما تحتويه الحقول من البيانات الذي فعلنا foreach لها و سيكون username : kaissar:password : 123456:.

قام بطباعة username و كذلك password.

لكن لاحظ معي لم يتم طباعة username و password في المسار في الأعلى بعكس داله get. تقوم بطبع ما يحتوايه المتغير من بيانات و هذا خطأ تماماً. عندما تريد نقل بيانات حساسة مثل username or password.

أما بالنسبة إلى post لا تقوم بطباعة البيانات في الرابط.

google-playkhamsatmostaqltradent