PočítačeSoftware

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

Tak zavolej kontext, ve kterém určí proměnná a. Ve většině případů mají jen jeden obor. Když PHP globální proměnné načítány z jiných souborů, pak to může být inclusive (včetně) a potřeby (vyžadují).

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í“

A tady je, jak deklarovat globální proměnnou PHP? Při dosahování tohoto cíle nám pomůže slovo „globální“. Je nutné umístit před proměnné, které chcete, aby se globální (narimer, globální «proměnná").

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

Je možné v PHP vytvořit globální proměnné jiným způsobem? Ano, dokonce ani jedna. Za prvé, pojďme zvážit $ GLOBALS. To je asociativní pole. Klíčem k tomu - je název. Jako hodnota obsahu se chová jako globální proměnné. Je třeba poznamenat, že řada po oznámení existuje v jakémkoliv rozsahu. To dává důvod se domnívat, že to superglobal. Vypadá to tak: $ GLOBALS [ 'Proměnná'].

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']} ";

} Else {

echo "Dobrý den, Hodnocení
";
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:

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

 

 

 

 

Newest

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