Počítače, Software
PHP globální proměnné ve funkci. Provést globální proměnné v PHP
Chcete-li vytvořit úplný web, který má rozsáhlé funkce, které potřebujete vědět hodně. Ale co ho skutečně unikátní - je to PHP. Globální proměnné v programovacím jazyce se nepoužívá příliš často, ale někdy vědět, jak to funguje, někdy je to nezbytné. Že je studie o tom, co to je a jak to funguje, budeme dělat v tomto článku.
rozsah
Ve výchozím nastavení jsou omezeny na místní rozsah funkcí. A jak se dělá variabilní viděli soubory ve svých hranicích, které by mohly více a používat? Za tímto účelem, a je k dispozici v globální proměnné PHP.
Klíčové slovo „globální“
Po zavedení takového označení, data budou schopni pracovat s libovolného souboru. Pokud někde existují zmínky o této proměnné, bude vždy věnovat pozornost na globální verze.
Proč takový divný jazyk? Skutečnost, že zároveň může být lokální verze. Ale budou k dispozici výhradně pro tyto soubory, pokud oznámeno. A pro všechny ostatní budou jednat globální proměnné PHP třída. Proto musíte být opatrní. A že nebylo pochyb o tom, zde je příklad toho, jak vypadají: globální a.
Vzhledem k tomu, když jeden soubor bude mít přístup k celé řadě proměnných, bude to způsobit jejich konfliktu. Ale nemůžeme s jistotou říci - je lokální nebo globální proměnné číst nebo úplně selže. Takže, je-li se zaregistrovat do funkce, to by neměl být problém. Ale použití proměnné pro své hranice za problematické. Proto je struktura vypracování kodexu nezbytné pozorně sledovat a ujistěte se, že nikde není ani podmínkou k uvedenému střetu vznikl.
Další provedení záznamu
Předdefinované / superglobals
V každém programovacím jazyce existují některé názvy, které jsou pronajaté k některé ze svých funkcí. Chcete-li tedy vytvořit v PHP globální proměnné se stejným názvem, nebude fungovat.
Tento programovací jazyk má své vlastní charakteristiky. Tak, to je důležité, že předem definované proměnné zde nejsou instalaci „super“, to znamená, že nejsou k dispozici ve všech lokalitách. Jak to mohu opravit? Aby byl k dispozici předdefinované proměnné v určité místní oblasti, musí být deklarována takto :. Globální «proměnná“ Zdá se, že stejně jako předtím řekl, že jo? To je pravda, ale ne tak docela. Pojďme se podívat na již „bojuje“ příklad:
- Globální $ HTTP_POST_VARS;
- echo $ HTTP_POST_VARS [ 'name'].
Máte pocit, že je mezi nimi rozdíl? Všimněte si, že v PHP globální proměnné nemusí nutně být použity v rámci funkce. To může dokonce být umístěny v souboru, který je v ní zahrnuta.
Odkazy a bezpečnost
Jak vidíte, v PHP vytvořit globální proměnná není problém. Ale je tu nějaké konkrétní relativní odkazy? Ano, může být neočekávané chování při použití globální. Ale před tím, trochu backstory.
Ve verzi 4.2.0 Směrnice standardně register_globals změnila z zapnutém stavu do vypnutého stavu. Pro většinu uživatelů to není příliš důležité, ale marně. Koneckonců, je to má přímý dopad na bezpečnost vyvíjeného výrobku. Pokud potřebujete, aby se proměnná globální, PHP, směrnice o tomto parametru není přímo ovlivněna. Nicméně, nesprávné použití může již vytvářet bezpečnost precedenty.
Takže pokud register_globals zapnuta, před uzavřením písemné kód inicializuje různé proměnné, které jsou potřebné, například pro odesílání HTML formulářů. Z tohoto důvodu bylo rozhodnuto vypnout.
Proč je stav této směrnice v PHP globální proměnné dluží hodně? Faktem je, že když stát vývojáři ne vždy s jistotou by samy o sobě odpovědět na otázku, odkud pochází. Na jedné straně je jednodušší psát kód. Ale na druhé straně - to je bezpečnostní riziko. Z tohoto důvodu, aby se zabránilo chybám, jakož i údaje o mísících a směrnice byla zakázána.
Nyní se podívejme ne / bezpečnostní kód, stejně jako, jak rozpoznat případy, kdy je oznámení o globální proměnné PHP doprovázený pokusy o manipulaci s daty. To je nezbytné pro vytvoření nejen krásná, ale také neustále pracuje stránky, které nepraskají první dostupné osobě.
škodlivý kód
Pojďme nastavena proměnná platí i pro ty, kteří byli oprávněni:
if (authenticate_user ()) {
$ Autorizace = true;
}
if ($ authorize) {
zahrnují "/highly/sensitive/data.php";
}
V tomto stavu, proměnné lze nastavit automaticky. Vzhledem k tomu, že data lze jednoduše vyměnit, a zdroj jejich původu není nastaven, pak každý může projít takový test a předstírat, že je někdo jiný. Pokud je to žádoucí, útočník (nebo jen zvědavý, ale nezkušený člověk) může být narušena, naši logiku.
Pokud změníme hodnotu směrnice, bude tento kód správně fungovat, jak jsme požadovali. Ale inicializace proměnných je nejen dobrý tón při programování, ale také nám dává určitou záruku stability skriptu.
Spolehlivé verze kódu
můžete vypnout nebo pracovat směrnic, nebo nařídit složitější kód k dosažení tohoto cíle. Například takto:
if (isset ($ _ BLOK [ 'uživatelské jméno'])) {
echo "Dobrý den, {$ _ BLOK [ 'uživatelské jméno']} b>";
} Else {
echo "Dobrý den, Hodnocení b>
";
echo "Welcome uživatele!";
}
Střídání v tomto případě, bude obtížné. Ale přesto - je to možné. K tomu je třeba dbát na to, že rychlá reakce nástroje byly poskytnuty. Chcete-li zahrnout globální proměnné v PHP, můžete použít následující nástroje: pokud víme, co je rozsah je hodnota získaná, je možné zaregistrovat skript kontrolovat to s zápas. Samozřejmě, že také nezaručuje úplnou ochranu proti záměně hodnot. Ale to je příliš mnoho možností, výrazně komplikují.
Najde pokusy maškarní
Podívejme se, jak jste pochopili psaný dříve. V PHP globální proměnné ve funkci, které budou uvedeny níže, budete muset deklarovat sami. Dá se říci, že se jedná o druh domácích úkolů na asimilaci tématu lekce. Zde je kód:
Php
if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} ElseIf (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {
mailu ( „administrarot@example.com“, „Pozor, skript byl zaznamenán pokus o vloupání a manipulaci s daty“, $ _SERVER [ ‚REMOTE_ADDR‘]);
echo „Došlo k rozbité bezpečnostní nebo se pokoušet tak učinit oznámené správce.“;
exit;
} Else {
}
?>
Nyní vysvětlení k němu. Částečně C_COOKIE k nám přichází ze spolehlivého zdroje. Chcete-li plně spokojen podle očekávaného výsledku, kontrolujeme jeho hodnotu a informovat správce v případě problémů. Pokud to nepřijde, pak žádná akce a nemuseli dělat. Musíte pochopit, že prostě zakázání direktiva register_globals nedělá váš kód je bezpečná. Proto každá proměnná, která přijme skript od uživatele, je třeba zkontrolovat očekávanou hodnotou.
závěr
Zde obecně, a vše, co potřebujete vědět o globálních proměnných úspěšně a bezpečně používat v jejich práci. Samozřejmě, že tam je plná záruka, že nikdo nebude používat nich nemůže - útočníci se neustále zlepšuje své metody a dovednosti. Je proto žádoucí omezit maximální využití globálních proměnných v kódu. Naštěstí, struktura a konstrukční prvky tohoto programovacího jazyka může dosáhnout tohoto cíle. Hodně štěstí!
Similar articles
Trending Now