أجهزة الكمبيوترالبرمجيات

متغير PHP العالمي في وظيفة. جعل متغير عمومي في PHP

لإنشاء موقع كامل، الذي لديه وظيفة واسعة تحتاج إلى معرفة الكثير. ولكن ما يمكن أن يجعله فريدا من نوعه - هو PHP. لم يتم استخدام متغير عمومي في لغة البرمجة في كثير من الأحيان، ولكن أحيانا لمعرفة كيف يعمل، وأحيانا كان ذلك ضروريا. هذا هو دراسة ما هو وكيف يعمل، ونحن بصدد القيام به في هذه المقالة.

مجال

لذلك ندعو السياق الذي المتغير وتحديدها. في معظم الحالات، لديهم نطاق واحد فقط. عندما المتغيرات العالمية PHP تحميل من الملفات الأخرى، ومن ثم قد يكون شامل (تشمل) والمطلوب (يتطلب).

افتراضيا، فإنها تقتصر على نطاق وظيفة المحلي. وكيفية جعل متغير الملفات ينظر في حدودها، والتي يمكن أكثر واستخدامها؟ تحقيقا لهذه الغاية، ويتم توفيرها في المتغيرات العالمية PHP.

الكلمة "العالمية"

وهنا هو كيفية تعريف متغير عالمي لPHP؟ في تحقيق هذا الهدف سوف تساعدنا على كلمة "العالمية". فمن الضروري وضع أمام المتغير الذي كنت تريد أن تجعل من العالمية (narimer عالمي «المتغير").

بعد تنفيذ هذا مؤشرا، فإن البيانات تكون قادرة على العمل مع أي ملف. إذا في مكان ما هناك إشارات إلى هذا المتغير، فإن البرنامج دائما الاهتمام على الإصدار العمومي.

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

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

تجسيد آخر للتسجيل

هل من الممكن في PHP لإنشاء متغير عمومي بطريقة أخرى؟ نعم، ولا حتى واحد. أولا، دعونا النظر في $ GLOBALS. هذا هو مجموعة النقابي. المفتاح لذلك - هو اسم. حيث بلغت قيمة محتويات كعامل متغير عمومي. وتجدر الإشارة إلى أن مجموعة بعد إعلان موجودة في أي مجال. وهذا يعطي سبب للاعتقاد أنه superglobal. ويبدو ذلك: $ GLOBALS [ 'متغير'].

محددة مسبقا / superglobals

في كل لغة برمجة هناك بعض الأسماء التي استأجرتها لبعض وظائفها. لذلك، لإنشاء في PHP المتغيرات العالمية لن تعمل نفس الاسم.

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

  • $ العالمي HTTP_POST_VARS.
  • صدى $ HTTP_POST_VARS [ 'اسم'].

تشعر الفرق بينهما؟ لاحظ أنه ليس بالضرورة أن يكون في المتغيرات العالمية PHP لاستخدامها ضمن الدالة. حتى أنه يمكن وضعها في ملف المضمنة في ذلك.

وصلات والسلامة

كما ترون، في PHP إنشاء متغير عمومي ليست مشكلة. ولكن كان هناك أي ارتباطات نسبية معينة؟ نعم، قد يكون هناك سلوك غير متوقع عند استخدام العالمية. ولكن قبل ذلك، قليلا الخلفية الدرامية.

في الإصدار 4.2.0 التوجيه من قبل register_globals الافتراضي يتغير من يوم للدولة خارج. بالنسبة لمعظم المستخدمين، هذا ليس مهما جدا، ولكن من دون جدوى. بعد كل شيء، فإنه يؤثر تأثيرا مباشرا على أمن المنتج المتقدمة. إذا كنت بحاجة إلى جعل المتغير العالمي، PHP-التوجيه على هذه المعلمة لا يتأثر مباشرة. ومع ذلك، يمكن استعمال غير صحيح بالفعل خلق أمن سوابق.

حتى إذا تم إيقاف register_globals على، قبل تنفيذ قانون مكتوب تهيئة المتغيرات المختلفة التي يحتاجها، على سبيل المثال لإرسال HTML أشكال. ولذلك، فقد تقرر إيقاف تشغيله.

لماذا هو حالة من هذا التوجيه في متغير PHP العامة تدين بالكثير؟ والحقيقة هي أنه عندما دولة المطورين لا دائما مع اليقين يمكن أنفسهم الإجابة على هذا السؤال من أين جاء. من ناحية، فمن الأسهل لكتابة التعليمات البرمجية. لكن من ناحية أخرى - هو خطر أمني. لذلك، لتجنب الأخطاء، فضلا عن بيانات خلط وتم تعطيل التوجيه.

الآن دعونا لا ننظر / الرمز الآمن، وكذلك كيفية اكتشاف الحالات التي رافقت الإعلان عن متغير PHP العالمي من خلال محاولات العبث البيانات. وهذا أمر ضروري من أجل خلق ليس فقط جميلة، ولكن أيضا المواقع التي لا صدع أول شخص متاح تعمل بشكل مطرد.

الشيفرات الخبيثة

دعونا تعيين هذا المتغير هو الصحيح بالنسبة لأولئك الذين أذن:

إذا (authenticate_user ()) {
$ تخويل = صحيح.
}

إذا ($ يأذن) {
تشمل "/highly/sensitive/data.php".
}

في هذه الحالة، يمكن تعيين متغير تلقائيا. وبالنظر إلى أن البيانات يمكن ببساطة استبدال، ولم يتم تعيين مصدر مصدرها، ثم يمكن لأي شخص أن يمر مثل هذا الاختبار وأدعي أن يكون شخص آخر. إذا رغبت في ذلك، المهاجم (أو الشخص الغريب ولكن الخبرة فقط) قد تنخفض قيمتها، منطقنا.

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

نسخة موثوقة من قانون

يمكنك إيقاف أو العمل التوجيهات، أو وصف رمز أكثر تعقيدا لتحقيق هذا الهدف. على سبيل المثال، مثل هذا:

إذا (isset ($ _ الدورة [ 'اسم المستخدم'])) {

صدى "مرحبا <ب> {$ _ الدورة [ 'اسم المستخدم']} ".

} {شيء آخر

صدى "مرحبا <ب> زائر
".
صدى "مرحبا المستخدم!".

}

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

تجد محاولات لحفلة تنكرية

دعونا نرى كيف فهم مكتوبة في وقت سابق. في PHP المتغيرات العالمية في وظيفة التي سيتم الواردة أدناه، وسوف تحتاج لتعلن نفسك. يمكننا ان نقول ان هذا هو نوع من واجباتها على استيعاب موضوع الدرس. هنا هو رمز:

<؟ بى
إذا (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} ELSEIF (isset ($ _ الحصول على [ 'C_COOKIE']) || isset ($ _ ما بعد [ 'C_COOKIE'])) {

البريد ( "administrarot@example.com"، "الاهتمام، وسجلت النصي محاولة للسطو والعبث البيانات"، $ _SERVER [ 'REMOTE_ADDR'])؛
صدى "كان هناك سلامة كسر أو محاولة القيام بذلك إخطار المسؤول.".
الخروج؛

} {شيء آخر
}
؟>

الآن تفسيرا لها. جزئيا C_COOKIE يأتي إلينا من مصدر موثوق. لراض تماما وفقا لنتيجة متوقعة، ونحن تحقق قيمته وإبلاغ المسؤول في حالة حدوث مشاكل. إذا كان لا يأتي، ثم لا عمل ولا حاجة لجعل. يجب أن نفهم أن مجرد تعطيل register_globals التوجيه لا يجعل كود الخاص بك هو آمن. ولذلك، فإن أي متغير الذي يتلقى السيناريو من قبل المستخدم، يجب أن يتم التحقق من القيمة المتوقعة.

استنتاج

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

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ar.delachieve.com. Theme powered by WordPress.