کامپیوترنرمافزار

متغیر جهانی پی اچ پی در تابع. یک متغیر جهانی در پی اچ پی

برای ایجاد یک سایت کامل، که دارای قابلیت های گسترده شما نیاز به دانستن زیادی. اما آنچه می تواند او را واقعا منحصر به فرد را - از آن پی اچ پی است. متغیر جهانی در زبان برنامه نویسی استفاده شده است و نه اغلب، اما گاهی اوقات بدانید که چگونه کار می کند، گاهی اوقات لازم است. که مطالعه آنچه در آن است و چگونه کار می کند، ما می رویم به انجام در این مقاله است.

حوزه

بنابراین زمینه ای که در متغیر و تعیین پاسخ. در اغلب موارد، آنها فقط یک دامنه. هنگامی که متغیرهای سراسری PHP از فایل های دیگر بارگذاری می شود، سپس آن را ممکن فراگیر (شامل) و مورد نیاز (نیاز به).

به طور پیش فرض، آنها به دامنه تابع محلی محدود شده است. و چگونه به متغیر فایل های مشاهده شده در مرزهای خود، که بیشتر و می تواند استفاده کنید؟ برای این منظور، و در متغیر های جهانی پی اچ پی ارائه شده است.

کلمه کلیدی "جهانی"

و در اینجا این است که چگونه یک متغیر جهانی به پی اچ پی؟ در دستیابی به این هدف به ما کمک خواهد کلمه "جهانی". این به جای در مقابل متغیر است که شما می خواهید را به جهانی (narimer، جهانی «متغیر») لازم است.

پس از اجرای چنین نشانه، داده قادر به کار با هر نوع فایل خواهد بود. اگر در جایی هستند اشاره به این متغیر وجود دارد، این برنامه همیشه توجه در نسخه جهانی پرداخت.

چرا چنین یک زبان عجیب و غریب؟ واقعیت این است که در همان زمان ممکن است نسخه محلی وجود دارد. اما آنها در دسترس خواهد بود به طور انحصاری برای کسانی که فایل های که در آن اعلام می شود. و برای بقیه متغیرهای جهانی عمل کلاس پی اچ پی. بنابراین شما باید مراقب باشید. جهانی: و این بود که بدون شک وجود دارد، در اینجا یک مثال از آنچه که آنها شبیه است.

از آنجا که اگر یک فایل دسترسی به تعدادی از متغیرهای داشته باشد، آن باعث خواهد شد آنها را به در تضاد است. اما ما نمی توانیم بگوییم برای مطمئن - متغیر محلی و یا جهانی به عنوان خوانده شده یا در دسترس نباشد نتواند. بنابراین، اگر آن را به ثبت نام در یک تابع، آن را باید بدون مشکل. اما استفاده از یک متغیر برای مرزهای خود را به مشکل ساز باشد. بنابراین، ساختار از تهیه پیش نویس کد لازم به دقت نظارت و مطمئن شوید که هیچ جا وجود دارد حتی یک پیش نیاز برای درگیری گفت به وجود آمد.

تجسم یکی دیگر از ضبط

آیا ممکن است در PHP برای ایجاد یک متغیر جهانی در راه دیگری؟ بله، حتی یک. اول، اجازه دهید در نظر گرفتن $ GLOBALS. این یک آرایه انجمنی است. کلید به آن - به نام است. به عنوان مقدار از مطالب عنوان یک متغیر جهانی عمل می کند. لازم به ذکر است که آرایه پس از اعلام در هر حوزه وجود دارد. به همین دلیل به آن اعتقاد دارند superglobal می دهد. به نظر می رسد چنین است: $ GLOBALS [ 'متغیر'].

از پیش تعریف شده / دو superglobal

در هر زبان برنامه نویسی برخی از نام های است که برای برخی از عملکردهای خود اجاره وجود دارد. بنابراین، برای ایجاد در متغیرهای سراسری PHP به همین نام کار نخواهد کرد.

این زبان برنامه نویسی دارای ویژگی های خاص آن است. بنابراین، مهم است که متغیرهای از پیش تعریف شده در اینجا در حال نصب نیست "فوق العاده"، است که، آنها در تمام نقاط در دسترس نیست. چگونه می توانم آن را ثابت؟ برای متغیرهای از پیش تعریف در برخی از محلی در دسترس بود، آن را باید به شرح زیر:. «متغیر جهانی اعلام شود" به نظر می رسد مانند قبل گفت، درست است؟ درست است، اما نه کاملا. اجازه دهید ما در حال حاضر "مبارزه" نمونه نگاه کنید:

  • $ جهانی HTTP_POST_VARS؛
  • اکو $ HTTP_POST_VARS [ 'نام'].

شما احساس تفاوت بین آنها؟ توجه داشته باشید که در متغیرهای سراسری PHP لزوما باید به داخل تابع استفاده می شود. حتی می توانید در یک فایل است که در آن گنجانده شده قرار می گیرد.

لینک ها و ایمنی

همانطور که می بینید، در پی اچ پی ایجاد یک متغیر جهانی یک مشکل نیست. اما هر لینک نسبی خاص وجود دارد؟ بله، ممکن است در هنگام استفاده از جهانی باشد رفتار غیر منتظره وجود دارد. اما قبل از آن، یک BACKSTORY کمی.

در نسخه 4.2.0 دستور به طور پیش فرض از register_globals از در دولت را به خاموش تغییر کرده است. برای بسیاری از کاربران، این است بسیار مهم است، اما بیهوده است. پس از همه، آن به طور مستقیم امنیت محصول توسعه یافته تاثیر می گذارد. اگر شما نیاز به ایجاد متغیر جهانی PHP-بخشنامه در این پارامتر به طور مستقیم تحت تاثیر قرار نمی. با این حال، استفاده نادرست در حال حاضر می تواند امنیت سوابق ایجاد کنید.

بنابراین اگر از register_globals روشن است، قبل از اعدام از کد نوشته شده مقداردهی اولیه متغیرهای مختلف که مورد نیاز است، به عنوان مثال برای ارسال HTML اشکال. بنابراین، تصمیم گرفته شد تا آن را خاموش.

چرا که دولت از این دستور در پی اچ پی متغیر جهانی بسیار است مدیون؟ واقعیت این است که زمانی که دولت از توسعه دهندگان همیشه با اطمینان می تواند به این سوال که از کجا آمده خودشان پاسخ دهند. از یک طرف، آن را آسان تر است به نوشتن کد. اما از سوی دیگر - این یک ریسک امنیتی است. بنابراین، برای جلوگیری از اشتباهات، و همچنین داده های مخلوط کردن و بخشنامه غیرفعال شده است.

حالا اجازه دهید به نظر نمی / کد امن، و همچنین چگونه به تشخیص مواردی که اعلام متغیر پی اچ پی جهانی است که توسط تلاش در دستکاری با داده ها همراه. این کار به منظور ایجاد نه تنها زیبا، لازم است، اما همچنین به طور پیوسته سایت های که فرد برای اولین بار در دسترس را کرک کنید کار.

کد های مخرب

بیایید آن متغیر واقعی برای کسانی که شده اند مجاز است:

اگر (authenticate_user ()) {
$ اجازه = درست؛
}

اگر ($ اجازه) {
عبارتند از: "/highly/sensitive/data.php"؛
}

در این حالت، متغیر می تواند به طور خودکار تنظیم می شود. با توجه به اینکه داده ها به سادگی می تواند جایگزین شود، و منبع منشاء آنها تنظیم نشده باشد، پس از آن هر کسی می تواند چنین آزمون عبور و تظاهر به شخص دیگری است. اگر مورد نظر، مهاجم (یا فقط فرد کنجکاو است، اما تجربه) ممکن است دچار اختلال میشود، منطق ما.

اگر ما ارزش بخشنامه تغییر دهید، این کد به درستی کار خواهد کرد، و ما مورد نیاز است. اما مقدار دهی اولیه متغیر نه تنها یک تن خوب در برنامه نویسی است، بلکه ما می دهد تضمین خاصی از ثبات اسکریپت.

نسخه قابل اعتماد از کد

شما می توانید خاموش و یا کار دستورات، و یا تجویز یک کد پیچیده تر برای رسیدن به این هدف است. به عنوان مثال، مثل این:

اگر (از Isset ($ _ SESSION [ 'نام کاربری'])) {

اکو "سلام به {$ _ SESSION [ 'نام کاربری']}

} دیگری {

اکو "سلام به مهمان /> اکو "برای کاربران خوش آمدید!"؛

}

یک تعویض در این مورد، وجود دارد دشوار خواهد بود. اما هنوز هم - امکان پذیر است. برای این کار، شما باید مراقبت که ابزار پاسخ سریع ارائه شد است. اگر شما می خواهید که شامل متغیرهای جهانی در پی اچ پی، شما می توانید از ابزارهای زیر استفاده کنید: اگر ما می دانیم چه محدوده مقدار به دست آمده است، ممکن است به ثبت نام یک اسکریپت برای بررسی این را با یک بازی. البته، آن را نیز به حفاظت کامل در برابر ارزش جایگزینی تضمین نمی کند. اما این گزینه به طور قابل توجهی بیش از حد پیچیده است.

می یابد تلاش برای لباس مبدل در امدن

بیایید ببینید که چگونه شما را در درک که قبلا نوشته شده است. در پی اچ پی متغیر های جهانی در تابع که در زیر داده خواهد شد، شما باید خود را اعلام کنند. می توان گفت که این نوع از مشق شب بر تشبیه موضوع درس است. در اینجا کد است:

<؟ پی اچ پی
اگر (از Isset ($ _ کوکی [ 'C_COOKIE'])) {
} ELSEIF (isset را ($ _ GET [ 'C_COOKIE']) || isset را ($ _ POST [ 'C_COOKIE'])) {

پست الکترونیکی ( "administrarot@example.com"، "توجه، اسکریپت تلاش در سرقت و دستکاری با داده های ثبت شده بود"، $ _SERVER [ 'REMOTE_ADDR'])؛
اکو "بود ایمنی شکسته وجود دارد و یا تلاش برای انجام این کار مدیر مطلع شود."؛
خروج.

} دیگری {
}
؟>

حالا توضیح نمیدهد. تا حدودی C_COOKIE می آید تا ما را از یک منبع قابل اعتماد. به طور کامل با توجه به نتیجه انتظار می رود راضی، ما ارزش خود را بررسی و اطلاع مدیر سایت در صورت بروز مشکلات. اگر آن را نمی آیند، پس از آن هیچ اقدام و لازم نیست به. شما باید به درک که به سادگی غیر فعال کردن register_globals را بخشنامه باعث نمی شود کد شما امن است. بنابراین، هر متغیری که یک اسکریپت از کاربر دریافت می کند، باید برای مقدار مورد انتظار بررسی می شود.

نتیجه

در اینجا، به طور کلی، و همه چیز شما نیاز به مورد متغیر های جهانی به موفقیت و با خیال راحت از آنها استفاده کنید در کار خود مطمئن شوید. البته، بگویم این است که تضمین کامل که هیچ کس استفاده از آنها را نمی تواند وجود دارد - حمله به طور مداوم بهبود روش ها و مهارت های خود را. از این رو است که مطلوب به محدود کردن حداکثر استفاده از متغیر های جهانی در کد. خوشبختانه، ساختار و طراحی از ویژگی های این زبان برنامه نویسی می توانید به این هدف دست یابد. موفق باشید!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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