PočítačeSoftvér

PHP globálne premenné vo funkcii. Vykonať globálne premenné v PHP

Ak chcete vytvoriť úplný web, ktorý má rozsiahle funkcie, ktoré potrebujete vedieť veľa. Ale čo ho skutočne unikátny - je to PHP. Globálne premenné v programovacom jazyku sa nepoužíva príliš často, ale niekedy vedieť, ako to funguje, niekedy je to nevyhnutné. Že je štúdia o tom, čo to je a ako to funguje, budeme robiť v tomto článku.

rozsah

Tak zavolaj kontext, v ktorom určí premenná a. Vo väčšine prípadov majú len jeden odbor. Keď PHP globálne premenné načítané z iných súborov, potom to môže byť inclusive (vrátane) a potreby (vyžadujú).

V predvolenom nastavení sú obmedzené na miestne rozsah funkcií. A ako sa robí variabilné videli súbory vo svojich hraniciach, ktoré by mohli viac a používať? Za týmto účelom, a je k dispozícii v globálne premenné PHP.

Kľúčové slovo "globálny"

A tu je, ako deklarovať globálnej premennej PHP? Pri dosahovaní tohto cieľa nám pomôže slovo "globálny". Je nutné umiestniť pred premenné, ktoré chcete, aby sa globálne (narimer, globálne «premenná").

Po zavedení takéhoto označenia, dáta budú schopní pracovať s ľubovoľného súboru. Ak niekde existujú zmienky o tejto premennej, bude vždy venovať pozornosť na globálnej verzie.

Prečo taký divný jazyk? Skutočnosť, že zároveň môže byť lokálna verzia. Ale budú k dispozícii výhradne pre tieto súbory, ak oznámené. A pre všetky ostatné budú konať globálne premenné PHP trieda. Preto musíte byť opatrní. A že nebolo pochýb o tom, tu je príklad toho, ako vyzerajú: globálne a.

Vzhľadom k tomu, keď jeden súbor bude mať prístup k celej rade premenných, bude to spôsobiť ich konfliktu. Ale nemôžeme s istotou povedať - je lokálne alebo globálne premenné čítať alebo úplne zlyhá. Takže, ak je sa zaregistrovať do funkcie, to by nemal byť problém. Ale použitie premenné pre svoje hranice za problematické. Preto je štruktúra vypracovanie kódexu nevyhnutné pozorne sledovať a uistite sa, že nikde nie je ani podmienkou k uvedenému stretu vznikol.

Ďalšie vyhotovenia záznamu

Je možné v PHP vytvoriť globálne premenné iným spôsobom? Áno, dokonca ani jedna. Po prvé, poďme zvážiť $ GLOBALS. To je asociatívne pole. Kľúčom k tomu - je názov. Ako hodnota obsahu sa správa ako globálne premenné. Je potrebné poznamenať, že viacero po oznámení existuje v akomkoľvek rozsahu. To dáva dôvod sa domnievať, že to superglobal. Vyzerá to tak: $ GLOBALS [ 'Premenná'].

Preddefinované / superglobals

V každom programovacom jazyku existujú niektoré názvy, ktoré sú prenajaté na niektoré zo svojich funkcií. Ak chcete teda vytvoriť v PHP globálne premenné s rovnakým názvom, nebude fungovať.

Tento programovací jazyk má svoje vlastné charakteristiky. Tak, to je dôležité, že vopred definované premenné tu nie sú inštaláciu "super", to znamená, že nie sú k dispozícii vo všetkých lokalitách. Ako to môžem opraviť? Aby bol k dispozícii preddefinované premenné v určitej miestnej oblasti, musí byť deklarovaná takto:. Globálne «premenná" Zdá sa, že rovnako ako predtým povedal, že jo? To je pravda, ale nie tak celkom. Poďme sa pozrieť na už "bojuje" príklad:

  • Globálne $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'name'].

Máte pocit, že je medzi nimi rozdiel? Všimnite si, že v PHP globálne premenné nemusí nutne byť použité v rámci funkcie. To môže dokonca byť umiestnené v súbore, ktorý je v nej zahrnutá.

Odkazy a bezpečnosť

Ako vidíte, v PHP vytvoriť globálnu premenná nie je problém. Ale je tu nejaké konkrétne relatívne odkazy? Áno, môže byť neočakávané správanie pri použití globálnej. Ale pred tým, trochu backstory.

Vo verzii 4.2.0 Smernica štandardne register_globals zmenila z zapnutom stave do vypnutého stavu. Pre väčšinu užívateľov to nie je príliš dôležité, ale márne. Koniec koncov, je to má priamy vplyv na bezpečnosť vyvíjaného výrobku. Ak potrebujete, aby sa premenná globálne, PHP, smernica o tomto parametri nie je priamo ovplyvnená. Avšak, nesprávne použitie môže už vytvárať bezpečnosť precedensy.

Takže ak register_globals zapnutá, pred uzavretím písomnej kód inicializuje rôzne premenné, ktoré sú potrebné, napríklad pre odosielanie HTML formulárov. Z tohto dôvodu bolo rozhodnuté vypnúť.

Prečo je stav tejto smernice v PHP globálne premenné dlhuje veľa? Faktom je, že keď štát vývojári nie vždy s istotou by samy o sebe odpovedať na otázku, odkiaľ pochádza. Na jednej strane je jednoduchšie písať kód. Ale na druhej strane - to je bezpečnostné riziko. Z tohto dôvodu, aby sa zabránilo chybám, ako aj údaje o miešacích a smernica bola zakázaná.

Teraz sa pozrime nie / bezpečnostný kód, rovnako ako, ako rozpoznať prípady, keď je oznámenie o globálne premenné PHP sprevádzaný pokusy o manipuláciu s dátami. To je nevyhnutné pre vytvorenie nielen krásna, ale tiež neustále pracuje stránky, ktoré nepraskajú prvé dostupné osobe.

škodlivý kód

Poďme nastavená premenná platí aj pre tých, ktorí boli oprávnení:

if (authenticate_user ()) {
$ Autorizácia = true;
}

if ($ Authorize) {
zahŕňajú "/highly/sensitive/data.php";
}

V tomto stave, premenné možné nastaviť automaticky. Vzhľadom k tomu, že dáta možno jednoducho vymeniť, a zdroj ich pôvodu nie je nakonfigurovaný, potom každý môže prejsť taký test a predstierať, že je niekto iný. Ak je to žiaduce, útočník (alebo len zvedavý, ale neskúsený človek) môže byť narušená, našu logiku.

Ak zmeníme hodnotu smernice, bude tento kód správne fungovať, ako sme požadovali. Ale inicializácia premenných je nielen dobrý tón pri programovaní, ale tiež nám dáva určitú záruku stability skriptu.

Spoľahlivé verzia kódu

môžete vypnúť alebo pracovať smerníc, alebo nariadiť zložitejšie kód na dosiahnutie tohto cieľa. Napríklad takto:

if (isset ($ _ BLOK [ 'užívateľské meno'])) {

echo "Dobrý deň, {$ _ BLOK [ 'užívateľské meno']} ";

} Else {

echo "Dobrý deň, Hodnotenie
";
echo "Welcome užívateľa!";

}

Striedanie v tomto prípade, bude ťažké. Ale napriek tomu - je to možné. K tomu je potrebné dbať na to, že rýchla reakcia nástroje boli poskytnuté. Ak chcete zahrnúť globálne premenné v PHP, môžete použiť nasledujúce nástroje: ak vieme, čo je rozsah je hodnota získaná, je možné zaregistrovať skript kontrolovať to s zápas. Samozrejme, že tiež nezaručuje úplnú ochranu proti zámene hodnôt. Ale to je príliš veľa možností, výrazne komplikujú.

Nájde pokusy maškarné

Pozrime sa, ako ste pochopili písaný skôr. V PHP globálne premenné vo funkcii, ktoré budú uvedené nižšie, budete musieť deklarovať sami. Dá sa povedať, že sa jedná o druh domácich úloh na asimiláciu téme lekcie. Tu je kód:

if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} ElseIf (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

mailu ( "administrarot@example.com", "Pozor, skript bol zaznamenaný pokus o vlámanie a manipuláciu s dátami", $ _SERVER [, REMOTE_ADDR ']);
echo "Došlo k rozbité bezpečnostné alebo sa pokúšať tak urobiť oznámené správcu.";
exit;

} Else {
}
?>

Teraz vysvetlenie k nemu. Čiastočne C_COOKIE k nám prichádza zo spoľahlivého zdroja. Ak chcete plne spokojný podľa očakávaného výsledku, kontrolujeme jeho hodnotu a informovať správcu v prípade problémov. Ak to nepríde, potom žiadna akcia a nemuseli robiť. Musíte pochopiť, že jednoducho zakázanie direktíva register_globals nerobí váš kód je bezpečná. Preto každá premenná, ktorá prijme skript od užívateľa, je potrebné skontrolovať očakávanou hodnotou.

záver

Tu všeobecne, a všetko, čo potrebujete vedieť o globálnych premenných úspešne a bezpečne používať v ich práci. Samozrejme, že tam je plná záruka, že nikto nebude používať nich nemôže - útočníci sa neustále zlepšuje svoje metódy a zručnosti. Je preto žiaduce obmedziť maximálne využitie globálnych premenných v kóde. Našťastie, štruktúra a konštrukčné prvky tohto programovacieho jazyka môže dosiahnuť tento cieľ. Veľa šťastia!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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