ЭЭМ, Программалык камсыздоо
Иш-PHP глобалдык өзгөрмө. PHP глобалдык өзгөрмө жасоо
Сиз көп билишибиз керек кенен жөндөмүнөн бар Толук сайт түзүү. Бирок, эмне аны, чынында эле, өзгөчө болушу мүмкүн - ал PHP болуп саналат. программалоо тилинде глобалдык өзгөрмө абдан көп колдонулган жок, бирок кээде ал кандай иштегенин билүү, кээде ал зарыл. Ушул себептен улам, аны жана анын кандай иштээрин, биз бул макалада эмне кылышты ойлонуп изилдөө болуп саналат.
масштабы
Алыдын ала, алар жергиликтүү милдети масштабы менен чектелет. Анан кантип дагы алган, анын чек аралары менен өзгөрмөлүү көрүп жазуу кылып колдонууга болот? Ушул максатта жана PHP глобалдык өзгөрүүлөр боюнча берилет.
Ачкычтуу сүйлөм боюнча "дүйнөлүк"
Мындай көрсөтүү ишке ашыргандан кийин, маалымат бардык материалдары менен иштей алат. мына ушул өзгөрмөгө шилтеме бар болсо, программасы ар дайым дүйнөлүк чыгаруу жөнүндө маани берет.
Эмне үчүн мындай бир кызык тил? Ошол эле учурда жергиликтүү өз алдынча түрү болушу мүмкүн экендиги. Бирок, алар жарыяланган ошол билэлэри үчүн гана жеткиликтүү болот. Ошондо бүт калган глобалдуу өзгөрмөлөр PHP тобуна иш-аракет кылат. Ошондуктан сен да сак болушубуз керек. Ал эми эч кандай шек жок экенин, бул жерде алар кандай Мисал окшош: глобалдык а.
Бир билэ өзгөрмөлөр бир нече мүмкүнчүлүк бар болсо, анда ал аларга каршы алып келем. жергиликтүү же глобалдык өзгөрмө окуп же таптакыр болбой жатат - Ал эми, биз так айта албайбыз. Демек, бул иш боюнча каттоого турган болсо, анда ал эч кандай маселе болушу керек. Бирок, анын чек аралары өзгөрмөнүн пайдалануу кыйын болот. Ошондуктан, деп айтылбайт тыгыз мониторинг жүргүзүү жана камсыз кылуу үчүн зарыл болгон кодексин даярдоо структурасы да, мындай деди: чыр-чатак үчүн шарт пайда болот.
жазмасын дагы өзү
Алдын / superglobals
Ар бир программалоо тили боюнча анын айрым милдеттерин үчүн жалданган айрым ысымдар бар. Ошондуктан, бир эле аты иштебей калат жана PHP глобалдык өзгөрүүлөр боюнча түзүү.
Бул программалоо тили өзүнө мүнөздүү өзгөчөлүктөргө ээ. Ошондуктан, бул жерде алдын ала өзгөрмөлөр "Супер" орнотуу эмес, башкача айтканда, алар бардык жерлерде жеткиликтүү эмес маанилүү. Аны кантип айтса болот? Алдын ала өзгөрмөлөр кээ бир жергиликтүү аймакта жеткиликтүү болгон үчүн, ал төмөнкүдөй :. Global "Өзгөрмө деп жарыяланышы керек" Ал мурун айткан эле болуп калды, туурабы? Бул туура эмес, бирок өтө эле. Келгиле, бир мисал буга чейин "күрөшүүгө" карап көрөлү:
- глобалдык $ HTTP_POST_VARS;
- $ HTTP_POST_VARS [ 'ат'] кошулушат.
Алардын арасындагы айырманы сезимде болгон? PHP глобалдык өзгөрүүлөр боюнча сөзсүз түрдө кызматына колдонулат керек эмес экенин белгилешет. Ал тургай, ага киргизилген бир делосуна жайгаша алат.
Шилтемелер жана коопсуздук
Көрүнүп тургандай, PHP глобалдык өзгөрмө бир проблема эмес, жараткан. Бирок, кайсы бир тууганы шилтемелер бар? Ооба, учурда дүйнө менен күтүлбөгөн жүрүш болушу мүмкүн. Бирок, буга чейин, бир аз, образ.
4.2.0 нускасында демейки register_globals боюнча мамлекеттик чыгаруу өзгөргөн менен жетекчилик. көпчүлүк колдонуучулар үчүн бул абдан маанилүү, бирок курулай эмес. Анын үстүнө, ал түздөн-түз иштеп продукт коопсуздугуна таасирин тийгизет. Эгер керек болсо, бул параметр боюнча өзгөрмөлүү глобалдык, PHP-саясатынын түздөн-түз таасирин тийгизген эмес. Ошондой болсо да, туура эмес колдонуу жана буга чейин окуялар коопсуздукту түзө аласыз.
мисалы HTML-түрлөрүн жөнөтүү үчүн жазуу түрүндөгү мыйзамдардын аткарылышы зарыл болгон ар кандай өзгөрүүлөр ишке алдында register_globals, күйгүзүлгөн болсо. Ошондуктан, аны өчүрүү үчүн чечим кабыл алынды.
Эмне үчүн PHP дүйнөлүк өзгөрмөнүн бул көрсөтмөгө абалы көп карызы бар? Чынында иштеп мамлекеттик ишенимдүү эмес, дайыма качан өздөрү ал кайдан келип чыккандыгы тууралуу суроосуна жооп бере алган эмес. Бир жагынан, бул кодун жазып жардам болот. Бирок, экинчи жагынан - бул коопсуздук тобокелдиги. Ошондуктан, аралаштыруу каталар, ошондой эле маалыматтарды качууга жана жетекчилик өчүрүлдү.
Азыр дүйнөлүк PHP өзгөрмөнүн жарыя маалыматтар менен бурмалоолор боюнча аракеттер менен коштолот / коопсуз кодун, ошондой эле иштерди кантип аныктоо үчүн эмес, карап көрөлү. Бул гана эмес, кооз түзүү үчүн зарыл болгон, ошондой эле туруктуу биринчи жеткиликтүү адамды жаракалар пайда жок, сайттарды иштеген.
зыяндуу коду
Кел, өзгөрмө ыйгарым укуктуу болгон адамдар үчүн чындык коём:
эгер (authenticate_user ()) {
$ Укук чыныгы =;
}
эгер ($ укук) {
"/highly/sensitive/data.php" кирет;
}
Бул мамлекеттин ичинде, өзгөрүлмө жазуусу белгилениши мүмкүн. маалыматтар жөн гана алмаштырылышы мүмкүн, жана алардын келип чыккан булагы коюлган эмес экенин эске алсак, анда кимдир бирөө ушундай сыноодон өтүп, башка бирөө болуп көрүнүшү мүмкүн. каалаган болсо, анда митаамдар (же жөн гана талапкер, ал эми тажрыйбасыздар түз адам) үзгүлтүккө учурашы мүмкүн, биздин логикасы.
Биз көрсөтмөгө маанисин өзгөртө турган болсо, бул код биз талап кылгандай, туура иш алып барат. Бирок өзгөрүүлөрдүн демилгеленишин программалоо гана жакшы обон эмес, ошондой эле бизге арибин туруктуулугун бир кепилдик берет.
кодексинин ишенимдүү версия
Сиз өчүрүп же көрсөтмөлөрдү иштеп, бул максатка жетүү үчүн бир кыйла татаал кодун жазып берет. Мисалы, мындай:
эгер (isset ($ _ отурум [ 'къошулуучуну аты'])) {
Эхо "Hello <б> {$ _ отурум [ 'къошулуучуну аты']} б>";
} Else {
Эхо "Hello <б> Конок б>
";
"Welcome колдонуучуну" кошулат;
}
Бул учурда бир алмаштыруу жасап, кыйын болот. Бирок мурдагыдай эле - мүмкүн. Бул үчүн, ыкчам жооп берүү аспаптар берилген кам көрүүгө тийиш. Сиз PHP глобалдык өзгөрмө камтыйт кайра алгысы келсе, анда төмөнкү куралдарды колдоно аласыз: биз катар алынган мааниси эмне экенин болсо, анда ал бир матч менен көрүш үчүн скрипт-каттаса да болот. Албетте, ал ошондой эле алмаштыруучу баалуулуктарына каршы толук коргоону камсыз кылууга кепилдик бере албайт. Бирок, бул өтө эле көп тандоолор бир топ татаалдаштырып жатат.
маскарад аракеттер табат
Кел анда, жогоруда жазылган билүү кандайча жардам берерин карап көрөлү. Төмөндө бериле турган иш глобалдуу өзгөрмөлөр PHP-жылы, сен да жарыялашым керек болот. Биз бул сабак темада өздөштүрүү боюнча тапшырмаларын бир түрү болуп саналат деп айтууга болот. Here коду болуп саналат:
Php
эгер (isset ($ _ Cookie [ 'C_COOKIE'])) {
} Elseif (isset ($ _ АЛУУНУН [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {
почта ( "administrarot@example.com", "Кулак сал, скрипт-чуудан жана маалыматтар менен эркин сезишип, аракети жазылган", $ _SERVER [ 'REMOTE_ADDR "]);
". Сынган коопсуздук же Administrator кабардар кылууга аракет болгон жок" кошулат;
чыгуу;
} Else {
}
?>
Азыр түшүндүрмө ага. Жарым-жартылай C_COOKIE ишенимдүү булактан бизге келет. толугу менен кътълъъчъ натыйжасына ылайык канааттандырылат үчүн, биз анын баасын текшерип, көйгөйлөр пайда болгон учурда администраторго кабарлайт. ал келе элек болсо, анда эч кандай иш-аракет кылууга муктаж эмес. Сиз жөн гана register_globals жетекчилик кодду коопсуз жок, өчүрүү экенин түшүнүү керек. Ошондуктан, колдонуучу бир скрипт алган кандайдыр бир өзгөрмөлүү, күтүлгөн маанисинен үчүн текшерип туруу керек.
жыйынтыктоо
Бул жерде жалпысынан, ошондой эле ийгиликтүү жана аман-эсен өз ишинде колдонуу үчүн глобалдык өзгөрүүлөрдүн тууралуу билиши керек баарын. Кол салгандар дайыма ыкмаларын жана көндүмдөрүн жогорулатуу болуп саналат - Албетте, эч ким аларды мүмкүн эмес колдонот толук кепилдик бар экенин айтты. Бул кодду глобалдык өзгөрүүлөрдүн максималдуу пайдаланууну чектөө чыгарса жакшы болмок. Бактыга жараша, бул программалоо тилинин түзүлүшү жана дизайн өзгөчөлүктөрү бул максатка жетүүгө болот. Ийгилик коштосун!
Similar articles
Trending Now