صفحة 1 من 3 123 الأخيرةالأخيرة
النتائج 1 إلى 15 من 42

الموضوع: Codeigniter.. عندما تكون البرمجة .. متعة بحق (3)

  1. #1
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    659

    Codeigniter.. عندما تكون البرمجة .. متعة بحق (3)



    بسم الله الرحمن الرحيم

    السلام عليكم ورحمة الله وبركاته

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

    • كيفية التعامل بسهولة مع روابط CI
    • التعامل مع قواعد البيانات
    • اللغات المتعددة


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


    بسم الله نبدأ :

    أولاً, كيفية التعامل مع روابط CI :

    حسناً لقد تعلمنا في الدرس السابق أن CI يعمل بنظام "الروابط النظيفة" وهي كالمثال :
    http://www.example.com/index.php/books/details/1
    حيث ان Books تعني اسم الكلاس
    و Details تعني اسم Function بداخل كلاس Books
    ورقم 1 يعتبر متغير يتم استخدامه حسب الطريقة التي تفضلها داخل الـ Function بأسم Details .. ( بإمكانك زيادة عدد المتغيرات حسب إحتياجك كما سنشاهد بعد قليل )
    يصبح الناتج : http://www.example.com/index.php/cla...ction/variable

    حسناً لنأخذ مثال ....:
    لدينا موقع بحيث اذا دخلت إلى الصفحة http://www.example.com/index.php/books سوف تجد قائمة بأسماء الكتب المتوفرة .. بعد إختيار كتاب من الكتب الموجودة في القائمة .. سنذهب إلى الرابط http://www.example.com/index.php/books/details/3
    حيث ان رقم 3 هو الـ ID الخاص بالكتاب ..

    دعونا نطبق هذا الأمر عملياً ونرى كيف يعمل

    الـ Controller :

    كود PHP:
    <?php

    class Books extends Controller {

        function 
    index()
        {
            
            
    $this->load->view('books');
            
        }
        
        function 
    details(){
        
        
            
        }
        
    }

    ?>
    ملف الـ View بأسم books :

    كود HTML:
    <h1>The Books we have :</h1>
    <ul>
    <li><a href="books/details/1">Book 1</a></li>
    <li><a href="books/details/2">Book 2</a></li>
    <li><a href="books/details/3">Book 3</a></li>
    </ul>
    حسناً ... الآن سوف تظهر لك قائمة الكتب وإذا ضغط عليها سوف تذهب بك إلى الرابط http://www.example.com/index.php/books/details/3

    الصفحة طبعاً ستظهر فارغة لأن الـ Function بأسم Details فارغ كما ترون .... الآن كيف نستطيع ان نأخذ رقم الـ ID الخاص بالكتاب من الرابط ؟

    حسناً هناك طريقتين ...

    الأولى وهي الأسهل ( في رأيي ) :

    كود PHP:
        function details($id){
        
            echo 
    $id;
            
        } 
    الأمر يبدو واضحاً .. سوف نضع Parameter في فنكشن details وبإسم id مثلاً ( او مثلاً book_id ليكون اكثر وضوحاً )
    وبداخل الـ Function تقوم بإستخدام المتغير id كما تحب ( مثلاً تدرج معلومات الكتاب من قاعدة البيانات بناء على الرقم بداخل متغير id - كما سنفعل لاحقاً بإذن الله )
    اذهب إلى الرابط وشاهد ما يحدث : http://www.example.com/index.php/books/details/5
    سيظهر لك الرقم 5 كما في الرابط

    دعوني أوضح الموضوع اكثر ... الرابط فعلياً سيكون كالآتي : http://www.example.com/index.php/books/details/ID
    بمعنى اذا قمت مثلاً بوضع اكثر من Parameter واحد للفنكشن Details .. كالمثال :
    كود PHP:
        function details($title$id){
        
            echo 
    $title.$id;
            
        } 
    سيكون الرابط فعلياً كالآتي :
    افتح:http://www.example.com/index.php/books/details/TITLE/ID
    بمعنى .. ما ستكتبه مكان TITLE سيذهب إلى المتغير title وما ستكتبه مكان ID سيذهب إلى المتغير id ..

    مثال حقيقي :
    اذهب إلى الرابط http://www.example.com/index.php/boo.../Codeigniter/4
    ستكون النتيجة حسب التعديل الاخير للفنكشن :
    كود HTML:
    Codeigniter4
    حسناً هذي هي الطريقة الأولى .. اما الطريقة الثانية وهي أبسط بكثير من السابقة .. ولكني افضل الاولى ..

    حسناً سوف نقول بأننا ذهبنا إلى هذا الرابط : http://www.example.com/index.php/books/details/6

    فنكشن details سيكون كالآتي :

    كود PHP:
        function details(){
        
            echo 
    $this->uri->segment(3);
            
        } 
    حسناً الأمر واضح هنا ... الفنكشن segment بداخل كلاس uri ( موجود في الـ Core الخاص بـ CI ) وظيفته ان يأتي لنا بجزء معين من الرابط .. حسب الرقم الجزء ( الـ Segment ) ..
    الآن بما ان الـ ID في الرابط اعلاه موجود في الجزء الثالث من الرابط . سنقوم بوضع رقم 3 في الفنكشن ..
    ملاحظة : العد يبدأ من بعد اسم الملف index.php بمعنى :
    index.php/books/details/1
    books يساوي الجزء 1
    details يساوي الجزء 2
    1 يساوي الجزء 3 .. إلخ

    مثال آخر

    الفنكشن :
    كود PHP:
        function details(){
        
            echo 
    $this->uri->segment(3).$this->uri->segment(4);
            
        } 
    الرابط : http://www.example.com/index.php/boo.../Codeigniter/5
    books يساوي الجزء 1
    details يساوي الجزء 2
    Codeigniter يساوي الجزء 3
    5 يساوي الجزء 4

    النتيجة من هذا المثال :
    كود HTML:
    Codeigniter5
    اعتقد بأن الامر واضح الآن .. سبب انني افضل الطريقة الاولى .. هي انه لا داعي لإستدعاء كلاس uri وفنكشن segment عدة مرات فقط لتحضر جزء معين من الرابط ( بالرغم من صغر الكلاس وانه يتم تحميله تلقائياً بسبب الحاجة إليه في ملفات الـ Core الخاصة بـ CI )


    حسناً .. اعلم ان الكثير منكم الآن سيقولون .. ماذا عن الحماية !!!!! لا نستطيع ان نأخذ المعلومات مباشرة من الرابط إلى قاعدة البيانات .. قد تحتوي على اكواد ضارة من قبل الزائر ( SQL Injection ) .. سأقول ... جرب بنفسك ..

    دعونا نذهب إلى الرابط : http://www.example.com/index.php/books/details/'\"\>
    النتيجة ؟
    كود HTML:
    The URI you submitted has disallowed characters.
    تعني : الرابط الذي ادخلته يحتوي على حروف غير مسموح بها

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

    حسناً سيقول واحداً منكم .. ماذا اذا اردت ان اسمح انا برموز معينة وعلى ضمانتي ؟ سهلة ياسيدي الكريم

    اذهب إلى application/config/config.php
    وغير هذا السطر إلى ما تحبه .. او اجعله فارغ للسماح بكل الحروف ( لا نصح بهذا ابدا ابدا ولا صانعو CI ايضاً ينصحون بذلك )
    كود PHP:
    $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'

    يتبع ان شاء الله ........





    __________________
    مدونتي | تويتر



  2. #2
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    659

    تكملة ....



    ثانياً, التعامل مع قواعد البيانات :

    اعتقد بان الكثير منكم يترقب هذه الفقرة بشغف لمعرفة الفرق بين الطريقة العادية وطريقة CI في التعامل مع قواعد البيانات .. حسنا ها نحن هنا .. لنشاهد الفرق سوياً ..

    * ملاحظة : من المفترض والضروري وضع جميع الاوامر الخاصة بقاعدة البيانات بداخل ملف model منفصل لتنسيق الكود .. ولكن سوف اطرق إلى ذلك بإذن الله في الجزء القادم .. ولكن حالياً فقط سوف ننفذ الاوامر في الـ Controller لإختصار الوقت والشرح

    اولاً .. نذهب إلى application/config/database.php
    ونقوم بتعديل معلومات قاعدة البيانات حسب ما يناسبنا ( انتبه من الترميز .. اذا كنت تستخدم utf8 او latin1 )

    ثانياً .. عند استخدام اوامر قاعدة البيانات يجب ان نستدعي الـ Library الخاصة بقاعدة البيانات اولاً . مثال :
    كود PHP:
    <?php

    class Books extends Controller {

        function 
    index()
        {
            
            
    $this->load->database();
            
        }
        
    }

    ?>
    من خلال هذا المثال .. سوف نقوم بإستدعاء الـ Library الخاصة بالتعامل مع قاعدة البيانات .. ولكن مهلاً .. لو كنا نمتلك صفحة اخرى ( أي function آخر ) .. فلن نستطيع استخدام اوامر قاعدة البيانات بداخله .. بل يجب علينا استدعاء الـ Library مرة اخرى .... حسناً هل سنقوم بهذه العملية في كل صفحة في الـ Class ؟؟؟ الأمر متعب اعلم .. ولكن مهلاً هناك دائماً حل

    سوف نستخدم الـ Construct .. حسناً ماهو الـ Construct اولاً ؟؟ مزيد من المعلومات هنا
    ولكن فقط للشرح السريع .. الـ Construct هو عبارة عن function يقوم بتنفيذ اي امر تطلبه منه .. في بداية الـ Class نفسه ( أي ان الامر سيظهر مع كل function آخر في الصفحة ).. بمعنى لو وضعنا عبارة معينة داخل الـ Construct .. فسوف يطبعها عند استعراضنا لأي صفحة بداخل الكلاس Books ...

    لنأخذ مثال عملي .. في حالة كنت تستخدم PHP4 . يجب ان يكون اسم function الـ Construct بنفس اسم الكلاس ويجب ان يحتوي على سطر الوراثة من كلاس Controller وهذا السطر مهم جدا جدا جدا وستواجه اخطاء اذا لم تستخدمه
    وبعدها سوف نضع سطر إستدعاء Library قاعدة البيانات في فنكشن الـ Construct

    مثال :
    كود PHP:
    <?php

    class Books extends Controller {

        function 
    Books()
        {
            
    // Construct        
            
    parent::Controller();        
            
    $this->load->database();
        }
        
        function 
    index()
        {
            
            
            
        }
        
    }

    ?>
    اما اذا كنت تستخدم PHP5 فسوف نقوم بتغيير اسم فنكشن الـ Construct فقط إلى :
    كود PHP:
           function __construct()
           {
                
    parent::Controller();
           } 
    حسناً .. الآن بعد ان وضعنا سطر استدعاء الـ Library في الـ Construct .. سوف نستطيع ان نستخدمها في كل الـ Functions ( الصفحات ) في الـ Class الخاص بنا ...

    ولكن مازال هناك حل آخر ... سوف نقوم بوضع الـ Library في ملف الـ Autoload ليقوم CI بإستدعاءها تلقائياً بدون ان تكتب حتى سطر الإستدعاء في الفنكشن نفسه او حتى في الـ Construct ...

    افتح ملف application/config/autoload.php

    وعدل السطر
    كود PHP:
    $autoload['libraries'] = array(); 
    إلى
    كود PHP:
    $autoload['libraries'] = array('database'); 
    ملاحظة : تستطيع ان تستدعي عدد المكتبات كما تريد بإضافتهم إلى هذا الـ Array

    الآن انا افضل بصراحة استدعاء قاعدة البيانات في الـ Construct .. فقط لأنني اعلم بانه سيكون هناك صفحات لا تحتاج إلى وظائف قاعدة البيانات وسوف يقوم CI بإستدعاءها غصباً عنك

    حسناً .. دعونا ننشأ جدول ليحتوي على الكتب, ونضع بداخله 3 كتب للتجربة ... سريعاً .. :
    كود PHP:
    CREATE TABLE `books` (

    `
    idINT(11NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `
    titleVARCHAR(100NOT NULL
    ); 

    INSERT INTO books VALUES (1'Learn PHP');
    INSERT INTO books VALUES (2'Learn Codeigniter');
    INSERT INTO books VALUES (3'Learn OOP'); 
    حسناً .. ما نريد فعله الآن .. هو تنفيذ المثال في الأعلى ( الخاص بالروابط ) ولكن سوف نستدعي البيانات من قاعدة البيانات مباشرة ...

    مستعدون ؟ الأمر اصغر مما تتخيلون

    الـ Controller :
    كود PHP:
    <?php

    class Books extends Controller {

        function 
    Books()
        {
            
    // Construct        
            
    parent::Controller();        
            
    $this->load->database();
        }
        
        function 
    index()
        {
            
            
    $data['query'] = $this->db->get('books');
            
    $this->load->view('books',$data);
            
        }
        
    }

    ?>
    كما ترون قمنا بإستدعاء الـ Library الخاصة بالتعامل مع قواعد البيانات في فنكشن الـ Construct ليتم إستدعائها حتى ولو قمنا بعمل صفحات ( functions ) اخرى بداخل نفس الكلاس ولن نضطر إلى تكرار الأمر

    وفي فنكشن index كما تشاهدون أول سطر سهل جداً وهو حيث اننا قمنا بصنع مصفوفة بأسم data لنمرر من خلالها البيانات إلى ملف الـ View .. وقمنا بإستدعاء ما بداخل جدول books عن طريق الأمر هذا :
    كود PHP:
    $this->db->get('books'); 
    أصبح الآن لدينا النتائج من جدول Books في مصفوفة . وسنقوم بإستخراج محتواها بداخل ملف View .. لنشاهد محتوى ملف الـ View كيف سيكون ... :

    كود PHP:
    <ul>
    <?php foreach ($query->result() as $row){ ?>
    <li><a href="books/details/<?=$row->id?>"><?=$row->title?></a></li>
    <?php ?>
    </ul>
    الأمر بسيط اليس كذلك

    حسناً .. لنفترض اننا نريد ان نستخرج البيانات حسب رقم الـ ID ولكن تصاعدياً كالمثال :
    3
    2
    1 وليس
    1
    2
    3

    الأمر أسهل مما تتخيلون

    فقط أضف السطر هذا إلى أعلى السطر الأول ليصبحوا معاً كالآتي :
    كود PHP:
            $data['query'] = $this->db->order_by('id','DESC');
            
    $data['query'] = $this->db->get('books'); 
    حسناً .. سنتعمق اكثر في المثال .. سوف ننشئ صفحة التفاصيل التي ستظهر بعد الضغط على كتاب منهم .. وما سوف نفعله في صفحة التفاصيل .. هو اننا سوف نأتي بعنوان الكتاب وبالإعتماد على رقم الـ ID من الرابط ..

    حسناً سيصبح شكل الـ Controller كالآتي :
    كود PHP:
    <?php

    class Books extends Controller {

        function 
    Books()
        {
            
    // Construct        
            
    parent::Controller();        
            
    $this->load->database();
        }
        
        function 
    index()
        {
            
    $data['query'] = $this->db->order_by('id','DESC');
            
    $data['query'] = $this->db->get('books');
            
    $this->load->view('books',$data);
            
        }
        
        
        function 
    details($id){
                
        }
    }

    ?>
    الآن سوف نستخدم الطريقة الاولى للتعامل مع الروابط والتي قمت بشرحها في الأعلى ... لدينا الآن رقم الـ ID في متغير .. ماذا نفعل لنستخدمه لإحضار الكتاب الذي يحمل نفس رقم الـ ID ؟
    سهلة

    كود PHP:
        function details($id){
            
            
    $data['query'] = $this->db->where('id',$id);
            
    $data['query'] = $this->db->get('books');
            
    $this->load->view('details',$data);
        } 
    ملف الـ View :
    * يجب إنشاءه طبعا داخل مجلد application/views بأسم details.php
    كود PHP:
    <h1><?=$query->row()->title?></h1>
    الآن قمنا بإستخدام دالة جديدة بداخل كلاس قاعدة البيانات وهي where . حيث ان Parameter الأول هو عنوان الخانة في قاعدة البيانات والمدخل الثاني هو قيمة البحث بمعنى ان أمر قاعدة البيانات الفعلي سيكون :
    كود PHP:
    SELECT FROM books WHERE id '$ID' 
    وحيث اننا نمتلك نتيجة واحدة فقط .. فلن احتاج بكل تأكيد ان امرر المخرجات على حلقة تكرار ( foreach او while ) لذلك استخدام الدالة row() وهي تعني انه سيعطيك نتيجة واحدة فقط حسب الشروط التي وضعتها ( سواء order_by او where او غيرها )

    بإذن الله غداً سوف اضع مثال آخر هنا لكيفية إدخال معلومات لقاعدة البيانات ( insert ) وايضاً كيفية الحذف .. ولمن لا يستطيع الصبر فهذا هو الدليل الكامل لكيفية التعامل مع قواعد البيانات في CI

    انتهى


    يتبع ان شاء الله ...





    __________________
    مدونتي | تويتر


  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    659

    تكملة ....



    ثالثاً, اللغات المتعددة :

    ملفات اللغة توضع بداخل مجلد application/language/english او على حسب مجلد اللغة التذي انشأته بالداخل سواء كان arabic او english او french .. وتسمى الملفات بهذه الطريقة :
    index_lang.php
    login_lang.php
    بمعنى انه يجب ان تكون نهاية الملف lang_

    حسناً لننشئ ملف بداخل مجلد اللغة بأسم index_lang.php مثلاً ...( في هذه الحالة مجلد اللغة الافتراضي الموجود مع CI هو english )
    ونضع في محتواه :
    كود PHP:
    <?php

    $lang
    ['welcome_message'] = 'Welcome to My Website!!';
    $lang['off'] = 'Sorry, the website is closed right now'

    ?>
    كذلك ننشئ مجلد للغة العربية بأسم arabic ليصبح الوصول إليه عن طريق application/language/arabic وننشئ بداخله ملف بأسم index_lang.php ونضع في محتواه :
    <?php

    $lang['welcome_message'] = 'أهلاً بكم في موقعي!!';
    $lang['off'] = 'عذراً, الموقع مغلق حالياً';

    ?>

    نذهب الآن إلى الـ Controller الخاص بنا ( مازلنا على ملف الـ books ولكن بدون اوامر قواعد البيانات ) :
    كود PHP:
    <?php

    class Books extends Controller {

        function 
    index()
        {
        
    $this->lang->load('index','english');
        echo 
    $this->lang->line('welcome_message');
        }
        
    }

    ?>
    الآن السطر الأول وظيفته ان يحضر ملف اللغة الموجود بأسم index والتابع للغة english ( لا يجب ان تكتب تنسيق الملف او حتى التكملة "lang_" )
    والسطر الثاني يأتي لنا بسطر معين من ملف اللغة ( على حسب الـ key ) .. فإذا قمنا بتغييره إلى :
    كود PHP:
        echo $this->lang->line('off'); 
    فسوف يحضر لنا رسالة إغلاق الموقع .. الآن دعونا نغير في السطر الأول ونحضر العبارات من اللغة العربية....
    بسيطة :
    كود PHP:
        $this->lang->load('index','english'); 
    طبعاً سيأتي بالعبارات من ملف اللغة العربية ولكن ستواجه اكيد مشكلة في الترميز بسبب اننا لا نمتلك ترميز للصفحة ونتعامل مباشرة بـ echo ( لقد استخدمت echo فقط للسرعة في المثال )


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

    في النهاية كل ما ارجوه هو الدعاء لي ولوالدي ولأخواننا في غزة

    تقبلوا ارق التحية
    اخوكم
    مصعب الزيني





    __________________
    مدونتي | تويتر


  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    بسم الله ما شاء الله .. شرح مميز للغاية
    وحتي اللحظة .. لم أواجه أي مشاكل في التطبيق
    المشكلة فقط في عدم التعود علي نظافة الكود .. أقصد نظام القوالب ونظام اللغات والكلاسات
    سأحرص .. علي بدأ أول مشروع قادم بالـ codeigniter إن شاء الله

    لكن لي تساؤل صغير ..
    يوجد مجلد اسمه libraries داخل الـ core الخاص بالـ codeigniter
    لماذا لم أجد به الملف الخاص بمكتبة الـ database والتي قمنا باستخدامها في الشرح السابق
    كنت أود النظر إلى طريقة عملها ..

    عموما .. شرحك موفق للغاية .. ولا تحرمنا من المزيد في أسرع وقت





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    659


    بسم الله ما شاء الله .. شرح مميز للغاية
    وحتي اللحظة .. لم أواجه أي مشاكل في التطبيق
    المشكلة فقط في عدم التعود علي نظافة الكود .. أقصد نظام القوالب ونظام اللغات والكلاسات
    سأحرص .. علي بدأ أول مشروع قادم بالـ codeigniter إن شاء الله

    لكن لي تساؤل صغير ..
    يوجد مجلد اسمه libraries داخل الـ core الخاص بالـ codeigniter
    لماذا لم أجد به الملف الخاص بمكتبة الـ database والتي قمنا باستخدامها في الشرح السابق
    كنت أود النظر إلى طريقة عملها ..

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


    بالنسبة لسؤالك عن المكتبة الخاصة بالـ database فهي ليست مكتبة واحدة فقط ولكنها ملفات متعددة تجدها بداخل المجلد system/database ..

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





    __________________
    مدونتي | تويتر


  6. #6
    عضو جديد
    تاريخ التسجيل
    Jan 2009
    المشاركات
    13


    دلوقتى بالنسبة للروابط كانت شغالة تمام بعد شوية من غير ماغير أى حاجة لقيتها مش شغالة خالص حاولت اعدل أغير اعمل اى حاجة مش لاقى حل بتظهر صفحة
    The page cannot be found

    مع انه كان شغال ومغيرتش اى حاجة






  7. #7
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    659


    دلوقتى بالنسبة للروابط كانت شغالة تمام بعد شوية من غير ماغير أى حاجة لقيتها مش شغالة خالص حاولت اعدل أغير اعمل اى حاجة مش لاقى حل بتظهر صفحة
    The page cannot be found

    مع انه كان شغال ومغيرتش اى حاجة
    اخي الفاضل .

    تأكد من موجود index.php في الرابط .. :
    http://www.example.com/index.php/books





    __________________
    مدونتي | تويتر


  8. #8
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    82


    لست من هواة الرد علي اي موضوع في سوالف لإني متصفح متخفني

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

    حقيقة لقد سبقت شرحك بقرائتي لكل الـuser guide ولكن يكفي انك عرفتني علي بيئة عمل مثل هالبيئة . . .

    ما اقوله انها اكثر من رائعة بحق و إني اصبحت ابرمج ما ابرمجة في شهر في اقل من 5 ايام . . . .

    شكرا لك اخي الكريم علي كل مابذلته في سبيل نشر هذا العالم وجزاك الله خيرا عنا وعن هذا العلم ونفعنا الله وإياكم به بإذن الله . . . .

    عندما تكون البرمجة - متعة بحق .





    __________________
    Codeigniter .. عندما تكون البرمجة .. متعة بحق .. (1) (2) (3)

  9. #9
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    659


    EGY2NET
    اخي الفاضل

    اشكرك جزيل الشكر على ردك الطيب والذي رفع معناوياتي فعلاً فأنا سعيد بأنك تعرفت على قيمة CI وسهولته ... وصدقني هناك المزيد .. فقط تصفح الـ Wiki والمنتدى وشاهد بعض الاضافات مثلاً نظام DX Auth فهو يعطيك نظام أعضاء كامل .. ( تسجيل , تفعيل , لوحة تحكم , سهولة في ان تتحكم فيهم بطريقتك عن طريق Functions سهلة جداً ) وغيره من الاضافات الرائعة التي يقوم ببرمجتها محبو الـ CI

    كما اشكرك جزيل الشكر اخي على وضعك لروابط الدروس في توقيعك ...


    تقبل ارق التحية





    __________________
    مدونتي | تويتر


  10. #10
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    أسمع عن شئ اسمه ACL في بيئة الكيك وهو خاص بصلاحيات المستخدمين في الموقع
    هذا كل ما اعرفه عن هذا الشئ
    فهل يوجد هذا الاسلوب في الـ CI





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  11. #11
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    659

    Smile



    أسمع عن شئ اسمه ACL في بيئة الكيك وهو خاص بصلاحيات المستخدمين في الموقع
    هذا كل ما اعرفه عن هذا الشئ
    فهل يوجد هذا الاسلوب في الـ CI
    اخي العزيز سحاب

    نظام Access Control List لا يأتي بطريقة مباشرة مع Codeigniter بمعنى انه ليس من ضمن الـ Core الخاص بـ Codeigniter .. ولكن بكل تأكيد هناك انظمة على شكل مكتبات يمكنك استخدامها ( قم بالبحث في المنتدى والـ Wiki )

    كما ايضاً يمكنك دمج نظام ZEND ACL إلى Codeigniter بسهولة شاهد الرد رقم 5 من هنا ( او ايضاً حاول البحث عن نفس النقطة في جوجل )

    كما انوه ايضاً انه هناك نظام للمستخدمين في الموقع بأسم FreakAuth وهو يعتبر من اقوى الأنظمة كذلك .. ولكنني افضل DX auth لسهولته ومرانته


    أرق التحية ..





    __________________
    مدونتي | تويتر


  12. #12
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    اخي العزيز سحاب

    نظام Access Control List لا يأتي بطريقة مباشرة مع Codeigniter بمعنى انه ليس من ضمن الـ Core الخاص بـ Codeigniter .. ولكن بكل تأكيد هناك انظمة على شكل مكتبات يمكنك استخدامها ( قم بالبحث في المنتدى والـ Wiki )

    كما ايضاً يمكنك دمج نظام ZEND ACL إلى Codeigniter بسهولة شاهد الرد رقم 5 من هنا ( او ايضاً حاول البحث عن نفس النقطة في جوجل )

    كما انوه ايضاً انه هناك نظام للمستخدمين في الموقع بأسم FreakAuth وهو يعتبر من اقوى الأنظمة كذلك .. ولكنني افضل DX auth لسهولته ومرانته


    أرق التحية ..
    جيد جدا .. وشكرا علي ردك





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  13. #13
    عضو جديد
    تاريخ التسجيل
    Jan 2009
    المشاركات
    13


    ياريت ياأخى العزيز تتكلم عن session بقالى حوالى 3 أيام محتار فيه والموضوع ده عطلنى صراحة لو عاوزنى اسأل سؤال محدد ماشى أو اعمل موضوع تانى اسأل فيه علشان مخرججش على الترتيب اللى انت عمله برضه ماشى زى ماتحب
    بس الموضوع ده عطلنى قوى وانا عاوز اتنقل كلية ل ci وألف ألف شكر






  14. #14
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    659


    ياريت ياأخى العزيز تتكلم عن session بقالى حوالى 3 أيام محتار فيه والموضوع ده عطلنى صراحة لو عاوزنى اسأل سؤال محدد ماشى أو اعمل موضوع تانى اسأل فيه علشان مخرججش على الترتيب اللى انت عمله برضه ماشى زى ماتحب
    بس الموضوع ده عطلنى قوى وانا عاوز اتنقل كلية ل ci وألف ألف شكر
    اخي العزيز بصراحة انا اود ان اتحدث عن الـ Sessions في موضوع منفصل نظراً لأن الاسلوب الذي يتعامل به CI مع الـ Sessions يعتبر قريب بعض الشيء من الـ Cookies . ولكنه اكثر اماناً .. وهناك ايضاً طريقة اخرى لتسجيل الـ Sessions بداخل قاعدة البيانات .. لذلك اريد ان اشرح كل هذا في الموضوع القادم ان شاء الله وان اوضح لماذا نريد ان نستخدم هذه الطريقة ولا نكتفي فقط بالطريقة العادية ( $_session ) ... ولكن حتى ذلك الحين فأنصحك اخي بقراءة الصفحة الخاصة بالـ Sessions في دليل الاستخدام من هنا

    وايضاً هذا مثال سريع اتمنى ان يكون سهل عليك ( وهو كذلك ان شاء الله ) :
    كود PHP:
    <?php

    class Test extends Controller {
        
        function 
    Test() {
            
    $this->load->library('session');    
        }
        
        function 
    index()
        {

            
    $newdata = array(
                       
    'username'  => 'jojo',
                       
    'email'     => 'johndoe@some-site.com'
                   
    );

            
    $this->session->set_userdata($newdata);
        }
        
        function 
    show(){
            
            echo 
    $this->session->userdata('email');
                
        }
        
    }

    ?>
    ادخل إلى index.php/test ليتم تخزين الجلسة .. ثم ادخل إلى index.php/test/show لإستدعاء البريد من الجلسة التي تم تسجيلها


    واعذرني مرة اخرى نظراً لأنني لا اريد ان امر مروراً سريعاً على هذه النقطة بالتحديد


    تقبل تحياتي ..





    __________________
    مدونتي | تويتر


  15. #15
    عضو جديد
    تاريخ التسجيل
    Jan 2009
    المشاركات
    13


    جزاك الله خيرا يا أخى العزيز

    دلوقتى لما بعمل load لمكتبة session بيظهر الخطأ ده
    A PHP Error was encountered

    Severity: Warning
    Message: Cannot modify header information - headers already sent by (output started at C:\wamp\www\myforum\index.php:2)
    Filename: libraries/Session.php
    Line Number: 664
    لما بوقف setcookie الخطأ بيختفى بس ال session مابيشتغلش





    التعديل الأخير تم بواسطة MRPHP ; 22-01-2009 الساعة 04:44 PM

صفحة 1 من 3 123 الأخيرةالأخيرة




ضوابط المشاركة

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