کمپیوٹرز, سافٹ ویئر
تقریب میں پی ایچ پی کی متغیر عالمی. پی ایچ پی میں ایک عالمی متغیر بنائیں
جس وسیع فعالیت ہے تمہیں بہت جاننے کی ضرورت ہے ایک مکمل سائٹ، تخلیق کرنے کے لئے. لیکن کیا اس سے واقعی منفرد کر سکتے ہیں - یہ پی ایچ پی کی ہے. پروگرامنگ زبان میں متغیر عالمی بہت اکثر استعمال نہیں ہے، لیکن کبھی کبھی یہ کیسے کام کرتا جاننا، بعض اوقات تو یہ ضروری ہے. کہ یہ کیا ہے اور یہ کس طرح کام کرتا ہے، ہم نے اس مضمون میں کیا کرنے جا رہے ہیں کا مطالعہ ہے.
دائرہ کار
ڈیفالٹ کی طرف سے، انہوں نے مقامی تقریب دائرہ کار تک محدود ہیں. اور کس طرح اس کی حدود میں متغیر دیکھا فائلوں کو بنانے کے لئے، جس میں زیادہ سے استعمال کر سکتے ہیں؟ اس مقصد کے لئے، اور پی ایچ پی عالمی متغیر میں فراہم کی جاتی ہے.
مطلوبہ لفظ "عالمی"
اس طرح ایک اشارہ کے نفاذ کے بعد، ڈیٹا کو کسی بھی فائل کے ساتھ کام کرنے کے قابل ہو جائے گا. کہیں اس متغیر کا حوالہ ہیں تو، پروگرام ہمیشہ عالمی ورژن پر توجہ دینا ہو گی.
کیوں اس طرح ایک عجیب زبان؟ حقیقت یہ ہے کہ ایک ہی وقت میں مقامی ورژن موجود ہو. لیکن وہ ان فائلوں کا اعلان کیا ہے جہاں کے لئے خصوصی طور پر دستیاب ہوگا. اور باقی سب کے لئے عالمی متغیر PHP کلاس کام کرے گا. لہذا آپ کو ہوشیار رہنا چاہئے. عالمی پیغام ہے: اور اس میں کوئی شک نہیں تھا کہ، یہاں وہ کس طرح نظر آتے کی ایک مثال ہے.
کیونکہ ایک فائل متغیرات میں سے ایک بڑی تعداد تک رسائی حاصل ہوگی، تو یہ ان کے تنازعے کا سبب بنے گی. لیکن ہم یہ نہیں کہہ سکتے کے لئے اس بات کا یقین - مقامی یا عالمی متغیر پڑھ یا مکمل طور پر ناکام ہو جاتا ہے رہا ہے. لہذا، یہ ایک تقریب میں رجسٹر کرنے کے لئے ہے، تو یہ کوئی مسئلہ نہیں ہونا چاہئے. لیکن اس کی سرحدوں کے لئے ایک متغیر کا استعمال مشکلات ہو جائے. لہذا، بہت قریب سے نگرانی اور اس بات کو یقینی بنانے کے لئے ضروری کوڈ کے ڈرافٹ کی ساخت کہیں بھی نہیں ہے کہ اس سے بھی کہا کہ تنازعہ پر ایک شرط کیا جانے لگا.
ریکارڈنگ کی ایک اور اوتار
پیش وضاحتی / superglobals
ہر پروگرامنگ زبان میں کچھ نام اس کے افعال میں سے کچھ کے لئے چارٹر رہے ہیں کہ نہیں ہیں. لہذا، ایک ہی نام نہیں کام کرے گا کے پی ایچ پی کی عالمی متغیر میں بنانے کے لئے.
یہ پروگرامنگ زبان اس کی اپنی خصوصیات ہیں. لہذا، یہ ہے کہ یہاں پیش وضاحتی متغیر، "سپر" انسٹال کرنے یہ ہے کہ، وہ تمام مقامات میں دستیاب نہیں ہیں نہیں کر رہے ہیں یہ ضروری ہے. میں نے اسے کس طرح ٹھیک کر سکتے ہیں؟ کرنے کے لئے پیش وضاحتی متغیرات میں سے کچھ مقامی علاقے میں دستیاب تھا، یہ "حسب ذیل :. گلوبل« متغیر کا اعلان کر دیا جائے ضروری ہے یہ ٹھیک ہے، اس سے پہلے کہا تھا کہ طور پر ایک ہی ہو جائے لگتا ہے؟ یہ سچ ہے، لیکن کافی نہیں. ہمارے پاس پہلے سے ہی ایک مثال "لڑائی" پر نظر کرتے ہیں:
- عالمی $ HTTP_POST_VARS؛
- $ HTTP_POST_VARS [ 'نام'] بازگشت.
آپ ان کے درمیان فرق محسوس کرتے ہیں؟ پی ایچ پی کی عالمی متغیر میں لازمی طور پر تقریب کے اندر اندر استعمال کیا جانا ضروری نہیں ہے یاد رکھیں کہ. یہ بھی اس میں شامل ہے کہ ایک فائل میں رکھا جا سکتا ہے.
روابط اور حفاظت
جیسا کہ آپ دیکھ سکتے ہیں کے طور پر، پی ایچ پی میں تخلیق ایک عالمی متغیر ایک مسئلہ نہیں ہے. لیکن کسی خاص رشتہ دار لنکس موجود ہے؟ جی ہاں، عالمی استعمال کرتے وقت وہاں غیر متوقع رویے ہو سکتا ہے. لیکن اس سے پہلے، ایک چھوٹا سا backstory کے.
ورژن 4.2.0 میں ڈیفالٹ register_globals طرف ہدایت پر ریاست سے دور کرنے کے لئے تبدیل کر دیا. سب سے زیادہ صارفین کے لئے، یہ بہت اہم ہے، لیکن بیکار میں نہیں ہے. سب کے بعد، یہ براہ راست تیار مصنوعات کی سلامتی پر اثر انداز. متغیر عالمی، اس پیرامیٹر پر پی ایچ پی کی ہدایت آپ کو بنانے کے لئے کی ضرورت ہے تو براہ راست متاثر نہیں ہے. تاہم، غلط استعمال سے پہلے سے ہی نظیریں سیکورٹی بنا سکتے ہیں.
لہذا register_globals لکھا کوڈ کو پھانسی، ضرورت ہے کہ مختلف متغیر ابتدا سے پہلے مثال HTML فارم بھیجنے کے لئے کے طور پر، پر تبدیل کر دیا جاتا ہے تو. لہذا، یہ اسے بند کرنے کا فیصلہ کیا گیا تھا.
کیوں PHP عالمی متغیر میں اس ہدایت کی حالت بہت کچھ واجب الادا ہے؟ حقیقت یہ ہے کہ ڈویلپرز کی حالت ہمیشہ نہیں یقین کے ساتھ کرتے ہیں جب خود یہ کہاں سے آیا کے سوال کا جواب دے سکتا ہے. ایک طرف، یہ کوڈ لکھنے کے لئے آسان ہے. لیکن دوسرے پر - یہ ایک سیکورٹی رسک ہے. لہذا، غلطیاں، کے ساتھ ساتھ ڈیٹا کے اختلاط سے بچنے کے لئے اور ہدایت کو غیر فعال کر دیا گیا ہے.
اب نہیں / محفوظ کوڈ، اس کے ساتھ ساتھ کس طرح کے طور پر مقدمات عالمی PHP متغیر کے اعلان کے ڈیٹا کے ساتھ چھیڑچھاڑ میں کوششوں کے ساتھ کیا جاتا ہے جہاں پتہ لگانے کے لئے دیکھو. یہ نہ صرف خوبصورت بنانے کے لئے ضروری ہے، بلکہ مسلسل کام کر رہے سائٹس پہلا دستیاب شخص ٹوٹ نہیں ہے.
درنساوناپورن کوڈ
کی ہے کہ متغیر جو اختیار دیا گیا ہے ان لوگوں کے لئے سچ ہے مقرر کرتے ہیں:
اگر (authenticate_user ()) {
$ اجازت سچا =؛
}
اگر ($ اجازت) {
"/highly/sensitive/data.php" میں شامل ہیں؛
}
اس حالت میں، متغیر خود کار طریقے سے مقرر کیا جا سکتا ہے. کو ذہن میں رکھتے کہ ڈیٹا کو صرف تبدیل کیا جا سکتا ہے، اور ان کی اصل کے ذریعہ مقرر نہیں ہے، اس کے بعد کسی کو بھی اس طرح ایک ٹیسٹ پاس اور کوئی اور بننے کا دعوی کر سکتے ہیں. اگر آپ چاہیں، حملہ آور (یا صرف شوقین ہیں لیکن ناتجربہ کار شخص) بصارت کا شکار کیا جا سکتا ہے، ہماری منطق.
ہم ہدایت کی قدر تبدیل کرتے ہیں تو، اس کوڈ سے ہم ضرورت کے طور پر، درست طریقے سے کام کریں گے. لیکن متغیرات میں سے ابتدا نہ صرف پروگرامنگ میں ایک اچھا سر ہے، بلکہ ہماری سکرپٹ کے استحکام کی ایک خاص بات کی ضمانت فراہم کرتا ہے.
کوڈ کے قابل اعتماد ورژن
آپ کو بند کر سکتا ہے یا ہدایت کام کرتے ہیں، یا اس مقصد کو حاصل کرنے کے لئے ایک زیادہ پیچیدہ کوڈ لکھ. مثال کے طور پر اس طرح:
اگر (لیے isset ($ _ سیشن [ 'یوزر نیم'])) {
بازگشت "ہیلو میں {$ _ سیشن [ 'یوزر نیم']} b> کو"؛
} ورنہ {
بازگشت "ہیلو میں مہمان ہے b>
"؛
"میں خوش آمدید صارف!" بازگشت؛
}
اس صورت میں ایک متبادل بنانے، مشکل ہو جائے گا. لیکن پھر بھی - ممکن. ایسا کرنے کے لئے، آپ کو کہ ریپڈ رسپانس کے اوزار فراہم کی گئی خیال رکھنا ہوگا. آپ پی ایچ پی میں عالمی متغیر شامل کرنے کے لئے چاہتے ہیں تو، آپ کو مندرجہ ذیل اوزار استعمال کر سکتے ہیں: ہم جانتے ہیں کہ رینج قدر حاصل کی جاتی ہے، تو یہ ایک میچ کے ساتھ اس کی جانچ پڑتال کرنے کے لئے ایک اسکرپٹ کو رجسٹر کرنے کے لئے ممکن ہے. بالکل، یہ بھی متبادل اقدار کے خلاف مکمل تحفظ کی ضمانت نہیں ہے. لیکن یہ بہت زیادہ اختیارات نمایاں طور پر پیچیدہ ہے.
بہانا کرنے کی کوششوں ڈھونڈتا
کی آپ نے پہلے لکھا کیسے دیکھتے ہیں. پی ایچ پی میں تقریب میں عالمی متغیر ذیل میں دیا جائے گا کہ آپ اپنے آپ کو اعلان کرنے کی ضرورت ہو گی. ہم کہہ سکتے ہیں کہ اس سبق موضوع کے انجذاب پر ہوم ورک کی ایک قسم ہے. یہاں کوڈ ہے:
<پی ایچ پی
اگر (لیے isset ($ _ کوکی [ 'C_COOKIE'])) {
} Elseif (لیے isset ($ _ حاصل کریں [ 'C_COOKIE']) || لیے isset ($ _ POST [ 'C_COOKIE'])) {
میل ( "administrarot@example.com"، "ہوشیار، اسکرپٹ چوری میں کوشش اور ڈیٹا کے ساتھ چھیڑچھاڑ ریکارڈ کیا گیا تھا"، $ _SERVER [ 'REMOTE_ADDR'])؛
بازگشت "ایک ٹوٹا حفاظت نہیں تھا یا ایسا ایڈمنسٹریٹر مطلع کیا کرنے کی کوشش."؛
ایگزٹ؛
} ورنہ {
}
؟>
ابھی وضاحت (مذہب). جزوی طور C_COOKIE ایک قابل اعتماد ذریعہ سے ہمارے پاس آتا ہے. مکمل طور پر توقع نتائج کے مطابق مطمئن کرنے کے لئے، ہم اس کی قدر کی جانچ اور مسائل کی صورت میں ایڈمنسٹریٹر کو مطلع کریں. یہ نہیں آیا ہے، تو کوئی ایکشن اور بنانے کی ضرورت نہیں تھی. آپ کو صرف register_globals ہدایت اپنا کوڈ محفوظ ہے نہیں بناتا کو غیر فعال ہے کہ سمجھنے کی ہے. لہذا، صارف کی طرف سے ایک سکرپٹ حاصل کرتا ہے کہ کسی بھی متغیر، متوقع قدر کے لئے کی جانچ پڑتال کی جانی چاہئے.
اختتام
یہاں، عام طور پر، اور سب کچھ آپ کو کامیابی سے اور محفوظ طریقے سے ان کے کام میں ان کا استعمال کرنے کے لئے عالمی متغیر کے بارے میں جاننے کی ضرورت ہے. بالکل، کہنے کے لئے ایک مکمل ضمانت کوئی ان کو نہیں کر سکتے ہیں کا استعمال کریں گے کہ وہاں ہے - حملہ آوروں کو مسلسل ان کے طریقوں اور مہارتوں کو بہتر بنانے کے کر رہے ہیں. اس کوڈ میں عالمی متغیر کے زیادہ سے زیادہ استعمال کو محدود کرنے لہذا یہ ضروری ہے. خوش قسمتی سے، اس پروگرامنگ زبان کی ساخت اور ڈیزائن خصوصیات اس مقصد کو حاصل کر سکتے ہیں. گڈ لک!
Similar articles
Trending Now