nisfarm.ru

PHP je globální proměnná funkce. Proveďte globální proměnnou v PHP

Chcete-li vytvořit plnohodnotné webové stránky, které mají široké funkce, musíte o tom vědět hodně. Ale co mu může dát skutečnou jedinečnost, je PHP. Globální proměnná v tomto programovacím jazyce se nepoužívá velmi často, ale někdy je třeba vědět, jak to funguje. Studiem toho, co to je a jak to funguje, se podíváme do tohoto článku.

Rozsah

php globální proměnnéTo je kontext, ve kterém je proměnná definována. Ve většině případů mají pouze jeden rozsah. Když v PHP jsou globální proměnné načteny z jiných souborů, pak mohou být zahrnuty (zahrnují) a požadované (vyžadují).

Ve výchozím nastavení jsou omezeny místním rozsahem funkce. A jak chcete, aby byla proměnná viděna soubory mimo její hranice a mohla by být použita také? PHP také poskytuje globální proměnnou.

Klíčové slovo "globální"

php globálních proměnnýchAle jak deklarovat globální proměnnou PHP? Při dosahování tohoto cíle nám pomůže slovo "globální". Musíte ji umístit před proměnnou, kterou chcete vytvořit globální (například globální "Proměnná").

Po provedení takové instrukce může každý soubor pracovat s daty. Pokud někde existují odkazy na tuto proměnnou, program bude vždy věnovat pozornost globální verzi.

Proč taková podivná formulace? Faktem je, že současně s tím mohou existovat lokální verze. Budou však k dispozici pouze v těch souborech, kde jsou deklarováni. A pro všechny ostatní budou fungovat globální proměnné třídy PHP. Proto musíte být opatrní. A není pochyb o tom, tady je příklad toho, jak vypadají: globální a.

Protože pokud má jeden soubor přístup k několika proměnným, způsobí to jejich konflikt. Zde ale nelze přesně říct - bude přečteno místní nebo globální proměnná, nebo se vyskytne chyba. Takže pokud je napsáno uvnitř funkce, pak by neměly být žádné problémy. Ale použití proměnné za její hranice bude problematické. Proto je nutné pečlivě sledovat strukturu kompilace programového kódu a ujistit se, že nikde neexistuje ani předpoklad pro vznik konfliktu.

Další možnost nahrávání




deklarovat globální proměnnou phpMohu vytvořit globální proměnnou v PHP jiným způsobem? Ano, ani jeden. Nejprve se podívejme na $ GLOBALS. Toto je asociativní pole. Klíčem v něm je jméno. Hodnota je obsah globální proměnné. Je třeba poznamenat, že toto pole po deklaraci existuje v jakémkoli rozsahu. To dává důvod považovat to za superglobal. Vypadá to takto: $ GLOBALS [`Variable`].

Předdefinované / superglobály

V každém programovacím jazyce existují jména, která jsou charakterizována pro své jednotlivé funkce. Proto nelze vytvářet globální proměnné v PHP se stejným názvem.

V tomto programovacím jazyce existují speciální funkce. Takže je důležité, že předdefinované proměnné zde nemají "super" nastavení, to znamená, že nejsou k dispozici na všech místech. Jak mohu to napravit? Aby mohla být předdefinovaná proměnná k dispozici v některé místní oblasti, musí být deklarována takto: globální "Proměnná". Zdá se, že je to stejné, jak bylo řečeno, že? Je to pravda, ale ne opravdu. Podívejme se na příklad "boj":

  • globální $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [`jméno`].

Cítíte rozdíl mezi nimi? Všimněte si, že v PHP není globální proměnná nutná v rámci funkce. Může se obecně nacházet v souboru, který je v něm obsažen.

Odkazy a zabezpečení globální php proměnná

Jak můžete vidět, v PHP vytváření globální proměnné není problém. Existují však nějaké funkce týkající se odkazů? Ano, při použití globálního může být neočekávané chování. Ale před tím málo pozadí.

Ve verzi 4.2.0 se implicitně změnila direktiva register_globals z vypnuto na zapnuto. Pro většinu uživatelů to není příliš důležité, ale marné. Koneckonců to přímo ovlivňuje bezpečnost vyvíjeného produktu. Pokud potřebujete vytvořit globální proměnnou, nebude směrnice PHP o tomto parametru přímo ovlivňovat. Ale nesprávné použití může již vytvořit bezpečnostní precedens.

Takže pokud je register_globals zapnutá, před spuštěním napsaného kódu jsou inicializovány různé proměnné, které jsou například nutné k odesílání formulářů HTML. Proto bylo rozhodnuto ji vypnout.

Proč je stav této směrnice ve php globální proměnnou kvůli mnoha? Faktem je, že pokud je stát zapnutý, vývojáři nejsou vždy schopni samostatně odpovědět na otázku, odkud pocházejí. Na jedné straně to usnadnilo psaní kódu. Ale na druhé straně to vytvořilo bezpečnostní hrozbu. Proto, aby se zabránilo chybám, stejně jako míchání dat a směrnice byla zakázána.

A teď se podíváme na nezabezpečený kód a také na to, jak rozpoznat případy, kdy je prohlášení globální proměnné PHP doprovázeno pokusy o nahrazení dat. To je nezbytné, aby se vytvořily nejen krásné, ale i stabilní pracoviště, které nevytvářejí první osobu, která se setkává.

Nebezpečný kód

php globálních proměnných ve funkci

Zjistíme, že proměnná je pravdivá pro oprávněné osoby:

pokud (authenticate_user ()) {
$ authorize = true-
}}

pokud ($ authorize) {
zahrnout "/highly/sensitive/data.php"-
}}

V tomto stavu lze proměnnou nastavit automaticky. Vzhledem k tomu, že údaje mohou být jednoduše nahrazeny a zdroj jejich původu není stanoven, může každá osoba předložit takovou kontrolu a vydávat se za někoho jiného. Pokud je to požadováno, může útočník (nebo jen zvědavý, ale nezkušený člověk) porušovat logiku skriptu.

Pokud změníte hodnotu směrnice, pak tento kód může fungovat správně, jak to potřebujeme. Inicializace proměnných je však nejen dobrým tónem v programování, ale také nám dává jisté záruky stability scénáře.

Spolehlivá verze kódu

K dosažení tohoto cíle můžete buď vypnout práci směrnice nebo zaregistrovat složitější kód. Zde je například následující:

pokud (isset ($ _ SESSION [`username`]))) {

echo "Dobrý den {$ _SESSION [`uživatelské jméno`]}"-

} else {

echo "Dobrý den Host
"-
echo "Pozdravy, uživatel!" -

}}

V takovém případě bude obtížné provést náhradu. Ale je to stále možné. K tomu je třeba dbát na to, aby byly zajištěny nástroje rychlé reakce. 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ě to také nezaručuje plnou ochranu proti nahrazení hodnot. Zde se ale značně komplikuje hledání možných možností.

Snaží se o nahrazení

deklarovat globální proměnnou php

Zkontrolujte, jak jste pochopili, co jste napsali dříve. V PHP globálních proměnných ve funkci, která bude uvedena níže, budete muset prohlásit sebe. Lze říci, že to je nějakým způsobem úkolem domácí práce pro zvládnutí tématu lekce. Zde je kód:

pokud (isset ($ _ COOKIE [`C_COOKIE`])) {
} ElseIf (isset ($ _ GET [ `C_COOKIE`]) || isset ($ _ POST [ `C_COOKIE`])) {

mailu ( "[email protected]", "Pozor, skript byl zaznamenán pokus o údaje hacking a spoofing", $ _SERVER [ `REMOTE_ADDR`]) -
echo "Zabezpečení bylo ohroženo nebo se o to pokoušelo." Administrátor oznámil "
exit-

} else {
}}
?>

A teď je to vysvětlení. Proměnná C_COOKIE pochází ze spolehlivého zdroje. Aby bylo možné plně ověřit očekávaný výsledek, zkontrolujeme jeho hodnotu av případě problémů o tom informujte správce. Pokud nic nepřijde, není třeba podniknout žádné kroky. Mělo by být zřejmé, že jednoduše zakázání direktivy register_globals nezabezpečuje váš kód. Proto musí být pro očekávanou hodnotu zkontrolována libovolná proměnná, kterou skript obdrží od uživatele.

Závěr

php vytvořit globální proměnnou

To obecně a vše, co je nutné vědět o globálních proměnných, aby bylo možné úspěšně a bezpečně používat je ve svých aktivitách. Samozřejmě, když říkáme, že existuje plnohodnotná záruka, že ji nikdo nemůže použít - krekery neustále zlepšují své metody a dovednosti. Proto je žádoucí omezit použití globálních proměnných v kódu na maximum. Naštěstí struktura a vlastnosti konstrukce tohoto programovacího jazyka mohou tento cíl dosáhnout. Hodně štěstí!

Sdílet na sociálních sítích:

Podobné
© 2021 nisfarm.ru