الحماية: درس عن form و php و طريقة طباعة input من المستخدم

الكاتب: Mr.Aziz

تاريخ النشر: 2022-10-27 07:40:10

مرحبا...

 

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

 

ولكن المشكله form ماتقدم لك حماية يعني اي مستخدم يدخل input أو يكتب اي شي form راح يطبعها بشكل مباشر. راح نستخدم php مع form ليتم طباعة اي شي يتم كتابتها بواسطة المستخدم..

 

نبدء بسم الله..

 

 

هذا شكل form كل شي بداخله له وظيفه معينه يعملها 

action: بعد ماتضغط submit يجي دور action يحول لك على صفحة ثانيه او صفحة نفسها او لايعمل شي..

method: هل تريد يتم استقبال البيانات من خلال get أو post؟

lable: يتم طباعة على الموقع ليرى المستخدم مثلآ ماهو اسمك أو عمرك وغيره..

input: المدخلات في مناا type و name و value سوف اشرح عنها الان

كل وحده منها لها وظيفة معينة 

type: مانوع المدخل يكون كتابيآ أو ارقام او باسورد و غيره . بالمقال القادم سوف اطبق على كل منها..

name: القيمة يتم أستقبالها من خلال الدالة $_POST أو $_GET سوف اشرح عنها بعد قليل..

value: وظيفتها فقط يظهر للمستخدم اي قيمة و هذي تفيد في حال عندك صفحة editor و تريد تعدل على كلمة راح تلاحظ الكلمة موجوده. سوف اشرح عنها بالمقال مستقل.

 

button: هذا أرسال أو submit بلاحظ اني كتبت type sumbit يعني اذا المستخدم ضغط يتم ارسال المدخلات.

 

هذا شكل بعد ماكتبت form.

 

بتلاحظ كلمة ماهو أسمك هو عباره عن lable

الخانة عباره عن input 

الزر عباره عن button يتم أرسال المدخلات على سبيل المثال ادخلت abdulaziz :D و ضغطت الزر يتم ارسال كلمة abdulaziz :D

 

مع العلم لو كتبت في value Abdulaziz :D  مهم ماتحدث الصفحة راح تبقي نفس المدخل زي ماهو واضح بالصوره..

 

الان يوجد مشكلة ! لما نجي نضغط ارسال مايصير شي. هنا نجي الخطوه الى بعدها...

 

 

أولآ عملت متغيرتين هم $yourname و $yourcountry 

ثم بعد كذا نريد نستقبل اي مدخلات من المستخدم. ألان يجي دور name =" " بداخل form 

أولآ على المدخل yourname ناخذ تبع اسماء هو myname نضعه في $_POST 

 

تصبح بهذا الشكل $_POST['myname']  

myname بداخل form  تبع الاسم هو name ="myname" لو تلاحظ 

بكذا $yourname يتقبل أي مدخل من مدخلات المستخدم.

 

نفس الشئ مع country نستخدم country مع POST 

 

ألان نعمل echo  و نضع المتغير المحفوظ فيه المدخلات التي تم ادخالها من قبب المستخدم.. 

 

بعد كذا نجرب...

 

زي ماتلاحظ. كل مره يتم ادخال اي شي من المستخدم 

يتم طباعة تحت زي ماتلاحظون

 

لانه المدخل يتم حفظه في القيم بداخل name="" و كل الى علينا نستقبل هذي القيم الى الدالة محجوزه هي $_POST و اذا كان get يكون في $_GET 

 

و نعمل متغير ياخذ هذي القيمة او نقدر نستخدم $_POST بشكل مباشر..

 

بس دقيقة؟ ماذا عن حماية المدخلات هل هي امنة ولالا؟

 

نجرب نشوف نعمل alert بالجافاسكربت...

 

 

زي ماتلاحظ ألان لما عملت هذي طريقة اتضح المدخلات مصابه بثغرة xss 

 

كيف نحمي انفسنا؟ يوجد دوال مخصصه لهذا الشئ و بنستخدم دالة htmlspecialchars

 

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

 

على سبيل المثال:

 

بكل مره أضغط على ارسال يتم طباعة مهم ماكان المدخلات.

 

للعلم: يوجد أكثر من طريقة عمل فلتره ولكن هذي أحد الطرق بكل تأكيد

 

وأنتهينا

أشوفكم على خير