برمجة المواقع وقواعد البيانات تعليم قواعد بيانات Access , MySQL , php , ajax , css , html اوراكل.....وغيرها

قديم 20-07-2009, 10:44 PM
  #1
يوسف الضادي
VIP_MEMBRE
 الصورة الرمزية يوسف الضادي
 
La spécialité: Informatique
جامعة ابن خلدون تيارت
تاريخ التسجيل: 17-08-2008
الدولة: تيارت/الرحوية
المشاركات: 5,337
يوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداع
09 التحقق من صحة البيانات المدخلة فى الـ Form validation in php


ماذا اذا كنا نبرمج سكريبت تسجيل عضويات جديدة مثلا

ونريد التحقق من كل حقل يدخله المستخدم؟ هل هذا الحقل هو حقا يحتوى فقط على البيانات التى نحتاجها؟ ام ان به اشياء خاطئة؟

هذا ماسنتعلمه, وهو لن يكون شئ جديد عليك, سوى ارشادك لكيفية تطبيق ماتعلمته من قبل.

اول شئ نحدد الحقول التى سنضعها بالفورم الذى سنصنعه

وهى كالتالى

1- الإسم.
2- العنوان.
3- البريد
4- الهاتف

ثانيا نبدأ فى تحليل هذه الحقول.

بالنسبة للأسم, لا اظن ان هناك شخص اسمه الأول يكون اكثر من 20 حرف.
ولا اقل من 3 حروف.

وايضا لا يوجد شخص اسمه يحتوى على رقم. او _ او - لكنه فقط يكون حروف وربما مسافات.

تمام هذا بالنسبة للإسم.

العنوان, هذا الحقل لا اظن انه يمكننا التحقق به اى شئ, الا ان نتأكد انه ليس اقل من 10 احرف لا اظن انه هناك عنوان شخص ما يكتب فى اقل من عشرة حروف.

وايضا العناوين لا يمكن به رموز سوى . (نقطة) مثلا بنهايتها, او فاصلة.
بجانب الأرقام والحروف.

بالنسبة للبريد.

عنوان البريد يقسم الى ثلاث اجزاء, جزء قبل علامة * وجزء بعدها. ثم نقطة, ثم امتداد النقاط.
كالتالى مثلا user*example.com

اسم مستخدم البريد وهو فى المثال اعلاه هو user غير ممكن ان يكون اكثر من 64 حرف

لكن اسم النطاق, يمكن ان يصل لـ 255 حرف ورقم (متضمن امتداد النطاق)

لكن هذا العدد من الأحرف اقل من 1% من اصحاب المواقع يستخدموه.

بالتالى
اسم مستخدم البريد, سوف نحدده الا يتعدى 60 حرف (اظنها نسبة معقولة ومقبولة نوعا ما)
واسم النطاق لا يتعدى الـ 40 حرف (ايضا اظنها نسبة معقولة)

وامتداد النطاق لا يتعدى 6 احرف, صراحة لم اصادف اى نطاق يكون امتداده اكثر من ذلك.

بالنسبة لرقم الهاتف فهو معروف, يتكون من ارقام فقط, ولا يتعدى 14 رقم.

الأن حللنا جميع الحقول. نبدأ اول شئ بصنع الملف الذى سيعرض الفورم نفسه

وسوف اعطه الإسم index.php
ومحتواه هو التالى

كود PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xml:lang="Ar" lang="Ar" dir="rtl" xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" dir="rtl">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>فورم احترافى</title>
</
head>

<
body>
<
form method="post" action="validator.php">
<
table border="1" align="center" cellpadding="0" cellspacing="0">
<
tr><td>الإسم: </td><td><input type="text" name="name" value="" /></td></tr>
<
tr><td>العنوان: </td><td><input name="address" type="text" size="60" value="" /></td></tr>
<
tr><td>البريد: </td><td><input type="text" dir="ltr" name="email" value="" /></td></tr>
<
tr><td>الهاتف: </td><td><input type="text" dir="ltr" name="phone" value="" /></td></tr>
<
tr><td colspan="2"><input type="submit" value="انهاء" /></td></tr>
</
table>
</
form>
</
body>
</
html
لاحظ اننا حددنا الـ action على ملف له الإسم validator.php
وهذا هو الملف الذى سيقوم بمعالجة ماتم ارساله بواسطة الفورم.

هذا الملف سوف يحتوى على اربعة دوال (سنقوم نحن بصنعهم)
وايضا سيحتوى بقية متطلبات التعامل مع البيانات التى تم ادخالها بالـ form
ونبدأهم بدالة التحقق من الإسم
كود PHP:
 
function valid_name($name){ 
    
//نتأكد اولا من عدم وجود اى رموز داخل النص 
    //اذا وجد اى رموز ستعود الدالة برسالة خطأ 
    
if(ereg("[[:punct:]]|[[:digit:]]|[[:cntrl:]]"$name) !== false){ 
        
//نعم هناك علامات ممنوع وضعها بالإسم 
        
return "الإسم الذى ادخلته غير صحيح او يحتوى على رموز يمنع استخدامها"
    } 
    
//نتأكد ان عدد الحروف ليس اقل من ثلاث حروف 
    
if(mb_strlen($name,'utf-8') < 3){ 
        return 
"الإسم لا يجب ان يكون اقل من ثلاث حروف"
    } 
    
//نتأكد ان عدد الحروف ليس اكثر من عشرين حرف 
    
if(mb_strlen($name'utf-8') > 20){ 
        return 
"الإسم لا يجب ان يكون اكثر من عشرين حرف"
    } 
    
//لم يتم العثور على اى خطأ 
    
return true

كما تلاحظ الدالة تأخذ معطى واحد, وهو الإسم, بعد ذلك تجرى عليه عدة تحققات, اذا وجد اى خطأ تعود لنا الدالة بهذا الخطأ.
(واذا كنت تتذكر, فـ الدالة يتوقف عملها عند اول امر return تصل له) اذن ان لم يتحقق اى خطأ فستعود لنا بـ true

يعنى لم يتم العثور على اى خطأ بالإسم, غير ذلك ستعود لنا برسالة توضح الخطأ.

الأن دالة التحقق من العنوان
وهى كالتالى
كود PHP:
 
function valid_address($address){ 
    
//نحذف اى مسافات ببداية او نهاية الحقل 
    
$address trim($address); 
    
//تأكد ان عدد حروف العنوان ليست اقل من 10 
    
if(mb_strlen($address) < 10){ 
        return 
"العنوان لا يجب ان يكون اقل من 10 احرف"
    } 
    
//تأكد من عدم وجود اى رموز غير مطلوبة بالعنوان 
    
if(ereg("[[:punct:]+]|[[:cntrl:]]"$address) !== false){ 
        return 
"العنوان لا يجب ان يحتوى الا على حروف ومسافات وارقام فقط"
    } 
    return 
true

كما ترى, اولا نقوم بالتأكد ان عدد الأحرف ليست اقل من 10, بعد ذلك نتحقق من عدم وجود اى رموز داخل العنوان.

الأن دالة التحقق من البريد وهى كالتالى
كود PHP:
 
function valid_email($email){ 
    
//اول شئ احذف اى مساحات فارغة ببداية او نهاية البريد 
    
$email trim($email); 
    
//كود المطابقة الذى سنطابقه مع البريد 
    
$pattern "^([[:alnum:]_.\-]{1,64})*([[:alnum:]_.\-]{2,40})(\.[a-z]{2,6})$"
    if(
ereg($pattern$email) === false){ 
        return 
"عنوان البريد الذى ادخلته غير صحيح"
    } 
    return 
true

كما ترى, بالأول نتحقق من صلاحية البريد بإستخدام اكواد regular expressions بنظام الـ posix
واذا حدث خطأ يتم طباعته.

والأن الدالة الأخيرة للتحقق من صحة رقم الهاتف. وهى تتحقق فقط ان قيمة حقل الهاتف بالكامل رقمية
ولا تقل عن 10 ارقام ولا تزيد عن 14 رقم.

كود PHP:
function valid_phone($phone){ 
    
$phone trim($phone); 
    
//نتأكد اذا كان رقم الهاتف الذى تم ادخاله لا يحتوى الا على ارقام فقط 
    //وعدد الأرقام لا يقل عن 10 ولا يزيد عن 14 رقم 
    
if(ereg("[0-9]{10,14}"$phone) === false){ 
        return 
"رقم الهاتف الذى ادخلته غير صحيح"
    } 
    return 
true

الأن بعد انتهائنا من كل الدوال التى سنحتاجها.

نبدأ فى معالجة البيانات التى تم ارسالها بواسطة الفورم.

وسيكون بقية الإسكريبت كالتالى

كود PHP:
//نبدأ فى تعريف المتغيرات التى سنعمل عليها 

//تعريف متغيير حقل الإسم 
$name $_POST['name']; 
//تعريف متغيير حقل العنوان 
$address $_POST['address']; 
//تعريف متغيير حقل البريد 
$email $_POST['email']; 
//تعريف حقل الهاتف 
$phone $_POST['phone']; 

//تعريف مصفوفة الأخطاء 
$errors = array(); 
//اذا لم يتم ادخال اسم صحيح 
if(valid_name($name) !== true){ 
    
$errors[] = valid_name($name); 


//اذا لم يتم ادخال عنوان مناسب 
if(valid_address($address) !== true){ 
    
$errors[] = valid_address($address); 


//اذا لم يتم ادخال بريد صحيح 
if(valid_email($email) !== true){ 
    
$errors[] = valid_email($email); 


//اذا كان هناك شئ غير صحيح برقم الهاتف 
if(valid_phone($phone) !== true){ 
    
$errors[] = valid_phone($phone); 


//اذا وجد اى اخطاء اطبعه ولا تكمل بقية الإسكريبت 
if(!empty($errors)){ 
    
$err_msg 'من فضلك قم بتصحيح الأخطاء التالية<br />'
    foreach(
$errors as $error){ 
        
$err_msg .="{$error} <br />"
    } 
    echo 
$err_msg
    exit; 


//اذا لم يحدث اى خطأ, رحب بضيفنا 
$welcome = <<< WEL 
مرحبا بك عزيزى 
{$name}<br /> 
بريدك هو : {$email}<br /> 
وعنوانك : {$address}<br /> 
هاتفك : {$phone
WEL
echo 
$welcome
لا تنسى ان تضع الأكواد بالملف بالترتيب كما هى داخل وسم php
وبنفس مسميات الملفات التى تم ذكرها.

وجرب بنفسك محاولة ادخال بيانات غير صحيحة بالإسكريبت.

درس اليوم اعلم انه كان كبير, وسيتطلب منك الكثير من العناء لفهم كل شئ دار به.
لكنى تعمدت ذلك. لأن اذا كنت طموح مثلى وتريد حقا ان تصبح مبرمج جيد.

فأنت ستواجه ماهو اشد قسوة من هذا بكثير, ولذلك يجب ان يتم إعدادك لتحمل هذه الأمور.

وتأكد ان هذا الدرس مثلما هو مرهق لك, فهو ارهقنى كثيرا فى اعداده وترتيبه.

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

وان شاء الله انا معك اذا تعطلت فى اى شئ. او كان لك اى استفسار.

الأن اترككم فى امان الله, ولا تنسى ان تحاول ان تضيف ابداعتك ومهاراتك.

لا تنسى ان تضع الأكواد بالملف بالترتيب كما هى داخل وسم php
وبنفس مسميات الملفات التى تم ذكرها.

وجرب بنفسك محاولة ادخال بيانات غير صحيحة بالإسكريبت.


__________________
يوسف الضادي غير متواجد حالياً  
قديم 21-07-2009, 12:11 AM
  #2
حنان لحن الحياة
VIP_MEMBRE
مشرفة سابقة
 الصورة الرمزية حنان لحن الحياة
 
La spécialité: Autres
اخرى ( جامعة عربية او اجنبية )
تاريخ التسجيل: 12-04-2009
الدولة: المغرب
المشاركات: 2,355
حنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداعحنان لحن الحياة عضو محترف الابداع
افتراضي رد: التحقق من صحة البيانات المدخلة فى الـ Form validation in php

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



حنان لحن الحياة غير متواجد حالياً  
قديم 21-07-2009, 08:38 AM
  #3
يوسف الضادي
VIP_MEMBRE
 الصورة الرمزية يوسف الضادي
 
La spécialité: Informatique
جامعة ابن خلدون تيارت
تاريخ التسجيل: 17-08-2008
الدولة: تيارت/الرحوية
المشاركات: 5,337
يوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداع
افتراضي رد: التحقق من صحة البيانات المدخلة فى الـ Form validation in php

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

اقتباس:
المشاركة الأصلية كتبت بواسطة عاشق القلم مشاهدة المشاركة
شـكــ وبارك الله فيك ـــرا لك
موفق بإذن الله
لك مني أجمل تحية .


شكرا لمرورك اخي الكريم
الملفات المرفقة
نوع الملف: zip email.zip‏ (849 بايت, المشاهدات 11)
__________________
يوسف الضادي غير متواجد حالياً  

الكلمات الدلالية (Tags)
المدخلة, امتحانات, التحقق, form, validation

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
درس فيديو تغير شكل skin c# Form aekarabe برمجة بلغة c و c++ و c# 0 14-03-2013 09:06 PM
Windows Form Control Serie 2005 achraf.mouni الإعــلام الآلي والرياضيــات 2 29-12-2008 07:20 PM
Windows Genuine Advantage Validation v1.8.32.0 achraf.mouni منتدى البرامج العام 3 16-11-2008 12:13 PM


الساعة الآن 12:35 PM.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. , TranZ By Almuhajir