ComputereSoftware

PHP global variabel i funktionen. Lav en global variabel i PHP

For at oprette en fuld site, som har bred funktionalitet, du har brug for at vide en masse. Men hvad der kan gøre ham helt unik - det er PHP. Den globale variabel i programmeringssprog er ikke brugt meget ofte, men nogle gange at vide, hvordan det virker, nogle gange er det nødvendigt. Det er studiet af, hvad det er, og hvordan det virker, vil vi gøre i denne artikel.

anvendelsesområde

Så kalder den sammenhæng, hvori de variable og bestemmes. I de fleste tilfælde, de har kun én rækkevidde. Når PHP globale variabler indlæst fra andre filer, så kan det være inklusiv (inkluderer) og nødvendig (kræver).

Som standard er de begrænset til den lokale funktion rækkevidde. Og hvordan man kan gøre variable set filer i sine grænser, som mere og kunne bruge? Til dette formål, og tilbydes i PHP globale variabler.

Nøgleordet "global"

Og her er hvordan man erklærer en global variabel til PHP? For at opnå dette mål vil hjælpe os ordet "global". Det er nødvendigt at placere foran den variabel, du ønsker at gøre en global (narimer, global «variablen").

Efter gennemførelsen af en sådan indikation, vil data være i stand til at arbejde med en hvilken som helst fil. Hvis et eller andet sted er der henvisninger til denne variabel, vil programmet altid være opmærksomme på den globale version.

Hvorfor sådan en mærkelig sprog? Det faktum, at på samme tid kan der være lokale versioner. Men de vil være til rådighed udelukkende for de filer, hvor annonceret. Og for alle de andre vil handle globale variabler PHP klasse. Derfor skal du være forsigtig. Og at der ikke var nogen tvivl om, her er et eksempel på, hvordan de ser ud: global a.

For hvis en fil vil have adgang til en række variable, vil det få dem til at være i strid. Men vi kan ikke sige med sikkerhed - lokal eller global variabel læses eller helt svigter. Så hvis det er at registrere i en funktion, bør det ikke være noget problem. Men brugen af en variabel for sine grænser at være problematisk. Derfor er strukturen i udarbejdelsen af koden nødvendigt nøje at overvåge og sikre, at ingen steder er der endda en forudsætning for den nævnte konflikt opstod.

En anden udførelsesform af optagelsen

Er det muligt i PHP at skabe en global variabel på en anden måde? Ja, ikke engang en. Først, lad os overveje $ GLOBALS. Dette er et associativt array. Nøglen til det - er navnet. Da værdien af indholdet fungerer som en global variabel. Det skal bemærkes, at den vifte efter annonceringen eksisterer i nogen omfang. Dette giver grund til at tro det superglobale. Det ser så: $ GLOBALS [ 'variabel'].

Foruddefinerede / superglobale variabler

I hvert programmeringssprog der er nogle navne, der chartrede for nogle af sine funktioner. Derfor, for at skabe i PHP globale variabler af samme navn vil ikke fungere.

Dette programmeringssprog har sine egne karakteristika. Så er det vigtigt, at de foruddefinerede variabler her ikke er ved at installere "super", det vil sige, de er ikke tilgængelige alle steder. Hvordan kan jeg ordne det? Til var foruddefinerede variabler til rådighed på nogle lokale område, må det fastslås som følger :. Global «Variabel" Det synes at være den samme som før fortalt, ikke? Det er sandt, men ikke helt. Lad os se på allerede "kæmper" et eksempel:

  • global $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'navn'].

Du føler forskellen mellem dem? Bemærk, at i PHP globale variabler ikke nødvendigvis skal anvendes inden for funktionen. Det kan endda være placeret i en fil, der er inkluderet i det.

Links og sikkerhed

Som du kan se, i PHP skabe en global variabel er ikke et problem. Men er der nogen særlige relative links? Ja, der kan være uventet adfærd ved brug af global. Men inden da, lidt baggrundshistorie.

I version 4.2.0 ændret direktivet som standard register_globals fra on-tilstand til slukket. For de fleste brugere, dette er ikke meget vigtigt, men forgæves. Efter alt, det direkte påvirker sikkerheden af det udviklede produkt. Hvis du har brug for at gøre den variable globale, PHP-direktiv om denne parameter er ikke direkte berørt. Dog kan forkert brug allerede skabe præcedens sikkerhed.

Så hvis register_globals er slået til, før gennemførelsen af den skriftlige kode initialiseret de forskellige variabler, der er nødvendige, for eksempel til at sende HTML-formularer. Derfor blev det besluttet at slukke den.

Hvorfor er den tilstand af dette direktiv i php global variabel skylder meget? Faktum er, at når staten af udviklerne ikke altid med sikkerhed kunne selv besvare spørgsmålet om, hvor det kom fra. På den ene side, er det lettere at skrive kode. Men på den anden - det er en sikkerhedsrisiko. Derfor, for at undgå fejl, samt data blanding og direktivet er blevet deaktiveret.

Lad os nu se ikke / sikkerhedskode, samt hvordan man kan opdage tilfælde, hvor annonceringen af den globale PHP variabel er ledsaget af forsøg på manipulation med data. Dette er nødvendigt for at skabe ikke kun smukke, men også støt arbejder websteder, der ikke knække den første tilgængelige person.

skadelig kode

Lad os sætte denne variabel er sandt for dem, der har fået tilladelse til:

hvis (authenticate_user ()) {
$ Godkend = true;
}

if ($ Godkend) {
omfatte "/highly/sensitive/data.php";
}

I denne tilstand kan den variable indstilles automatisk. I betragtning af, at de data, der simpelthen kan udskiftes, og kilden til deres oprindelse er ikke indstillet, så alle kan passere en sådan test og foregive at være en anden. Hvis det ønskes, kan angriberen (eller bare nysgerrig, men uerfarne person) blive forringet, vores logik.

Hvis vi ændrer værdien af direktivet, vil denne kode fungerer korrekt, som vi krævede. Men initialisering af variabler er ikke kun en god tone i programmeringen, men også giver os en vis garanti for stabilitet af scriptet.

Pålidelig version af koden

du kan slukke eller arbejde direktiver, eller foreskrive en mere kompleks kode for at nå dette mål. For eksempel sådan her:

if (isset ($ _ SESSION [ 'username'])) {

echo "Hej {$ _ SESSION [ 'username']} ";

} Else {

echo "Hej Gæst
";
echo "Velkommen bruger!";

}

Lav en udskiftning i dette tilfælde, vil der være vanskelig. Men stadig - det er muligt. For at gøre dette, skal du passe på, at den hurtige respons værktøjer blev leveret. Hvis du ønsker at inkludere globale variabler i PHP, kan du bruge følgende værktøjer: hvis vi ved, hvad området er den opnåede værdi, er det muligt at registrere et script til at kontrollere dette med en kamp. Selvfølgelig er det heller ikke garantere fuld beskyttelse mod substitution værdier. Men det er alt for meget indstillinger væsentligt komplicere.

Finder forsøg på at maskerade

Lad os se, hvordan du forstår skrevet tidligere. I PHP globale variabler i den funktion, der vil blive givet nedenfor, skal du erklære dig selv. Vi kan sige, at dette er en form for hjemmearbejde på assimilering af lektionen emne. Her er koden:

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

mail ( "administrarot@example.com", "Opmærksomhed, blev manuskriptet indspillet forsøg på indbrud og manipulation med data", $ _SERVER [ 'REMOTE_ADDR']);
echo "Der var en brudt sikkerhed eller forsøge at gøre det meddelt administrator.";
exit;

} Else {
}
?>

Nu forklaring dertil. Delvist C_COOKIE kommer til os fra en pålidelig kilde. For fuldt ud tilfreds efter det forventede resultat, tjekker vi dens værdi og underrette administratoren i tilfælde af problemer. Hvis den ikke kommer, så ingen handling og behøvede ikke at gøre. Du er nødt til at forstå, at blot invaliderende register_globals direktiv gør ikke din kode er sikker. Derfor vil enhver variabel, der modtager et script fra brugeren, bør kontrolleres for den forventede værdi.

konklusion

Her, i almindelighed, og alt, hvad du behøver at vide om de globale variabler med held og sikkert bruge dem i deres arbejde. Selvfølgelig, at sige, at der er en fuld garanti for, at ingen vil bruge dem kan ikke - angribere forbedrer konstant deres metoder og færdigheder. Det er derfor ønskeligt at begrænse den maksimale udnyttelse af globale variable i koden. Heldigvis kan strukturen og design af denne programmeringssprog nå dette mål. Held og lykke!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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