العناوين الذكيه

العناوين الذكيه - Router


› ماهي العناوين الذكيه؟

هي نظام يعمل على جعل العنوان في المتصفح مقروء ويمكن أن يوضح معني الصفحة وماهي الكلمات المفتاحيه لها وبذلك تعمل هذه العناوين على أرشفه صحيحه لمحركات البحث وتعطي لصفحاتها قيمة أكبر ليصل لها أكبر عدد من المهتمين بمحتوى الصفحة , فيما مضى كنا نستخدم المتغيرات لمعرفة مايطلبه المستخدم وذلك عن طريق روابط كهذا الرابط
http://www.site.com/?p=about_us&c=amman
وكما ترى فإن الرابط لايعبر عن محتوى الصفحة , الآن يمكنك إستخدام مثل هذا الرابط لإنشاء نفس الرابط السابق
http://www.site.com/about_us/amman/
وهذه أمثله لكيفيه إستخدام الروابط وأيضا التخلص من المخترقين والمخربين وذلك من خلال الفلتره والتحقق التلقائي لجميع المدخلات

› الإستخدام :


php
// هنا يتم تنفيذ الأمر عند إستدعاء الرابط   
// site.com/hi or site.com/hi/
        $lezaz->router('/hi',function(){
            echo 'HI';// site.com/hi/ >> "HI"
});

// يتم تنفيذ الأمر التالي عند إستدعاء الرابط متبوعا بأي قيمة أخرى مثل 
// site.com/hi/1 or site.com/hi/my_url/any_other_url/any/any
        $lezaz->router('/hi/@*',function(){
            echo 'HI';// site.com/hi/me >> "HI"
});

// في هذا المثال نفس المثال السابق ولكن نريد أخذ القيمة المتبوع بكلمة هاي 
        $lezaz->router('/hi/@*',function($e){
            echo 'HI and '.$e;// site.com/hi/me >> "HI and me"
});


// هنا نريد إستخدام أكثر من رابط لتنفيذ الأوامر 
        $lezaz->router(array('/hi/','/my/','/any/other/word/'),function(){
            echo 'hi my any other word';// site.com/my/ >> "hi my any other word"
});

/*في هذا المثال نريد إستخدام المكتبه الرئيسيه لزاز داخل الداله مثلا لتغيير القالب إلى الإسم الذي نريده لعمل إستدعاء لهذا القالب 
        , في هذه الحاله نحتاج إلى إستخدام المكتبه ونكتب الكود بالطريقه التاليه 
        */
        $lezaz->router('/admin/@str',function($b)use($lezaz){
            $lezaz->main_template ='http://lezaz.cms/template/admin/'.$b;// site.com/admin/myfile >> load /template/admin/myfile.inc            
});

// بعض الأمثله السريعه 
        $lezaz->router(array('/test/@num/@str','test'),function($num,$str)use($lezaz){
                $lezaz->main_template ='http://lezaz.cms/template/admin/test';// إستدعاء القالب تست من المجلد أدمن داخل مجلد القوالب الرئيسي 
                echo "Number=$num & String=$str";// طباعه المتغيرات القادمة من الرابط ويجب أن تكون رقم ثم نص 
//الرباط يكون كالتالي 
// http://site.com/test/1/test
});

› الرموز أو المفاتيح :



'@num'=>'([0-9\.,]+)',// رقم ويمكن أن يحتوي على الفارزه والنقطه
'@alpha'=>'([a-zA-Z]+)',// حروف كبيره وصغيره فقط 
'@alnum'=>'([a-zA-Z0-9\.\w]+)',// حروف كبيرة وصغيره بالإضافه إلى الأرقام والنقطه  
'@str'=>'([a-zA-Z0-9-_\.\w]+)',//  حروف كبيرة وصغيره بالإضافه إلى الأرقام والنقطه وإشارة الناقص والشرطه 
'@*'=>'(.*)',// يقبل كل الحروف والرموز 
'@date'=>'(([0-9]{1,2})\/([0-9]{1,2})\/(([0-9]{2})(.{0}|.{2})))',// التاريخ بفورمات كالتالي 00/00/0000
'@null'=>'^');// لايقبل أي حرف , يجب أن يكون فارغ 

› إضافة مفتاح جديد

ماذا لو أردنا مثلا إضافة مفتاح جديد للتاريخ بحيث تكون الفورمات كالتالي

00-00-0000


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




$lezaz->add_router('@mydate','(([0-9]{1,2})-([0-9]{1,2})-(([0-9]{2})(.{0}|.{2})))');
        $lezaz->router('/@mydate',function($date){
           echo "your date is $date";
});
// url : http://site.com/1-7-2001

› مثال

قم بإنشاء مجلد داخل مجلد الإضافات بإسم

/plugin/my_test/

أنشيء ملف بإسم

/plugin/my_test/index.php

وأكتب هذا الكود داخله

php
/* سيتم إستدعاء القالب     
/template/my_template/test.inc
عند كتابة العنوان التالي 
http://your_domain.com/test or http://your_domain.com/test/any_thing
*/
$lezaz->router(array('/test/@*','test'),function($file)use($lezaz){
 $lezaz->main_template ='http://lezaz.cms/template/my_template/'.$file;
});


الآن أنشيء مجلد داخل مجلد القوالب بإسم

/template/my_template/

ثم أنشئ ملفات داخل المجلد بإسم

/template/my_template/test.inc/template/my_template/other.inc

وقم بإضافة هذا الكود داخل الملفات بالترتيب
this is
test.inc content!


this is
other.inc content!

الآن عند الدخول إلى الرابط

/test/test

يجب رؤية مافي داخل الملف الأول

test.inc


وفي حال تصفح الرابط

/test/other

ستظهر محتويات الملف الثاني

other.inc


وفي الحاله الأخيرة وهو الدخول إلى أي رابط غير متوفر الملف له مثل

/test/anyword

ستظهر لنا عبارة تفيد بأن القالب غير متوفر