KompyuterlarDasturiy ta'minot

Funktsiya PHP global o'zgaruvchilar. PHP global o'zgaruvchilar qiling

Agar ko'p bilish kerak keng o'yinga ega to'liq sayt yaratish uchun. Lekin uni, albatta, noyob nima qilish mumkin - u PHP hisoblanadi. dasturlash tilida global o'zgaruvchilar juda tez-tez ishlatiladigan emas, lekin ba'zida bu qanday ishlashini bilish, ba'zan zarur bo'ladi. Ya'ni va u qanday ishlaydi, biz bu maqolada nima qilmoqchisiz nima o'rganish hisoblanadi.

maqsad

Shunday qilib, o'zgaruvchan va belgilangan bo'lgan kontekstni qo'ng'iroq. Ko'p hollarda, ular faqat bir doirasi bor. PHP global o'zgaruvchilar boshqa fayllarini yuklagan bo'lsa, u inklyuziv (o'z ichiga oladi) va zarur bo'lishi mumkin (talab).

Sukut bo'yicha, ular mahalliy vazifasi doirasi cheklangan. Va qanday qilib ko'proq va qaysi foydalanishingiz mumkin, uning chegaralarini o'zgarmaydigan ko'rgan fayllar qilish uchun? Shu maqsadda, va PHP global o'zgaruvchilar berilgan.

kalit so'z "global"

Va bu erda bir global o'zgaruvchilar PHP e'lon uchun qanday? Bu maqsadga erishishda "global" bizga so'zni yordam beradi. Bu siz global (narimer, global «o'zgarmaydigan") qilish istayman o'zgaruvchining oldida joylashtirish kerak bo'ladi.

bunday ko'rsatkich amalga oshirish so'ng, ma'lumotlar har qanday fayl bilan ishlash imkoniyatiga ega bo'ladi. bir joyga bu o'zgaruvchilar uchun havolalar mavjud bo'lsa, dastur har doim global versiyasi ustida e'tibor beradi.

Nima uchun bunday g'alati til? haqiqat bir vaqtning o'zida mahalliy versiyalari bo'lishi mumkin, deb. Lekin ular e'lon o'sha fayllar uchun faqat mavjud bo'ladi. Va qolgan hamma uchun global o'zgaruvchilar PHP sinf harakat qiladi. Shuning uchun ehtiyot bo'lishi kerak. global A: Va hech qanday shubha yo'q edi, bu yerda ular kabi qarash qanday bir misol.

bitta fayl o'zgaruvchilar bir qator foydalanish imkoniyatiga ega bo'ladi, agar, chunki, u ularni zid sabab bo'ladi. mahalliy yoki global o'zgaruvchilar muvaffaqiyatsiz butunlay o'qib yoki - ishonch uchun, lekin, biz ayta olmaymiz. Bu funktsiya ro'yxatdan iborat bo'lsa, u hech qanday muammo bo'lmasligi kerak. Lekin uning chegaralari uchun o'zgaruvchining foydalanish muammoli bo'lishi. Shuning uchun, hech qayerga borligini yaqindan kuzatib borish va ishonch hosil qilish uchun zarur kodni ishlab chiqishda tuzilishi ham aytdi Nizolashayotgan fikr paydo bo'ldi.

yozilgan yana ifodasi

Bu PHP yana bir tarzda global o'zgaruvchilar yaratish mumkinmi? Ha, hatto bir. Birinchidan, uning $ GLOBALS ko'rib chiqaylik. Bu bir qator ilişkisel hisoblanadi. unga asosiy - ismi. mazmunan qiymati global o'zgaruvchilar sifatida muomala kabi. Bu e'lon keyin array har qanday doirasi mavjud ta'kidlash lozim. Bu superglobal uni komil beradi. Bu shunday ko'rinadi: $ GLOBALS [ 'o'zgaruvchan'].

Oldindan belgilangan / superglobals

Har bir dasturlash tilida uning ayrim vazifalari uchun ustav ba'zi ismlar bor. Shuning uchun, ishlamaydi shu nom PHP global o'zgaruvchilar yaratish.

Bu dasturlash tili o'z xususiyatlariga ega. Shunday qilib, bu yerda oldindan belgilangan o'zgaruvchilar, "super" o'rnatish emas, ular Barcha joylarda ham mavjud emas muhim ahamiyatga ega. Men uni qanday o'rnataman mumkin? oldindan belgilangan o'zgaruvchilar ayrim mahalliy sohada mavjud edi uchun quyidagi :. Global «o'zgaruvchi u" deb e'lon qilinishi lozim Bu to'g'ri, oldin aytgan bir xil bo'lishi ko'rinadi? Bu emas, balki juda haqdir. AQSh allaqachon bir misol, "jang" qaraylik:

  • global $ HTTP_POST_VARS;
  • $ HTTP_POST_VARS [ 'nomini'] echo.

Siz ular orasidagi farqni his? PHP global o'zgaruvchilar bilan, albatta, vazifasi doirasida foydalanish shart emas unutmang. Hatto unga kiritilgan bir faylga joylashtirilgan mumkin.

Links va xavfsizlik

Ko'rib turganingizdek, PHP bir global o'zgaruvchilar bir muammo emas yaratish. Lekin har qanday alohida nisbiy ishoratlar bor? global foydalanish paytida Ha, kutilmagan xatti bo'lishi mumkin. Lekin oldin, bir oz sunarsanız.

Versiya 4.2.0 standart register_globalleri tomonidan ko'rsatma on-davlatdan Off o'zgardi. Ko'pgina foydalanuvchilar uchun, bu juda muhim, lekin behuda emas. Axir, u bevosita ishlab mahsulot xavfsizligini ta'sir qiladi. Agar qilish kerak bo'lsa, bu parametr ustida o'zgaruvchan global, PHP-dastur bevosita ta'sir emas. Biroq, noto'g'ri foydalanish allaqachon oldingi xavfsizlik yaratishingiz mumkin.

misol HTML-shakllar yuborish uchun yozilgan kod ijro, zarur turli parametrlarga boshlang'ich holiga oldin Bas register_globals, yoqilgan bo'lsa. Shuning uchun, uni o'chirish uchun qaror qabul qilindi.

Nima uchun php global o'zgaruvchilar, bu direktifin davlat ko'p qarzi bo'lgan? haqiqat Ishlab chiquvchilar davlat ishonch bilan emas, balki har doim o'zlari u kelgan qaerda savolga javob mumkin, deb hisoblanadi. Bir tomondan, u kod yozish osonroq bo'ladi. Lekin boshqa tomondan - bu xavfsizlik xavfi bo'ladi. Shuning uchun, aralashtirish xatolar, shuningdek ma'lumotlarni oldini olish uchun va dastur o'chirib qo'yildi.

Endi yo'q / xavfsiz kodni, shuningdek qanday qilib global PHP o'zgaruvchining e'lon ma'lumotlar bilan o'ynashish da urinishlari bilan birga ishlarni aniqlash uchun qaraylik. Bu nafaqat chiroyli yaratish uchun zarur bo'lgan, lekin, shuningdek, barqaror birinchi mavjud shaxsni yorilish emas saytlarni ish.

zararli kodi

ning bu o'zgaruvchan vakolatli qilingan kishilar uchun to'g'ridir belgilangan bo'lsin:

Agar (authenticate_user ()) {
$ Authorize = rost;
}

Agar ($ authorize) {
"/highly/sensitive/data.php" o'z ichiga oladi;
}

Bu holatda, o'zgaruvchan avtomatik ravishda o'rnatish mumkin. ma'lumotlar oddiygina almashtiriladi mumkin, va ularning kelib chiqishi manbai belgilangan emas, deb o'ylab, keyin hech kim bunday tekshiruvdan o'tib, yana kimdir bo'lishga ayyorlik mumkin. Agar so'ralsa, tajovuzkor (yoki faqat qiziquvchan, lekin tajribasiz kishi), bizning mantiq buzilgan bo'lishi mumkin.

Biz direktifte qiymatini o'zgartirish bo'lsa, biz talab qilib, bu kod, to'g'ri harakat qiladi. Lekin o'zgaruvchilar boshlash dasturlash nafaqat yaxshi ohang, balki bizga ssenariysi barqarorlik muayyan kafolat beradi.

kodi Ishonchli versiyasi

Agar o'chirib yoki ko'rsatmalarni ishlash, yoki, bu maqsadga erishish uchun yanada murakkab kodni mutanosibdir. Misol uchun, bu kabi:

Agar (isset ($ _ SESSION [ 'username'])) {

echo "Salom {$ _ SESSION [ 'username']} ";

} Else {

echo "Salom Mehmon
";
"Xush kelibsiz foydalanuvchi!" Echo;

}

Bu holda bir o'zgarish, qiyin ham bo'ladi. Lekin hali ham - imkon. Buning uchun, siz tez javob vositalari taqdim etildi g'amxo'rlik kerak. Agar PHP global o'zgaruvchilar o'z ichiga bo'lsangiz, siz quyidagi vositalarni foydalanishingiz mumkin: biz qator olingan qiymati nima bilsangiz, bu o'yin bilan, bu tekshirish uchun skriptni ro'yxatdan mumkin. Albatta, u ham almashtirish qadriyatlar qarshi to'liq kafolat bermaydi. Lekin bu juda ko'p imkoniyatlari sezilarli darajada murakkablashtirishi ekan.

chizilmasin uchun urinish topadi

Siz ilgari yozilgan tushunishga ko'rib chiqaylik. PHP quyida beriladi funktsiya global o'zgaruvchilar, o'zingiz e'lon qilish kerak bo'ladi. Biz bu dars mavzuning assimilyatsiya kuni uy vazifalarini bir xil, deb aytish mumkin. Bu erda kod:

Agar (isset ($ _ Cookie [ 'C_COOKIE'])) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

mail ( "administrarot@example.com", "Diqqat, skript o'g'rilik urinish va ma'lumotlar bilan o'ynashish qayd etildi", $ _SERVER [ 'REMOTE_PORT']);
"Singan xavfsizlik bor edi, yoki buni Administrator xabardor harakat." Echo;
chiqish;

} Else {
}
?>

Endi tushuntirish unga. Qisman C_COOKIE ishonchli manbadan bizga keladi. to'liq kutilmoqda natijasida ko'ra qondirdi uchun, biz uning qiymatini tekshirish va muammolar holda boshqaruvchisiga xabar. u kelmaydi bo'lsa, keyin hech qanday harakat qilish kerak emas edi va. Siz shunchaki register_globals direktivasi kodi xavfsiz qilmaydi o'chirib deb tushunish kerak. Shuning uchun, foydalanuvchi bir skriptni qabul biron o'zgaruvchan, kutilgan qiymati uchun nazorat qilinishi kerak.

xulosa

Bu erda, umuman, va hamma narsa muvaffaqiyatli va xavfsiz ish ularni ishlatish uchun global o'zgaruvchilar haqida bilish kerak bo'lgan. hujum doimo o'z usullari va ko'nikmalarini yaxshilash - Albatta, hech kim ularni olmaydi foydalanadi to'liq kafolat yo'q, deb aytish uchun. Bu kodi global o'zgaruvchilar maksimal foydalanishni cheklash shuning maqsadga muvofiqdir. Yaxshiyamki, bu dasturlash tilining tuzilishi va dizayn xususiyatlari, bu maqsadga erishish mumkin. Omad tilaymiz!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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