DatamaskinerProgramvare

PHP global variabel i funksjonen. Lag en global variabel i PHP

Å lage en full side, som har bred funksjonalitet du trenger å vite mye. Men hva kan gjøre ham helt unikt - det er PHP. Den globale variable i programmeringsspråket brukes ikke ofte, men noen ganger for å vite hvordan det fungerer, noen ganger er det nødvendig. Det er studiet av hva det er og hvordan det fungerer, skal vi gjøre i denne artikkelen.

omfang

Så ring i hvilken sammenheng den variable og bestemt. I de fleste tilfeller har de bare ett omfang. Når PHP globale variabler lastet fra andre filer, så kan det være inkluderende (inkluderer) og behov (krever).

Som standard er de begrenset til lokal funksjon omfang. Og hvordan å lage variable sett filer i sine grenser, som kan mer og bruke? For dette formål, og er gitt i PHP globale variabler.

Nøkkelordet "global"

Og her er hvordan man skal erklære en global variabel i PHP? For å oppnå dette målet vil hjelpe oss ordet "global". Det er nødvendig å plassere foran den variabelen som du ønsker å lage en global (narimer, global «Variable").

Etter gjennomføringen av en slik indikasjon, vil dataene være i stand til å arbeide med en hvilken som helst fil. Hvis et sted det er referanser til denne variabelen, vil programmet alltid betale oppmerksomhet på globale versjonen.

Hvorfor en så fremmed språk? Det faktum at samtidig kan det være lokale versjoner. Men de vil være tilgjengelig eksklusivt for disse filene der annonsert. Og for alle de andre vil handle globale variabler PHP klasse. Derfor må du være forsiktig. Og at det var ingen tvil om, her er et eksempel på hvordan de ser ut: global en.

For hvis en fil vil ha tilgang til en rekke variabler, vil det føre dem til å komme i konflikt. Men vi kan ikke si sikkert - lokal eller global variabel blir lest eller helt mislykkes. Så, hvis det er å registrere seg i en funksjon, bør det ikke være noe problem. Men bruken av en variabel for sine grenser til å være problematisk. Derfor, oppbygging av utformingen av koden er nødvendig å følge nøye med og sørge for at ingen steder er det enda en forutsetning for at konflikten oppsto.

En annen utførelsesform av opptaket

Er det mulig i PHP til å lage en global variabel på en annen måte? Ja, ikke engang en. Først, la oss vurdere $ Globals. Dette er en assosiativ array. Nøkkelen til det - er navnet. Som verdien av innholdet fungerer som en global variabel. Det bør bemerkes at rekken etter kunngjøringen eksisterer i noen omfang. Dette gir grunn til å tro det superglobal. Det ser så: $ Globals [ 'variabel'].

Forhåndsdefinerte / superglobals

I alle programmeringsspråk er det noen navn som er chartret for noen av sine funksjoner. Derfor, for å skape i PHP globale variabler med samme navn vil ikke fungere.

Denne programmeringsspråk har sine egne særtrekk. Så, er det viktig at de forhåndsdefinerte variabler her ikke installerer "super", det vil si, de er ikke tilgjengelig alle steder. Hvordan kan jeg fikse det? Til forhåndsdefinerte variabler var tilgjengelig på noen lokale området, må det bli erklært som følger :. Globalt «Variable" Det synes å være den samme som før fortalt, ikke sant? Det er sant, men ikke helt. La oss se på allerede "slåss" et eksempel:

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

Du føler forskjellen mellom dem? Merk at i PHP globale variabler ikke nødvendigvis må brukes i funksjonen. Det kan også bli plassert i en fil som er inkludert i den.

Linker og sikkerhet

Som du kan se, i PHP skape en global variabel er ikke et problem. Men er det noen spesielle relative linker? Ja, det kan være uventet oppførsel når du bruker global. Men før det, litt bakgrunnshistorie.

I versjon 4.2.0 direktivet som standard register_globals endret fra on-stat til off. For de fleste brukere, dette er ikke veldig viktig, men forgjeves. Tross alt, det direkte påvirker sikkerheten til det utviklede produktet. Hvis du trenger å gjøre variabelen global, PHP-direktiv om denne parameteren ikke er direkte berørt. Imidlertid kan feil bruk allerede skape presedens sikkerhet.

Så hvis register_globals er slått på, før gjennomføring av skriftlige etiske initialisert de ulike variablene som er nødvendig, for eksempel for å sende HTML-skjemaer. Derfor ble det besluttet å slå den av.

Hvorfor er tilstanden til dette direktivet i php global variabel skylder mye? Faktum er at når staten utviklerne ikke alltid med sikkerhet kan selv svare på spørsmålet om hvor den kom fra. På den ene siden er det lettere å skrive kode. Men på den andre - det er en sikkerhetsrisiko. Derfor, for å unngå feil, samt data miksing og direktiv er deaktivert.

La oss nå se ikke / sikkerhetskode, samt hvordan å oppdage tilfeller der kunngjøringen av den globale PHP variabel ledsaget av forsøk på manipulering med data. Dette er nødvendig for å skape ikke bare vakker, men også stadig arbeider nettsteder som ikke knekke den første tilgjengelige person.

ondsinnet kode

La oss sette denne variabelen er sant for de som har blitt godkjent:

if (authenticate_user ()) {
$ Godkjenn = true;
}

if ($ autorisere) {
inkludere "/highly/sensitive/data.php";
}

I denne tilstanden, kan variabelen settes automatisk. Tatt i betraktning at dataene kan enkelt byttes ut, og kilden til deres opprinnelse er ikke satt, så alle kan passere en slik test, og later til å være noen andre. Om ønskelig, kan angriperen (eller bare nysgjerrig, men uerfaren person) bli svekket, vår logikk.

Hvis vi endrer verdien av direktivet, vil denne koden fungerer riktig, som vi ønsket. Men initialisering av variabler er ikke bare en god tone i programmering, men også gir oss en viss garanti for stabiliteten i skriptet.

Pålitelige versjonen av koden

du kan slå av eller arbeide direktiver, eller foreskrive en mer kompleks kode for å oppnå dette målet. For eksempel slik:

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

echo "Hallo {$ _ SESJON [ 'brukernavn']} ";

} Else {

echo "Hei gjest
";
echo "Velkommen bruker!";

}

Gjøre et bytte i dette tilfellet, vil det være vanskelig. Men likevel - det er mulig. For å gjøre dette, må du passe på at den raske respons verktøy ble gitt. Hvis du ønsker å inkludere globale variabler i PHP, kan du bruke følgende verktøy: hvis vi vet hva området er innhentet verdi, er det mulig å registrere et skript for å sjekke dette med en fyrstikk. Selvfølgelig, det heller ikke garantere full beskyttelse mot erstatningsverdier. Men det er altfor mye alternativer komplisere.

Finner forsøk på å masquerade

La oss se hvordan du forstår skrevet tidligere. I PHP globale variabler i funksjonen som vil bli gitt nedenfor, må du erklærer deg. Vi kan si at dette er en slags lekser på assimilering av leksjonen emnet. Her er koden:

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

post ( "administrarot@example.com", "Attention, manuset ble registrert forsøk på innbrudd og tukling med data", $ _SERVER [ 'REMOTE_ADDR']);
echo "Det var en ødelagt sikkerhet eller forsøke å gjøre det varslet Administrator.";
exit;

} Else {
}
?>

Nå forklaring til dette. Delvis C_COOKIE kommer til oss fra en pålitelig kilde. For å fullt ut tilfredsstilt i henhold til forventet resultat, vi sjekke sin verdi og varsle administrator i tilfelle problemer. Hvis den ikke kommer, da ingen handling, og ikke trenger å gjøre. Du må forstå at bare deaktivere register_globals Direktivet gjør ikke koden din er sikker. Derfor, eventuell variabel som mottar et skript fra brukeren, bør sjekkes for forventet verdi.

konklusjon

Her, generelt, og alt du trenger å vite om de globale variabler å lykkes og trygt bruke dem i sitt arbeid. Selvfølgelig, for å si at det er en full garanti for at ingen vil bruke dem ikke kan - angripere blir stadig bedre sine metoder og ferdigheter. Det er derfor ønskelig å begrense den maksimale bruken av globale variabler i koden. Heldigvis kan de struktur og design funksjoner i denne programmeringsspråk oppnå dette målet. Lykke til!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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