من الموقع: STC تطلق خدمةالتلفزيون التفاعلي المطور (انفجن) وتتيحها خلال شهر رمضان المبارك

 

العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو سوبر نشيط
#1  
Post 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~%.:_\-'

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






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 18-01-2009, 01:55 AM
الرد مع إقتباس
عضو سوبر نشيط
#2  
تكملة ....

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

اعتقد بان الكثير منكم يترقب هذه الفقرة بشغف لمعرفة الفرق بين الطريقة العادية وطريقة 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

انتهى


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






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 18-01-2009, 01:55 AM
الرد مع إقتباس
عضو سوبر نشيط
#3  
تكملة ....

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

ملفات اللغة توضع بداخل مجلد 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 فقط للسرعة في المثال )


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

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

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






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 18-01-2009, 01:56 AM
الرد مع إقتباس
عضو فعال جدا
#4  

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

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

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






سحاب اون لاين is offline   قديم 18-01-2009, 06:18 AM
الرد مع إقتباس
عضو سوبر نشيط
#5  

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

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

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


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

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






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 18-01-2009, 06:53 AM
الرد مع إقتباس
عضو جديد
#6  

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

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






MRPHP is offline   قديم 19-01-2009, 02:29 AM
الرد مع إقتباس
عضو سوبر نشيط
#7  

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

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

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






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 19-01-2009, 03:10 AM
الرد مع إقتباس
عضو نشيط
#8  

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

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

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

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

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

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






__________________
Codeigniter .. عندما تكون البرمجة .. متعة بحق .. (1) (2) (3)
EGY2NET is offline   قديم 19-01-2009, 09:12 AM
الرد مع إقتباس
عضو سوبر نشيط
#9  

EGY2NET
اخي الفاضل

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

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


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






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 19-01-2009, 09:16 AM
الرد مع إقتباس
عضو فعال جدا
#10  

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






سحاب اون لاين is offline   قديم 19-01-2009, 04:56 PM
الرد مع إقتباس
عضو سوبر نشيط
#11  
Smile

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

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

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

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


أرق التحية ..






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 20-01-2009, 12:04 AM
الرد مع إقتباس
عضو فعال جدا
#12  

إقتباس:
المشاركة الأصلية بواسطة almosmm مشاهدة مشاركة
اخي العزيز سحاب

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

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

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


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






سحاب اون لاين is offline   قديم 20-01-2009, 01:25 AM
الرد مع إقتباس
عضو جديد
#13  

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






MRPHP is offline   قديم 22-01-2009, 01:26 AM
الرد مع إقتباس
عضو سوبر نشيط
#14  

إقتباس:
المشاركة الأصلية بواسطة MRPHP مشاهدة مشاركة
ياريت ياأخى العزيز تتكلم عن 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 لإستدعاء البريد من الجلسة التي تم تسجيلها


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


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






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 22-01-2009, 06:28 AM
الرد مع إقتباس
عضو جديد
#15  

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

دلوقتى لما بعمل 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 الساعة 05:44 PM.
MRPHP is offline   قديم 22-01-2009, 05:41 PM
الرد مع إقتباس
عضو جديد
#16  

الحمدلله المشكلة دى اتحلت خلاص بس ظهرت مشكلة اللغة العربيه مرة تانيه

اللى عاوز اعرفه دلوقتى فى مايسكوال فى utf_bin,utf_geniral_ci,utif_unicode_ci ايه اللى بنستخدمها
وايه الكود اللى مفروض يكون فى ملف database.php هنا
إقتباس:
$db['default']['char_set'] = "utf-8";
$db['default']['dbcollat'] = "utf8_general_ci";
حطيت الكود ده فى ملف الهيدر
إقتباس:
<META http-equiv=Content-Type content="text/html;charset=utf-8">
البانات اللى جاية من قاعدة البيانات ظهرت 100%
لكن البيانات اللى مكتوبة فى ملف html نفسه زى اسم المستخدم أو دخول وخروج ظهرت علامات استفهام






MRPHP is offline   قديم 23-01-2009, 05:32 AM
الرد مع إقتباس
عضو سوبر نشيط
#17  

إقتباس:
المشاركة الأصلية بواسطة MRPHP مشاهدة مشاركة
الحمدلله المشكلة دى اتحلت خلاص بس ظهرت مشكلة اللغة العربيه مرة تانيه

اللى عاوز اعرفه دلوقتى فى مايسكوال فى utf_bin,utf_geniral_ci,utif_unicode_ci ايه اللى بنستخدمها
وايه الكود اللى مفروض يكون فى ملف database.php هنا

حطيت الكود ده فى ملف الهيدر


البانات اللى جاية من قاعدة البيانات ظهرت 100%
لكن البيانات اللى مكتوبة فى ملف html نفسه زى اسم المستخدم أو دخول وخروج ظهرت علامات استفهام
اخي العزيز بعد كتابتك للكلام في ملف الـ HTML .. يجب ان تقوم بحفظ الملف بترميز UTF-8

تقبل تحياتي






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 23-01-2009, 09:03 AM
الرد مع إقتباس
عضو نشيط
#18  

بارك الله فيك اخي
فعلاً منصة عملة رائعة جدا والفضل يعود لشرحك المبسط

بإنتظار بقية الدروس






malj is offline   قديم 24-01-2009, 05:44 PM
الرد مع إقتباس
عضو فعال جدا
#19  



أين بقية الدروس ...................... ؟






سحاب اون لاين is offline   قديم 24-01-2009, 10:33 PM
الرد مع إقتباس
عضو نشيط
#20  

تتمة جيدة وفي إنتظار الدرس الرابع بإذن الله






__________________
للإستفسار : http://aimadj.arabform.com/.
---
marocmdina is offline   قديم 25-01-2009, 01:27 PM
الرد مع إقتباس
عضو سوبر نشيط
#21  

الصبر يا اخواني ... ان شاء الله الجزء القادم سأقوم بوضعه هذا الاسبوع

واشكركم جزيل الشكر على التشجيع والآراء الجميلة ..






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 25-01-2009, 08:13 PM
الرد مع إقتباس
عضو نشيط
#22  

عزيزي المصمم..

اسمح لي.... شرح ولا اروع
ومجهود كبير تستحق الشكر عليه
وجعله الله بميزان حسناتك


-------------------


اعزائي الاعضاء.. يمكنكم تحميل برنامج اخبار بسيط تمت كتابته على ال codeIgniter
( رابط ) من هنا وهذا كتاب لشرح البرنامج ( رابط ) من هنا والمصدر ( رابط ) من هنا
يمكنكم قرائته لكي تتضح الصورة اكثر.. والتسليه به الى ان يستكمل اخي المصمم باقي الدروس


بالتوفيق للجميع






__________________
( رابط ) مملكة الموت 
=======================
100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة
DSQ8.com is offline   قديم 26-01-2009, 04:26 PM
الرد مع إقتباس
عضو سوبر نشيط
#23  

اخي DSQ8.com اشكرك على ردك الرائع وجزيت خيراً ...

تقبل خالص التحية






__________________
( رابط ) مدونتي  | تويتر

almosmm is offline   قديم 26-01-2009, 08:05 PM
الرد مع إقتباس
عضو نشيط
#24  

ما شاء الله تبارك الله ... دروس أكثر من قيمة والله

مشكور يا غالي على هذه الدروس بجد جئت على الجرح ...

لا بديل عن تجربة شخصية للدخول إلى أي عالم جديد ....


عن نفسي أجد أن الــ Framework في البرمجة من أفضل الطرق البرمجية وسهولة ( أخوك مبرمج VB.Nert )

وهذا الفريم ورك مذهل لدرجة خرافية ...

كنت دائماً أقول لمن يسألني أن إعداد مجلة مثل جملة أو مدونة مثل ورد بريس يتطلب على الأقل ثلاث سنوات ..

الأن أجد الأمر مضحكاً .... فهناك درس في موقع البرنامج عمل مدونة بسيطة في 20 دقيقة ...


حالياً إبدئت في تطبيق الدروس الثلاثة ومنتظر ومتعطش ( حلوة متعطش هذه )


مشكور جداً وبارك الله فيك ...






Libya82.com is offline   قديم 26-01-2009, 11:21 PM
الرد مع إقتباس
عضو نشيط
#25  

إن تفضلت أخي almosmm هل يمكنني طرح أسئلة متقدمة قليل عن سير الدروس إن أمكن طبعا . أو ضع موضوع جديد لإستقبال الإستفسارات في هذا الفرامورك الذي أحببته وبدأت أتعمق فيه قليلا فلدي مشروعين في إطار التنفيذ كنت أشتغل على برمجة php بأمثلة أنجزتها في أول أيامي مع البرمجة , لكن عندما رأيت موضوع هذا الفرامورك قلبت عملي ظهرا على عقب لأنجز المشروعين بهذا الفرامورك وكما قال الأخ عبد الله عيد في موضوع منفصل التعلم عن طريق البناء .


تحياتي و بالتوفيق






__________________
للإستفسار : http://aimadj.arabform.com/.
---
marocmdina is offline   قديم 28-01-2009, 04:22 AM
الرد مع إقتباس
الرد على الموضوع


 

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

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

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
Codeigniter.. عندما تكون البرمجة .. متعة بحق (2) almosmm PHP 51 28-05-2009 05:04 PM
Codeigniter.. عندما تكون البرمجة .. متعة بحق almosmm PHP 35 30-01-2009 01:51 AM
عندما تكون الدعوه فناً[مع الحبيب] sami30 القسم العام 0 22-08-2008 03:57 PM
::: عندما تكون لك قلعه ؟!! ::: M. Al-Dhafeeri الويب والويب 2.0 والتجارة الالكترونية 3 02-04-2006 07:17 AM
عندما تكون الهدية .............!!! PHOTOGRAPHER التصميم والرسومات والمونتاج 3 04-05-2002 12:53 AM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 03:51 PM.