Համակարգիչներ, Ծրագրային ապահովման
PHP գլոբալ փոփոխական գործառույթից: Կատարել է գլոբալ փոփոխական PHP
Է ստեղծել ամբողջական կայքը, որն ունի լայն ֆունկցիոնալությունը Ձեզ անհրաժեշտ է իմանալ, թե շատ. Բայց այն, ինչ կարող է անել, նրան իսկապես եզակի է, դա PHP. Գլոբալ փոփոխական է ծրագրավորման լեզվի չի օգտագործվում, շատ հաճախ, բայց երբեմն պետք է իմանալ, թե ինչպես է այն աշխատում, երբեմն դա անհրաժեշտ է. Որ ուսումնասիրում է, թե ինչ է դա եւ ինչպես է այն աշխատում, մենք պատրաստվում ենք անել, որ այս հոդվածում.
շրջանակ
Ըստ նախնականի, նրանք սահմանափակվում են տեղական ֆունկցիայի շրջանակից: Եւ թե ինչպես պետք է անել, փոփոխական տեսել ֆայլերի իր սահմաններից, որը կարող է ավելի ու օգտագործել. Այս նպատակով, եւ տրամադրվում է PHP գլոբալ փոփոխականներ:
Բառերի «գլոբալ»
Իրականացումից հետո նման նշումով, որ տվյալները կկարողանան աշխատել ցանկացած ֆայլ. Եթե ինչ-որ տեղ կան հղումները այս փոփոխականի, որ ծրագիրը պետք է միշտ ուշադրություն դարձնել համաշխարհային տարբերակի:
Ինչու նման տարօրինակ լեզու. Այն փաստը, որ միեւնույն ժամանակ կարող են լինել տեղական տարբերակները. Բայց նրանք հասանելի կլինի բացառապես այդ ֆայլերի, որտեղ հայտարարված: Եւ բոլոր մնացածը չի գործել, գլոբալ փոփոխականներ PHP դաս. Հետեւաբար դուք պետք է զգույշ լինել. Եւ որ չկար ոչ մի կասկած, ահա մի օրինակ է, թե ինչ են նրանք նայում նման: համաշխարհային a.
Քանի որ, եթե մեկը ֆայլը կունենաք օգտվել մի շարք փոփոխականների, ապա դա կհանգեցնի նրանց հակասում. Բայց մենք չենք կարող վստահ ասել, - տեղական կամ գլոբալ փոփոխական կարդալը կամ ընդհանրապես չի. Այնպես որ, եթե դա է գրանցվել մի գործառույթ, այն պետք է լինի ոչ մի խնդիր: Բայց օգտագործումը փոփոխականի համար իր սահմանների լինել խնդրահարույց: Հետեւաբար, կառուցվածքը մշակման օրենսգրքի անհրաժեշտ է ուշադիր հետեւել եւ համոզվեք, որ ոչ մի տեղ կա, նույնիսկ մի նախապայման է այդ հակամարտության վեր կացաւ.
Մեկ այլ մարմնավորում է ձայնագրության
Predefined / superglobals
Ամեն ծրագրավորման լեզու կան որոշ անուններ, որոնք Արտոնագրվել դրա որոշ գործառույթների. Հետեւաբար, ստեղծել PHP գլոբալ փոփոխականների նույն անունով չի աշխատելու:
Այս ծրագրավորման լեզու ունի իր առանձնահատկությունները: Այնպես որ, դա կարեւոր է, որ նախապես որոշված փոփոխականները այստեղ չեն տեղադրելու «սուպեր», այսինքն, նրանք չեն հասանելի բոլոր վայրերում: Ինչպես կարող եմ այն վերանորոգել. Է predefined փոփոխականների էր հասանելի է ինչ-որ տեղական տարածքում, ապա դա պետք է հայտարարվի, քանի որ հետեւյալ կերպ :. Global «փոփոխական» Թվում է, թե պետք է նույնը լինի, ինչպես նախկինում հայտնել է, ճիշտ է? Դա ճիշտ է, բայց ոչ այնքան: Եկեք նայենք արդեն «պայքարում» մի օրինակ:
- Համաշխարհային $ HTTP_POST_VARS.
- echo $ HTTP_POST_VARS [անունը '].
Դուք զգում եք, որ տարբերությունը նրանց միջեւ. Նշենք, որ PHP գլոբալ փոփոխականներ անպայմանորեն չի ունենա կօգտագործվի գործառույթից: Այն նույնիսկ կարող է տեղադրվել է ֆայլը, որը ներառված է այն:
Հղումներ եւ անվտանգության
Ինչպես դուք կարող եք տեսնել, PHP ստեղծել գլոբալ փոփոխական խնդիր չէ: Բայց կա որեւէ կոնկրետ հարաբերական հղումներ. Այո, կարող են լինել անսպասելի պահվածքը, երբ, օգտագործելով գլոբալ. Բայց մինչ այդ, մի քիչ backstory.
Տարբերակը 4.2.0 Հրահանգի լռելյայն register_globals փոխվել է on-պետության off. Օգտվողների մեծամասնության համար, դա շատ կարեւոր է, բայց իզուր: Ի վերջո, դա ուղղակիորեն ազդում է անվտանգությունը զարգացած արտադրանքի. Եթե Ձեզ անհրաժեշտ է դարձնել փոփոխական գլոբալ, PHP-հրահանգը այս պարամետրի ուղղակիորեն չի ազդել: Սակայն, սխալ օգտագործումը կարող է արդեն ստեղծել նախադեպեր, անվտանգությունը:
Այնպես որ, եթե register_globals շուռ է, նախքան կատարման գրավոր օրենսգրքի սկզբնավորված տարբեր փոփոխականները, որոնք անհրաժեշտ են, օրինակ ուղարկել HTML ձեւերը: Այդ իսկ պատճառով, որոշվել է դիմել այն դուրս.
Թե ինչու է պետությունը սույն Հրահանգի php գլոբալ փոփոխական պարտական: Փաստն այն է, որ երբ պետությունը մշակողների չեն միշտ վստահությամբ կարող իրենք պատասխանել այն հարցին, թե որտեղից է այն գալիս: Է, մի կողմից, դա ավելի հեշտ է գրել կոդ: Բայց մյուս կողմից, դա մի անվտանգության ռիսկի: Հետեւաբար, պետք է խուսափել սխալներ, ինչպես նաեւ տվյալների mixing եւ հրահանգ արդեն անջատված է:
Հիմա եկեք նայենք ոչ / անվտանգ օրենսգրքով, ինչպես նաեւ, թե ինչպես է հայտնաբերել այն դեպքերը, երբ հայտարարությունը համաշխարհային PHP փոփոխականի ուղեկցվում փորձերի նկարչություն տվյալների հետ: Սա անհրաժեշտ է, որպեսզի ստեղծել ոչ միայն գեղեցիկ է, այլեւ կայուն կերպով աշխատել կայքերը, որոնք չեն ճեղք է առաջին մատչելի մարդուն.
վնասակար ծրագրային կոդ
Եկեք սահմանել, որ փոփոխական ճշմարիտ է նրանց համար, ովքեր արդեն լիազորված:
եթե (authenticate_user ()) {
$ Լիազորել = ճիշտ;
}
եթե ($ լիազորում) {
ներառում են «/highly/sensitive/data.php".
}
Այս վիճակում, փոփոխական կարող է սահմանվել է ինքնաբերաբար: Հաշվի առնելով, որ այդ տվյալները կարող է պարզապես փոխարինվել, իսկ դրանց ծագման աղբյուրից չի սահմանել, ապա որեւէ մեկը կարող է անցնել նման քննություն, եւ հավակնել լինել մեկ ուրիշը: Եթե ցանկանաք, որ հարձակվող (կամ պարզապես հետաքրքրասեր բայց անփորձները անձը) կարող է արժեզրկված լինել, մեր տրամաբանությունը.
Եթե մենք փոխել արժեքը դիրեկտիվի, դա կոդը կաշխատի ճիշտ, քանի որ մենք պահանջվում: Բայց կարգաբերումը փոփոխականների է ոչ միայն լավ ազդանշան է ծրագրավորման, այլ նաեւ հնարավորություն է տալիս մեզ որոշակի երաշխիք է կայունության վրա ձեռագրով:
Հուսալի տարբերակ Օրենսգրքի
Դուք կարող եք անջատել կամ աշխատելու հրահանգների, կամ նախատեսել ավելի բարդ կոդը հասնելու այդ նպատակին: Օրինակ, հավանում են սա:
եթե (isset ($ _ ՆԻՍՏԸ [ 'Մականունը'])) {
Էխո »Բարեւ {$ _ ՆԻՍՏԸ [ 'Մականունը']} b>";
} Այլ {
Էխո »Բարեւ Հյուրատետր b>
";
echo "Welcome օգտվողին!";
}
Դարձնել մի փոխարինումը այս դեպքում, այնտեղ դժվար կլինի: Բայց դեռ - հնարավոր է. Որպեսզի դա անել, դուք պետք է հոգ տանել, որ արագ արձագանքման գործիքներ են տրամադրված: Եթե դուք ցանկանում եք ներառել գլոբալ փոփոխականները PHP, դուք կարող եք օգտագործել հետեւյալ գործիքները `եթե մենք գիտենք, թե ինչ է միջակայքը արժեքը ձեռք բերել, դա հնարավոր է գրանցել մի սցենար է, ստուգելու, սա է խաղում: Իհարկե, դա նաեւ չի երաշխավորում լիարժեք պաշտպանություն դեմ փոխարինող արժեքներին: Բայց դա չափազանց շատ տարբերակներ զգալիորեն բարդացնում:
Գտնում է փորձերը Դիմահանդես
Եկեք տեսնենք, թե ինչպես Դուք հասկանում եք, գրված ավելի վաղ: PHP - գլոբալ փոփոխականների ֆունկցիայի, որը կտրվի ստորեւ, դուք պետք է հայտարարի ինքներդ. Մենք կարող ենք ասել, որ սա մի տեսակ տնային ուծացման դասի թեման: Այստեղ է, որ կոդը:
Php
եթե (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {
փոստ ( «administrarot@example.com», «Ուշադրություն, որ սցենարը է արձանագրվել փորձ գողության եւ նկարչություն տվյալների հետ», - $ _Server [ 'REMOTE_ADDR']);
echo «Կար մի կոտրված անվտանգության կամ փորձել է դա անել ծանուցել է կառավարչին:».
ելքի;
} Այլ {
}
?>
Այժմ բացատրությունը դրան: Մասամբ C_COOKIE գալիս է մեզ հավաստի աղբյուրից: Է լիովին բավարարվել ըստ որոնց արդյունքում ակնկալվում է, մենք ստուգել իր արժեքը, եւ այդ մասին ծանուցում է ադմինիստրատորին դեպքում խնդիրներ. Եթե դա չի գալիս, ապա ոչ մի գործողություն եւ չի պետք է կատարել: Դուք պետք է հասկանալ, որ պարզապես հաշմանդամության register_globals հրահանգ չի կատարել ձեր կոդը ապահով. Հետեւաբար, ցանկացած փոփոխական, որը ստանում է սցենար ից օգտվող պետք է ստուգել ակնկալվող արժեքի.
եզրափակում
Այստեղ, ընդհանուր առմամբ, եւ ամեն ինչ Ձեզ անհրաժեշտ է իմանալ մասին գլոբալ փոփոխականների հաջողությամբ եւ անվտանգ օգտագործել դրանք իրենց աշխատանքի. Իհարկե, պետք է ասել, որ կա մի ամբողջական երաշխիք, որ ոչ ոք չի օգտագործել նրանց չի կարող հարձակվողները անընդհատ բարելավել իրենց մեթոդներն ու հմտությունները: Այն է, հետեւաբար ցանկալի է սահմանափակել առավելագույն օգտագործումը գլոբալ փոփոխականների օրենսգրքի: Բարեբախտաբար, կառուցվածքը եւ նախագծման հատկանիշները այս ծրագրավորման լեզվի, կարող է հասնել այս նպատակին: Հաջողություն!
Similar articles
Trending Now