ՀամակարգիչներԾրագրային ապահովման

PHP գլոբալ փոփոխական գործառույթից: Կատարել է գլոբալ փոփոխական PHP

Է ստեղծել ամբողջական կայքը, որն ունի լայն ֆունկցիոնալությունը Ձեզ անհրաժեշտ է իմանալ, թե շատ. Բայց այն, ինչ կարող է անել, նրան իսկապես եզակի է, դա PHP. Գլոբալ փոփոխական է ծրագրավորման լեզվի չի օգտագործվում, շատ հաճախ, բայց երբեմն պետք է իմանալ, թե ինչպես է այն աշխատում, երբեմն դա անհրաժեշտ է. Որ ուսումնասիրում է, թե ինչ է դա եւ ինչպես է այն աշխատում, մենք պատրաստվում ենք անել, որ այս հոդվածում.

շրջանակ

Այնպես որ, զանգահարել այն համատեքստը, որի փոփոխական եւ վճռական: Շատ դեպքերում, նրանք ունեն միայն մեկ շրջանակը: Երբ PHP գլոբալ փոփոխականներ բեռնված այլ ֆայլեր, ապա դա կարող է լինել ընդգրկուն (ներառում) եւ պահանջվում (պահանջել):

Ըստ նախնականի, նրանք սահմանափակվում են տեղական ֆունկցիայի շրջանակից: Եւ թե ինչպես պետք է անել, փոփոխական տեսել ֆայլերի իր սահմաններից, որը կարող է ավելի ու օգտագործել. Այս նպատակով, եւ տրամադրվում է PHP գլոբալ փոփոխականներ:

Բառերի «գլոբալ»

Եւ այստեղ է, թե ինչպես պետք է հայտարարի է գլոբալ փոփոխական է PHP. Հասնելու այդ նպատակին կօգնի մեզ այդ բառը «գլոբալ»: Անհրաժեշտ է տեղադրել առջեւ փոփոխականի, որ դուք ուզում եք անել մի գլոբալ (narimer, գլոբալ «The փոփոխական»):

Իրականացումից հետո նման նշումով, որ տվյալները կկարողանան աշխատել ցանկացած ֆայլ. Եթե ինչ-որ տեղ կան հղումները այս փոփոխականի, որ ծրագիրը պետք է միշտ ուշադրություն դարձնել համաշխարհային տարբերակի:

Ինչու նման տարօրինակ լեզու. Այն փաստը, որ միեւնույն ժամանակ կարող են լինել տեղական տարբերակները. Բայց նրանք հասանելի կլինի բացառապես այդ ֆայլերի, որտեղ հայտարարված: Եւ բոլոր մնացածը չի գործել, գլոբալ փոփոխականներ PHP դաս. Հետեւաբար դուք պետք է զգույշ լինել. Եւ որ չկար ոչ մի կասկած, ահա մի օրինակ է, թե ինչ են նրանք նայում նման: համաշխարհային a.

Քանի որ, եթե մեկը ֆայլը կունենաք օգտվել մի շարք փոփոխականների, ապա դա կհանգեցնի նրանց հակասում. Բայց մենք չենք կարող վստահ ասել, - տեղական կամ գլոբալ փոփոխական կարդալը կամ ընդհանրապես չի. Այնպես որ, եթե դա է գրանցվել մի գործառույթ, այն պետք է լինի ոչ մի խնդիր: Բայց օգտագործումը փոփոխականի համար իր սահմանների լինել խնդրահարույց: Հետեւաբար, կառուցվածքը մշակման օրենսգրքի անհրաժեշտ է ուշադիր հետեւել եւ համոզվեք, որ ոչ մի տեղ կա, նույնիսկ մի նախապայման է այդ հակամարտության վեր կացաւ.

Մեկ այլ մարմնավորում է ձայնագրության

Արդյոք դա հնարավոր է PHP է ստեղծել գլոբալ փոփոխական այլ կերպ. Այո, ոչ թե նույնիսկ մեկ: Նախ, եկեք համարենք, որ $ GLOBALS: Սա ասոցիատիվ զանգված: Բանալին է, այն է, որ անունը: Քանի որ արժեքը բովանդակությունը հանդես է գալիս որպես գլոբալ փոփոխական. Հարկ է նշել, որ զանգվածը հայտարարությունից հետո գոյություն ունի որեւէ մասշտաբով. Այս հիմք է տալիս ենթադրելու, այն superglobal. Այն նայում, այնքան: $ GLOBALS [ 'փոփոխական'].

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 ($ _ ՆԻՍՏԸ [ 'Մականունը'])) {

Էխո »Բարեւ {$ _ ՆԻՍՏԸ [ 'Մականունը']} ";

} Այլ {

Էխո »Բարեւ Հյուրատետր
";
echo "Welcome օգտվողին!";

}

Դարձնել մի փոխարինումը այս դեպքում, այնտեղ դժվար կլինի: Բայց դեռ - հնարավոր է. Որպեսզի դա անել, դուք պետք է հոգ տանել, որ արագ արձագանքման գործիքներ են տրամադրված: Եթե դուք ցանկանում եք ներառել գլոբալ փոփոխականները 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

 

 

 

 

Newest

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