• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

البحث في المنتدى

Showing results for tags ' تسجيل '.

  • البحث بالتاقات

    اكتب الكلمات المفتاحيه بينها علامه الفاصله
  • البحث بكاتب الموضوع

تم إيجاد 33 نتيجة

  1.           برنامج لافي لأدارة العيادات الطبية يضمن لك : o          سهولة ادراة بيانات المرضي و السجلات المرضية الخاصة بهم . o          إمكانية حفظ الملفات والفيديوهات الخاصة بكل مريض ( الأشعة والتحاليل). o          معرفة مواعيد الزيارات  . o          معرفة  التاريخ المرضي لكل مريض و امكانية استرجاع الروشتات السابقة . o          تنظيم عملية الحجز. o          امكانية تخزين بيانات الاطباء و مواعيد العمل . o          امكانية اضافة الادوية و الجرعات . o          الحفاظ علي البيانات باخذ نسخة احتياطية قبل اغلاق البرنامج. o          يدعم جميع انظمه تشغيل ويندوز : (Windows xp (x86 (Windows xp (x64 (Windows 7 (x86 (Windows 7 (x64 (Windows 8 (x86 (Windows 8 (x64 o          لتحميل النسخة التجريبية           http://lavie-clinic.com/public/ar-EG/application/index/trial o          لمشاهدة الفيديو : للتواصل يرجي الاتصال علي :           201028717701+ 201012470507+ o          ارسال بريد الكتروني :         [email protected] o          لشراء النسخة الاصلية : سعر النسخة 1500 جنية مصري بعد الخصم 770 جنية مصري                                      220 دولار بعد الخصم 110 دولار
  2. أعلنت شركة “موزيلا” عن عدد من المزايا الجديدة القادمة لمُستخدمي مُتصفح الإنترنت التابع لها “فايرفوكس”، والتي تأتي في مُقدمتها ميزة “الحسابات”، بالإضافة إلى تحسين “المُزامنة” على مُختلف الأجهزة. وتسمح ميزة “الحسابات” Firefox Accounts للمُستخدم بتسجيل حساب خاص به على المُتصفح، وتضمين عدد من الخدمات في مُتصفحه مثل “المُزامنة” Firefox Sync. وتوفر “المُزامنة” نقل بيانات التصفح مثل كلمات المُرور، والمواقع المُفضلة وسجل التصفح history وغيرها عند تسجيل الدخول على مُتصفح “فايرفوكس” من أي جهاز. وقامت “موزيلا” بتحسين هذه الميزة بجعلها أسهل إعداداً، مع المُحافظة على نفس درجة التشفير بالاستفادة من بروتوكول BrowserID الذي يوفر حماية أعلى للمُستخدمين. ويستطيع المُستخدم تجريب المزايا السابقة بتحميله مُتصفح “فايرفوكس أورورا” Firefox Aurora الذي دعمته “موزيلا” بتلك الخصائص بالإضافة إلى غيرها، مثل إمكانية تخصيص واجهة المُستخدم، وترتيب المزايا حسب الأولوية في القوائم، وذلك بالنسبة لنُسخ المُتصفح على “ويندوز” و”ماك” و”لينوكس”، وحذف أزرار من المُتصفح، حسب الرغبة. وقامت “موزيلا” بإعادة تصميم واجهة مُتصفح ”فايرفوكس أورورا” لتسهيل أداء المهام، وتوفير السُرعة في ذلك، بالإضافة إلى تصميم جديد للتبويبات tabs، يجعل من التبويبات غير الفعالة مُندمجة مع الخلفية، لتسهيل الوصول إلى التبويبات المطلوبة، بالإضافة إلى قائمة جديدة تضم أشهر الخصائص، مثل النسخ واللصق والتكبير. المصدر: البوابة العربية للأخبار التقنية
  3. استاذتى الافاضل  اريد استشارتكم  هل من الممكن ان يتم ربط قاعدة بيانات بنموذج من نماذج جوجل دوكس لتسجيل البيانات  بحيث فى حين ان اى فرد سجل على لينك جوجل دوكس يتم ارساله الى قاعدة البيانات  فهل ذلك ممكن  ولكين مثالا  1- قاعدة بيانات فارغه  2-لينك جوجل لتسجيل البيانات  اولا فى جوجل دوكس يكون هناك نموذجان نموذج للعميل يشبه صفحه html لتسجيل البيانات مثل ذلك  https://docs.google.com/forms/d/1d2cEDk_GfGXKFrEMheWePojYb5R3zeAyKIpIXxP1RKQ/viewform وثانيا نموذج لتلقى البيانات لا يطلع عليه الا الادمين ويكن هوه الذى يحتوى على الداتا المسجله من قبل العميل مثل ذلك https://docs.google.com/spreadsheet/ccc?key=0AljBRIx9dflmdDZseTVzbjJCUlRuNVZYUzVnOE1obFE&usp=sharing فهل من الممكن ربط هذا النموذج بقاعدة البيانات بحيث عند تسجيل اى شخص يتم تصديرها او ارسالها الى القاعدة دون الحاجه الى متابعة اللينك بشكل يومى  وشكرا لكم لما قدمتموه لنا ولى بصفه شخصية من علوم وخبرة لن ننساها لكم  ووفقكم الله لما فيه الخير    Database & Google.rar
  4. النهاردة جبتلكم موضوع عجبني جدا عن التسويق الالكترونى عبر الاعلانات المبوبة انا نقلت لكم الموضوع علشان اهميته   اعلانات مبوبة مجانية | اعلانات مبوبة بدون تسجيل | اعلانات مجانية بدون تسجيل   تسويق منتجك عبر اعلانات مبوبة مجانية يعتبر التسويق الالكترونى من اهم الطرق الرئيسية التى تصنع لك وجود حقيقى على النت وتعتبر من الوسائل والطرق التى لا يستهان بها فى تحقيق اهدافك وذلك لوجود اكثر من 100 مليون مستخدم وكل فترة فى زيادة مستمرة واصبحت شبكة الانترنت وسيلة الكترونية سريعة. وتعتبر شبكة الانترنت من اهم الوسائل التى تتيح فورية الشراء ومستوى عالى من الراحة والسهولة واصبح هو المكان الرئيسى للعرض والطلب والشراء والبيع  ولكن ما هى الخطوات والطرق التى تتم من خلالها عملية الشراء والبيع نتعرف من خلال الاتى: اعلانات مبوبة بدون تسجيل تعتبر الاعلانات المبوبة المجانية بدون تسجيل من اهم الوسائل لعرض المنتج وهى تحتوى على العديد من الاقسام مثل العقارات والسيارات والشقق والاراضى والفيلات واعلانات وظائف خالية …..والخ  الوسيط للاعلانات المبوبة المجانية بدون تسجيل     تستخدم لبيع وشراء عقارات و سيارات و ايجار عقارات و وظائف شاغرة وبيع وشراء اجهزة الكترونية و كمبيوترات و جوالات و اثاثات و مقتنيات وتقوم الوسيط بعرض منتجاتها من خلال اعلانات مبوبة بدون تسجيل واصبحت تتنافس فى ذلك مع بقية الشركات لان اعداد المستخدمين يتزايد يوم بعد يوم وهى اصبحت اسرع وسيلة للعرض والطلب ونجد كثير من الناس يبحثون عن حوائجهم سواء كانت صغيرة او كبيرة عبر المواقع التسويقية  وتعتبر اعلانات مبوبة مجانية هى اهم الطرق التى تجذب العملاء وتساعد على تنافس العملاء لوضع اعلاناتهم فى الموقع ولكثرة عمليات العرض والطلب والشراء والبيع ذلك يؤدى الى كثرة الارباح للعميل   الموقع الرسمي :http://www.alwaseet.com قناة اليوتيوب : http://www.youtube.com/user/alwasset صفحة الفيس: https://www.facebook.com/pages/Alwaseet/597922890218515  صفحة تويتر : https://www.twitter.com/alwaseetcom منقول للامانة  
  5. الاخوان الاعزاء في المنتدى الكريم السلام عليكم ورحمةالله وبركاته فهذه هي اول مشاركة لي في منتداكم الرائع والذي اطعلت على بعض مواضيعه حقيقة القيمة جدا  وبفضل الله استفدت منه وأسأل الله العلي القدير ان يبارك لكم اعمالكم ويجعلها في موازين اعمالكم وبعد,, المرفق التالي قاعدة بيانات فيها نموذج اسمه ادخال العمليات يسجل به وقت الحضور ووقت الانصراف للموظفين وكما في المثال هناك حركة ادخال لموظف بتاريخ 01-03-2013  ما اريده هو يوجد ثلاثه حقول فارغه في نفس النموذج عدد ايام الشهر عدد ايام الجمع عدد ايام العطل الرسمية وبناء على الشهر المدخل شهر 03 تعبأ الحقول الثلاثه وتأخذ معلوماتها  من جدول موجود في نفس قاعدة البيانات اسمه جدول معلومات الشهر بحيث تلحق الحقول الفارغه بالمعلومات لكل سجل يدخل بناء على تاريخ الحقل من جدول الشهر السبب في ذلك هو انني اريد حساب الراتب الشهري للموظف بالساعة وحسب ايام عمل  الشهر الفعلي بعد طرح الجمع والعطل الرسمية وهناك ملاحظة هامه اخواني انه اذا اجريت تغير على جدول معلومات الشهر ان يؤثر ذلك  على معلومات الشهر التي تم الحاقها في نموذج ادخال العمليات بارك الله فيكم اخواني الكرام ان اجد ضالتي في هذه المنتدى الرائعالدوام.rar
  6. الحمد لله والصلاة والسلام على رسول الله   السلام عليكم ورحمة الله وبركاته   * إستخدام النمط JSON لتخزين وجلب البيانات :   هذا الدرس ضمن سلسة دروس الدورة التالية لتعلم لغة php !   تخزين البيانات : - تتم عملية تخزين البيانات إما بإستخدام قواعد البيانات أو إستخدام الملفات , واليوم بإذن الله سنتعرف على كيفية حفظ البيانات بواسطة الملفات ولن نتطرق كثيراً لدوال التعامل مع الملفات إلا فتح الملف لحفظ سلسة نصية أو إستيرادها وسيأتي الحديث عن التعامل مع الملفات بشئ من التفصيل فيما بعد , وربما لا تحتاج لها بعد تناولنا الدرس التالي   - ولكن قبل أن نتعرف على تنسيق الـ JSON لحفظ البيانات سأذكر موضوع مدى المتغيرات * مدى المتغيرات : - يقصد بمدى المتغيرات هي الفترة من لحظة تعريف المتغير إلى أن يصبح غير مُعَرَف ولا تستطيع إستخدامه والوصول للقيمة التي يحملها . - عند تعريف متغير فهو متاح لكل العناصر تحته - أي بعد تعريفه - وحتى إذا تم تضمين ملف بعد تعريف المتغير يكون هذا المتغير متاح للإستخدام داخل أكواد الملف , ولكن لا يكون المتغير معرف داخل الدوال مثال لتتضح الصورة : <?php$var1 = 'ahmed';function test(){    echo $var1;}test();?> - هذا الكود سيعطي خطأ لأنها عملية وصول لمتغير غير معرف بالنسبة للدالة - المتغيرات داخل الدوال أو وسائط الدالة تعتبر متغيرات محلية تنتهي بإنتهاء الدالة ولا نستطيع إستخدام هذه المتغيرات وهذا مثال على ذلك : <?phpfunction test(){    $var1 = 'ahmed';}echo $var1;?>- فالكود السابق أيضاً يعطينا خطأ عند تنفيذه لمحاولة الوصول لمتغير محلي خاص بالدالة - إذاً على هذا يمكن لنا إستخدام نفس اسماء المتغيرات خارج الدالة وداخلها لأنها تعتبر متغيرات منفصلة عن بعضها البعض كالمثال التالي : <?php$var1 = 'ahmed';function test(){    $var1 = 'Mohammed <br>';    echo $var1;}test();echo $var1;?>- وواضح من الكود السابق أن قيمة المتغير الأول لم تتأثر عند إستدعاء الدالة على الرغم من أن اسم المتغير واحد - إذا أردنا إستخدام نفس المتغير داخل الدالة وإجراء تعديلات عليه فعلينا - كما تعلمنا من الدرس الثالث - تمرير عنوان المتغير كوسيط للدالة بإستخدام العلامة & قبل اسم المتغير كالتالي : <?php$var1 = 'ahmed';function test(&$var1){    $var1 = 'Mohammed <br>';    echo $var1;}test($var1);echo $var1;?>أو استخدام الكلمة المحجوزة gobal لتعريف الدالة على أن هذا المتغير هو متغير عام وليس خاص بالدالة كالتالي : <?php$var1 = 'ahmed';function test(){    global $var1;    $var1 = 'Mohammed <br>';    echo $var1;}test();echo $var1;?>- وعلى هذا تتعامل الدالة مع المتغير العام وأي تعديل على قيمة هذا المتغير تتم على المتغير العام , نعود لموضوعنا ... التنسيق JSON : - JSON وهي إختصار لـ javaScript Object Notation وهي طريقة في لغة javaScript للتعامل مع البيانات , وتم إنتشارها ودعمها في أغلب لغات البرمجة الأخرى لسهولة وديناميكية التعامل مع هذه الطريقة ويمكن لنا إستخدام هذه الصيغة كبديل أمثل لنقل البيانات بدلاً من إستخدام ملفات XML . وأيضاً تستخدم هذه التقنية في جلب البيانات من مواقع شهيرة كموقع twitter من خلالـ twitter json api وحالة الطقس من موقع yahoo من خلالـ yahoo json weather api هذه كانت مقدمة لموضوع كنت قد كتبته عن هذه التقنية في قسم لغة java على هذا الرابط . الموضوع بسيط سأوضحه هنا بشكل سريع : - يتم حفظ البيانات في تنسيق JSON على شكل كائن وتوضع العناصر بين الأقواس {} أو على شكل مصفوفة وتوضع عناصر المصفوفة بين الأقواس [] - القيم التي يتم حفظها داخل الكائن أو المصفوفة هي أعداد صحيحة وأعداد كسرية وسلاسل نصية وقيم منطقية وكائنات أخرى أو مصفوفات أخرى ويمكن الجمع بين جميع هذه الأنواع داخل كائن واحد أو مصفوفة واحدة ويتم إسناد القيم للعناصر بإستخدام الرمز : ويتم الفصل بين العناصر بإستخدام الفاصلة ,   * أمثلة للقيم داخل الكائن : {"var1":10,"var2":true,"var3":null,"var4":"Ahmed","var5":12.55}ملاحظة : يجب أن يكون اسم العنصر بين علامتي إقتباس لأن بعض لغات البرمجة لا تقبل اسم العنصر بدونها , وأيضاً يجب وضع السلسة النصية بين علامتي إقتباس .   * أمثلة للعناصر داخل المصفوفة : [10,20.25,"Ahmed",null,true]كما يمكن الجمع بين الإثنين معاً كأن يحتوي الكائن على مصفوفات أو تحتوي المصفوفات على كائنات   * كائن يحتوي على مصفوفة : {"var1":10,"var2":[10,20,30]}مصفوفة تحتوي على كائن : [10,20,{"var1":"ahmed","var2":900},"Khaled"]وهكذا يتم إحتواء الكائنات والمصفوفات داخل بعضها البعض وهكذا ... وما سبق هو كيفية هيكلة البيانات بإستخدام أسلوب الـ JSON والتالي الدوال التي تتعامل مع هذا التنسيق في لغة php : - دالة json_encode للتحويل إلى تنسيق الـ JSON - دالة json_ decode لتحويل تنسيق JSON إلى كائنات ومصفوفات يمكن التعامل معها من خلال لغة php ملاحظة : المصفوفات الترابطية hash table في لغة php يتم تحويلها إلى كائن في تنسيق JSON - أولاً : تحويل البيانات إلى صيغة JSON بإستخدام دالة json_encode   * أمثلة :   1- لدينا مصفوفة ترابطية بها قيم مختلفة سيتم تحويلها لتنسيق JSON كالتالي : <?php    $data['var1'] = 10;    $data['var2'] = 20.13;    $data['var3'] = null;    $data['var4'] = true;    $data['var5'] = 'Ahmed';    echo json_encode($data);?>* المخرجات : {"var1":10,"var2":20.13,"var3":null,"var4":true,"var5":"Ahmed"} 2- لدينا مصفوفة عادية -أي معرفاتها عبارة عن أرقام- وتحتوي على قيم مختلفة لاحظ شكل المصفوفة في المخرجات : <?php    $data[] = 10;    $data[] = 20.13;    $data[] = null;    $data[] = true;    $data[] = 'Ahmed';    echo json_encode($data);?>* المخرجات : [10,20.13,null,true,"Ahmed"]    3- مصفوفة عادية تحتوي على قيم وعلى مصفوفة ترابطية وعلى مصوفة عادية أخرى كالتالي : <?php    $data[] = 300;    $data[] = array(10,20,30);    $data[] = array("var1"=>12.3,12.8,"var2"=>"Ahmed",9000,"var3"=>array(true,false));    echo json_encode($data);?>* المخرجات : [300,[10,20,30],{"var1":12.3,"0":12.8,"var2":"Ahmed","1":9000,"var3":[true,false]}]  4- مصفوفة ترابطية تحتوي على قيم وعلى مصفوفة عادية كالتالي : <?php    $data = array("var1"=>12.3,12.8,"var2"=>array("Ahmed","Jamal","Mostafa"),9000);    echo json_encode($data);?>* المخرجات : {"var1":12.3,"0":12.8,"var2":["Ahmed","Jamal","Mostafa"],"1":9000} - ثانياً : تحويل صيغة JSON إلى كائنا ومصفوفات يمكن التعامل معها من خلال لغة php بإستخدام دالة json_encode ملاحظة : بما أننا لم نتطرق للتعامل مع الكائنات حتى الآن فدالة json_encode تأخذ وسيط ثاني في حالة إعطائه القيمة true يتم تحويل كائنات الـ JSON إلى مصفوفات ترابطية hash table وإن أردت إستخدام الكائن بدون تحويله لمصفوفة يمكنك الوصول للعناصر بإستخدام الرمز -> * أمثلة :   1- جلب كائن في تنسيق JSON وتحويله إلى مصفوفة ترابطية في لغة PHP وبه الشكلان إما إستخدام الكائن مباشراً أو تحويله لمصفوفة ترابطية واستخدامه كالتالي : <?php    $json = '{"var1":10,"var2":true,"var3":null,"var4":"Ahmed","var5":12.55}';    $data1 = json_decode($json);    $data2 = json_decode($json,true);    // الوصول للعناصر من خلال الكائن    echo $data1->var4;    echo "<br>";    // الوصول للعناصر عن طريق مصفوفة ترابطية    echo $data2['var4'];?>* المخرجات : AhmedAhmed    2- هنا تنسيق JSON لمصفوفة تحتوي على قيم ومصفوفات وكائنات تحتوي أيضاً بداخلها على قيم ومصفوفات وهكذا يمكن العملية أن تتابع والكود التالي تم استخدام وسم العناصر ul لترتيب المخرجات وتوضيح العملية كالتالي : <?php    $json = '[300,[10,20,30],{"var1":12.3,"0":12.8,"var2":"Ahmed","1":9000,"var3":[true,false]}]';    $data = json_decode($json,true);    $HTML = "<ul>";    foreach($data as $key=>$value)    {                if(is_array($value))        {            $HTML .= "<li>$key=>Array<ul>";            foreach($value as $key2=>$value2)            {                                if(is_array($value2))                {                    $HTML .= "<li>$key2=>Array<ul>";                    foreach($value2 as $key3=>$value3)                    {                        $HTML .= "<li>$key3=>$value3</li>";                    }                    $HTML .= "</ul></li>";                }                else                {                    $HTML .= "<li>$key2=>$value2</li>";                }            }            $HTML .= "</ul></li>";        }        else        {            $HTML .= "<li>$key=>$value</li>";        }    }    $HTML .= "</ul>";        echo $HTML;?>* المخرجات : 0=>3001=>Array    0=>10    1=>20    2=>302=>Array    var1=>12.3    0=>12.8    var2=>Ahmed    1=>9000    var3=>Array        0=>1        1=>والآن وكمثال تطبيقي لما سبق عملية التسجيل وتسجيل الدخول في موقع ما , في الدرس الرابع تم شرح التعامل مع النماذج وكيفية الحصول على البيانات منها , وفي الدرس السابق تعلمنا كيفية التعامل مع التعابير القيايسية والدوال المستخدمة معها في لغة php .   سنقوم بتقسيم العمل لمجموعة دوال وشرح كل دالة على حدة   - سنقوم بإنشاء نموذج لعملية التسجيل كما تعلمنا سابقاً ونضعه في ملف وليكن باسم signup.php وسيكون ملف معالجة البيانات هو نفسه ملف النموذج أي سنضع للخاصية الـ action للنموذج اسم الملف ذاته والكود التالي كود هذا الملف : <!doctype html><html dir="rtl">    <head>        <meta charset="utf-8">        <title>            تسجيل مستخدم جديد        </title>        <link href="style.css" rel="stylesheet" type="text/css" />    </head>    <body>        <div class="mainLayout">            <div class="header">                <a href="#"> الرئيسية </a>                <a href="login.php"> تسجيل الدخول </a>                <a href="signup.php"> تسجيل مستخدم جديد </a>            </div>            <div class="content">                <form action="signup.php?action=submit" method="POST">                    <table>                        <tr>                            <td><label> اسم المستخدم : </label></td>                            <td><input type="text" name="username" value="<?php echo isset($_POST['username'])?$_POST['username']:''; ?>"></td>                        </tr>                        <tr>                            <td><label>البريد الإلكتروني : </label>                            <td><input type="text" name="email" value="<?php echo isset($_POST['email'])?$_POST['email']:''; ?>"><br>                        </tr>                        <tr>                            <td><label>تأكيد البريد الإلكتروني :</label>                            <td><input type="text" name="email2" value="<?php echo isset($_POST['email2'])?$_POST['email2']:''; ?>"><br>                        </tr>                        <tr>                            <td><label> كلمة المرور : </label>                            <td><input type="password" name="password"><br>                        </tr>                        <tr>                            <td><label>تأكيد كلمة المرور :</label>                            <td><input type="password" name="password2"><br>                        </tr>                        <tr>                            <td colspan="2"><input type="submit" name="submit" value="  تسجيل  "></td>                        </tr>                    </table>                </form>            </div>            <div class="footer">                <span > حقوق كذا وكذا محفوظة لشركة كذا وكذا :) </span><br />            </div>        </div>    </body></html>- لاحظ أنني في خاصية القيمة لكل عنصر وضعت كود php وهو عبارة عن حالة if المختصر , ففي حالة الضغط على زر الإرسال سيتم إرسال البيانات للملف نفسه وبهذا يمكن لنا إستخدامها ووضعها كقيم للحقول حتي لا يتم إعادة كتابة هذه القيم في كل مرة يتم الضغط فيه على زر الإرسال , فالشرط هو في حالة كون العنصر معرف يتم طباعة قيمته وإلا تكون قيمة الحقل فارغة .   والآن سنقوم بكتابة دوال للتحقق من قيم النموذج , وسنقوم بتعريف متغير عام لنضع به صيغة الخطأ وليكن $error   * دالة التحقق من اسم المستخدم username_v وهي لا تأخذ وسائط كالتالي : function username_v(){    global $error;        if(isset($_POST['username']) and $_POST['username'] != null)    {        if(preg_match('/^([a-zA-Z0-9._-]){6,30}$/',$_POST['username']))        {            return true;        }        else        {            $error = "يجب أن يكون اسم المستخدم مكون من الحروف الإنجليزية الكبيرة أو الصغيرة أو الأرقام أو العلامات الخاصة . و _ و - أو خليط منهم فقط ويكون طول اسم المستخدم من 6 إلى 30 عنصر";            return false;        }    }    else    {        $error = "يرجى ملئ حقل اسم المستخدم";        return false;    }}- تم إخبار الدالة باسم المتغير العام لإستخدامه داخلها - الشرط في حالة أن اسم المستخدم username معرف داخل المصفوفة  $_POST ويحمل قيمة بخلاف القيمة الفارغة يتم يتم تنفيذ الشرط التالي وإلا يتم حفظ نص الخطأ في المتغير $error وتعود الدالة بالقيمة الخطأ false . - في حالة تحقق الشرط الأول يتم الإنتقال للشرط التالي وهو التحقق من اسم المستخدم باستخدام دالة preg_match والتعابير القياسية , فهنا جعلنا اسم المستخدم يجب أن يتكون من الحروف الإنجليزية الكبيرة أو الصغيرة أو الأرقام أو العلامات الخاصة . و _ و -  وأن لا يقل اسم المستخدم عن 6 عناصر ولا يزيد عن 30 ففي حالة تحقق هذا الشرط تعود الدالة بالقيمة الصحيحة true وإذا لم يتحقق الشرط يتم حفظ نص الخطأ في المتغير $error والعودة بالقيمة الخطأ false .   * دالة pass_v للتحقق من كلمة المرور  ومطابقتها بحقل تكرار كلمة المرور : function pass_v(){    global $error;        if((isset($_POST['password']) and $_POST['password'] != null)        and (isset($_POST['password2']) and $_POST['password2'] != null))    {        if(preg_match('/^([a-zA-Z0-9]){6,20}$/',$_POST['password']))        {            if($_POST['password'] != $_POST['password2'])            {                $error = "كلمة المرور غير متطابقة";                return false;            }            else            {                return true;            }        }        else        {            $error = "يرجى كتابة كلمة مرور تحتوي على حروف إنجليزية كبيرة أو ضغيرة أو أرقام أو خليط منهم فقط وأن يكون طول كلمة المرور من 6 إلى 20 عنصر";            return false;        }    }    else    {        $error = "يرجى ملئ حقول كلمة المرور";        return false;    }}- الشرط في حالة أن حقل كلمة المرور password وحقل تكرار كلمة المرور password2 معرفين وبهما قيم بخلاف القيم الفارغة يتم تنفيذ الشرط التالي وإلا يتم حفظ نص الخطأ والعودة بالقيمة الخطأ . - الشرط التالي هو شرط التحقق من كلمة السر فيجب أن تكون مكونة من الحروف الإنجليزية الكبيرة والصغيرة والأرقام فقط بحد أدنى 6 عناصر وحد أقصى 20 عنصر , في حالة تحقق الشرط يتم الإنتقال للشرط التالي وإلا يتم حفظ نص الخطأ والعودة بالقيمة الخطأ . - الشرط التالي يتم مطابقة كلمة المرور مع تأكيد كلمة المرور في حالة تحقق الشرط تعود الدالة بالقيمة الصحيحة true وإلا تقوم بحفظ نص الخطأ والعودة بالقيمة الخطأ .   * دالة email_v للتحقق من البريد الإلكتروني ومطابقته كالتالي : function email_v(){    global $error;        if((isset($_POST['email']) and $_POST['email'] != null)        and (isset($_POST['email2']) and $_POST['email2'] != null))    {        if(preg_match('/^([a-zA-Z])([a-zA-Z0-9._-]){2,30}@([a-zA-Z0-9.-])+\.([a-zA-Z0-9]){2,5}$/',$_POST['email']))        {            if($_POST['email'] != $_POST['email2'])            {                $error = "البريد الإلكتروني غير متطابق";                return false;            }            else            {                return true;            }        }        else        {            $error = "يرجى كتابة بريد إلكتروني صحيح";            return false;        }    }    else    {        $error = "يرجى ملئ حقول البريد الإلكتروني";        return false;    }}- بنفس مبدأ عمل الدوال السابقة لعملية التحقق والمطابقة بخلاف تغير التعبير القياسي لللتحقق من صحة البريد الإلكتروني .   * سنقوم بحفظ بيانات المستخدمين على شكل مصفوفة بتنسيق JSON وهذه المصفوفة تحتوي على مصفوفات أخرى بعدد المستخدمين كل مصفوفة تحتوي على اسم المستخدم وكلمة المرور والبريد الإلكتروني ويتم حفظ هذا الكود في ملف وليكن باسم login.json كما في الشكل التالي : [{"username":"ahmed","password":"123456","email":"[email protected]"},{"username":"mohammed","password":"333666999","email":"[email protected]"}]* دالة checkUser للتحقق من وجود هذا المستخدم في الملف login.json أم لا , كما سنقوم بتعريف متغير عام باسم $data لحفظ البيانات التي سيتم جلبها من الملف كالتالي :     function checkUser()    {        global $data;        $jsonData = file_get_contents('login.json');        if($jsonData == false ) return false;        $data = json_decode($jsonData,true);        foreach($data as $value)        {            if($value['username'] === $_POST['username']) return true;        }        return false;    }- قمنا بإخبار الدالة باسم المتغير العام - وقمنا بتعريف متغير محلي باسم $jsonData لحفظ البيانات يتم جلبها من الملف بإستخدام الدالة file_get_contents وتأخذ وسيط هو مسار الملف . - في حالة عدم جلب محتوى من الملف تعود الدالة file_get_contents بالقيمة false وعلى هذا ستعود هذه الدالة بالقيمة false وتعني أن الملف فارغ . - في حالة لم يكن الملف فارغ وبه بيانات نقوم بتحويل تنسيق JSON إلى مصفوفة ترابطية بإستخدام الدالة json_decode  وإعطائها الوسيط الأول محتوى الملف والوسيط الثاني القيمة الصحيحة true وحفظ الناتج في المتغير العام $data - الآن لدينا مصفوفة ترابطية نقوم بالمرور على محتوياتها بإستخدام حلقة الدوران foreach وفي حالة وجود مستخدم بهذا الاسم يتم العودة بالقيمة الصحيحة true وإلا تتم العودة بالقيمة الخطأ false   * دالة signUp لتسجيل مستخدم جديد وحفظ البيانات في ملف signup.json كالتالي : function signUp(){    global $data;    $data[] = array('username'=>$_POST['username'],                    'password'=>$_POST['password'],                    'email'=>$_POST['email']);    $FH = fopen("login.json", 'w') or die("خطأ في فتح الملف للقراءة");    fwrite($FH, json_encode($data));    fclose($FH);}- سنستخدم المتغير العام $data في بإضافة مستخدم جديد للمصفوفة $data وسيتم جلب اسم المستخدم وكلمة المرور والبريد الإلكتروني من النموذج وإدخال مستخدم جديد في المصفوفة $data - الآن سنقوم بفتح الملف بإستخدام fopen الوسيط الأول مسار الملف والثاني نوع العملية سنختار w أي عملية الكتابة على الملف , ودالة die للخروج من الكود في حالة حدوث خطأ في عملية فتح الملف وطباعة ما بداخلها على المتصفح , والدالة die  تستخدم بشكل عام للخروج من الكود كالدالة exit . - وتعود الدالة fopen في حالة نجاحها في فتح الملف بما يعرف بمقبض الملف ويتم حفظه في متغير أو إعطائه لدالة الكتابة مباشراً. - دالة الكتابة على الملف fwrite تقوم بالكتابة على الملف الوسيط الأول هو مقبض الملف الذي تم فتحه والوسيط الثاني البيانات التي سيتم كتابتها في الملف . - دالة fclose لإغلاق مقبض الملف .   وبعد أن إنتهينا من شرح الدوال المستخدمة سنقوم بكتابة الكود الأساسي لعملية تسجيل مستخدم جديد , وهذا الكود سيكون اسفل النموذج وهو كالتالي : <?php        // متغير لحفظ البيانات التي يتم جلبها من الملف    $data;        // متغير لحفظ نصوص الأخطاء    $error;        if(isset($_GET['action']) and $_GET['action'] == 'submit')    {        if( username_v() and email_v() and pass_v() )        {            if(checkUser())            {                echo ("<h4 style='color:#FF0;'>هذا المستخدم موجود بالفعل !</h4>");            }            else            {                signUp();                echo ("<h4 style='color:#0F0;'>تم التسجيل بنجاح !</h4>");            }            }        else        {            echo "<h4 style='color:#F53;'>$error</h4>";        }    }?>- تعريف المتغيرات العامة $error و $data والدوال سيتم وضعها اسفل الوثيقة . - لو لاحظنا أن الـ action للنموذج هو signup.php?action=submit  أي هناك متغير يضاف للرابط عند الضغط على زر التسجيل وهذا الأمر حتي لا يتم طباعة جملة الخطأ بوجود حقول فارغة عند الدخول لأول مرة للنموذج , ومن خلال هذا يمكن لي أن أقوم بتنفيذ أكثر من كود في نفس الصفحة كالتسجيل وتسجيل الدخول ولكن هنا سنكتفي بأن يكون كل ملف مختص بشئ . - الشرط يتم التحقق من تعريف المتغير action وإحتوائه على القيمة submit وإلا لا يتم تنفيذ الكود . - الشرط التالي هو إستدعاء دالة التحقق من اسم المستخدم وكلمة المرور والبريد الإلكتروني وأن جميعهم يجب أن يعودوا بالقيمة الصحيحية true وإلا يتم طباعة رسالة الخطأ للمستخدم المخزنة في المتغير العام $error . - في حالة تحقق الشرط يتم إستدعاء دالة التحقق من وجود مستخدم بهذا الاسم مخزن من قبل في الملف , فهي تعود بالقيمة الصحيحة True في حالة وجود مستخدم بنفس الاسم أو تعود بالقيمة false إذا كان الملف فارغ أو ليس هناك مستخدم بهذا الاسم وعلى هذا يتم تسجيل مستخدم جديد وطباعة رسالة تفيد بذلك أو إظهار رسالة بأن هذا الاسم مستخدم من قبل .   وبهذا إنتهينا من عملية تسجيل الدخول ولكن هذه الطريقة لا تصلح للمواقع التي يكون بها عدد مستخدمين كبير , فهنا علينا إستخدام قواعد البيانات أو تطوير بنية هذا النظام لمزيد من سرعة البحث والمعالجة .   والتالي رابط تنزيل نموذج التسجيل كامل json.zip   * ثانياً : عملية تسجيل الدخول : - في البداية سنحتاج نموذج لتسجيل الدخول كالتالي : <form action="login.php?action=submit" method="POST">    <table>        <tr>            <td><label> اسم المستخدم : </label></td>            <td><input type="text" name="username"></td>        </tr>        <tr>            <td><label> كلمة المرور : </label>            <td><input type="text" name="password"><br>        </tr>        <tr>            <td colspan="2"><input type="submit" name="submit" value="تسجيل الدخول"></td>        </tr>    </table></form>وسنحتاج لدالة لعملية تسجيل الدخول وهي   * دالة login لعملية تسجيل الدخول : function login($username,$password){    $jsonData = file_get_contents('login.json') or die("لم يتم جلب محتوى الملف");    $data = json_decode($jsonData,true);    foreach($data as $value)    {        if($value['username'] == $username and $value['password'] == $password) return true;    }    return false;}- تأخذ هذه الدالة وسيطين هما اسم المستخدم وكلمة المرور -يمكن لنا تفيذ هذه الدالة كالدوال السابقة بدون وسائط ولكن أردت التنويع فقط - - نقوم بجلب محتوى الملف كما تم شرحه في الأعلى - نقوم بالمرور على عناصر المصفوفة للتحقق من وجود المستخدم , ففي حالة مطابقة اسم المستخدم وكلمة المرور يقوم الدالة بالعودة بالقيمة الصحيحة true وإلا تعود بالقيمة الخطأ false   والآن مع الكود الأساسي للصفحة : <?php    if(isset($_GET['action']) and $_GET['action'] == 'submit')    {        if(isset($_POST['username']) and $_POST['username'] != null and isset($_POST['password']) and $_POST['password'] != null)        {            $username = preg_replace('/[^a-zA-Z0-9._-]/','',$_POST['username']);            $password = preg_replace('/[^a-zA-Z0-9]/','',$_POST['password']);            if(login($username,$password))            {                echo "<h3 style='color:#0F0;'> تم تسجيل الدخول مرحباً بك <h3>";            }            else            {                echo "<h3 style='color:#F33;'> لم تتم عملية تسجيل الدخول حاول مجدداً <h3>";            }        }        else        {            echo "<h3 style='color:#F33;'>يرجى ملئ جميع الحقول<h3>";        }    }?>- في البداية التحقق من أن المستخدم قد ضغط على زر تسجيل الدخول من خلال متغير الرابط action وقيمته هي submit - الشرط في حالة تعريف اسم المستخدم وكلمة المرور وإحتوائهم على قيم غير القيمة الفارغة يتم تنفيذ الشرط التالي وإلا طباعة رسالة بالخطأ . - يتم إزالة أي رموز غير الحرورف الإنجليزية والأرقام والرموز المسموح بها -وهذه العملية تعتبر عملية أمنية لحماية الموقع من الإختراق- فمن خلالها يمكن إختراق قاعدة البيانات وتعرف بـ sql injection -ونفس الشئ لكلمة المرور مع إختلاف التعبير القياسي فهنا يزيل كل شي بخلاف الحرورف الإنجليزية والأرقام - بعد هذه العملية يتم إستدعاء دالة تسجيل الدخول للتحقق من وجود المستخدم من عدمة وطباعة رسالة تفيد بذلك   رابط تنزيل الملف json2.zip   التمرين : - أكتب تطبيق لملئ إستمارة لأحد المصالح الحكومية بها بيانات التسجيل التي تحتاجها وقم بحفظها في ملف بتنسيق JSON , وعمل صفحة لعرض وتنسيق محتويات الملف .   وإلى هنا والسلام عليكم ورحمة الله وبركاته , نلقاكم على خير بإذن الله تعالى   الدرس السابق | الإنتقال للموضوع الأساسي
  7. فى البداية أشرف بمشاركتي في هذا المنتدى الرائع الذي لطالما استفدت منه.   - لدي قاعدة بيانات كدليل تليفونات سيقوم باستخدامها أكثر من شخص. - أريد إضافة أربعة أعمدة في الجدول الموجودة به أرقام التليفونات ((العمود الأول:تم الإضافة بواسطة)، (العمود الثاني: آخر تعديل بواسطة)، (العمود الثالث: وقت الإضافة)، (العمود الرابع: وقت آخر تعديل)) - Added by. - Modified by. - Addition Time. - Modification Time. - فى العمود الأول بناء على تسجيل دخول المستخدمين يتم إضافة اسم المستخدم تلقائياً الذي قام بعملية الإضافة. - في العمود الثاني أيضا بناءً على تسجيل دخول المستخدمين إذا قام بالتعديل على سجل موجود من قبل يتم تسجيل اسمه في العمود الثاني. - في العمود الثالث والرابع يتم إضافة وقت الإضافة ووقت التعديل (تاريخ اليوم ، الساعة والدقيقة والثانية التي تم فيها الإضافة أو التعديل).   مع ملاحظة أنه لابد ألا يكون هناك قدرة على تعديل أى من البيانات الموجودة في هذه الحقول. إلا بواسطة الأدمن.  ولكم جزيل الشكر.
  8. منتدى تيا

    اهلا ومرحبا بكم فى منتدى تيا تسعدنا زيارتكم منتدانا بدون تسجيل http://www.tiaforum.net