Počítače, Softvé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
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"
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
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']} b>";
} Else {
echo "Dobrý deň, Hodnotenie b>
";
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:
Php
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