DatorerProgramvara

PHP global variabel i funktionen. Gör en global variabel i PHP

För att skapa en hel webbplats, som har bred funktionalitet du behöver veta en hel del. Men vad kan göra honom unik - det är PHP. Den globala variabeln i programmeringsspråket används inte så ofta, men ibland att veta hur det fungerar, är det ibland nödvändigt. Det är studiet av vad det är och hur det fungerar, kommer vi att göra i den här artikeln.

omfattning

Så kallar det sammanhang i vilket den rörliga och bestäms. I de flesta fall har de bara en omfattning. När PHP globala variabler laddas från andra filer, kan det vara allomfattande (ingår) och krävde (kräver).

Som standard är de begränsade till den lokala funktionen omfattning. Och hur man gör rörliga sett filer i dess gränser, vilket mer och kunde använda? För detta ändamål, och finns i PHP globala variabler.

Nyckelordet "global"

Och här är hur man deklarerar en global variabel att PHP? För att uppnå detta mål kommer att hjälpa oss ordet "global". Det är nödvändigt att placera framför den variabel som du vill göra en global (narimer, global «variabeln").

Efter genomförandet av en sådan indikation, kommer uppgifterna att kunna arbeta med en fil. Om någonstans finns hänvisningar till denna variabel, kommer programmet alltid vara uppmärksam på den globala versionen.

Varför en sådan konstig språk? Det faktum att samtidigt kan det finnas lokala versioner. Men de kommer att vara tillgängliga enbart för dessa filer där aviserade. Och för alla de andra kommer att agera globala variabler PHP-klass. Därför måste man vara försiktig. Och att det fanns ingen tvekan, här är ett exempel på hur de ser ut: global a.

För om en fil kommer att ha tillgång till ett antal variabler, kommer det att få dem att strida. Men vi kan inte säga säkert - lokal eller global variabel läses eller helt misslyckas. Så, om det är att registrera sig i en funktion, bör det inte vara något problem. Men användningen av en variabel för sina gränser att vara problematisk. Därför struktur utarbetandet av koden som krävs för att noga övervaka och se till att ingenstans är det även en förutsättning för nämnda konflikten uppstod.

Annan utföringsform av registrerings

Är det möjligt i PHP för att skapa en global variabel på ett annat sätt? Ja, inte ens en. Låt oss först betrakta $ GLOBALS. Detta är en associativ array. Nyckeln till det - är namnet. Eftersom värdet av innehållet fungerar som en global variabel. Det bör noteras att arrayen efter tillkännagivandet förekommer i någon omfattning. Detta ger anledning att tro att det superglobal. Det ser så: $ GLOBALS [ 'variabel'].

Fördefinierade / superglobals

I varje programmeringsspråk finns det några namn som chartras för en del av dess funktioner. Därför att skapa i PHP globala variabler med samma namn kommer inte att fungera.

Detta programmeringsspråk har sina egna egenskaper. Så är det viktigt att de fördefinierade variabler här inte installerar "super", det vill säga de är inte tillgängliga på alla platser. Hur kan jag fixa det? Fördefinierade variabler fanns någon lokalt, måste den deklareras på följande sätt :. Global «Variabel" Det verkar vara densamma som tidigare sagt, eller hur? Det är sant, men inte riktigt. Låt oss titta på redan "slåss" ett exempel:

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

Du känner skillnaden mellan dem? Observera att i PHP globala variabler inte nödvändigtvis måste användas inom funktionen. Det kan även placeras i en fil som ingår i den.

Länkar och säkerhet

Som ni kan se i PHP skapa en global variabel är inte ett problem. Men finns det några speciella relativa länkar? Ja, kan det vara oväntat beteende när du använder global. Men innan dess, lite bakgrundshistoria.

I version 4.2.0 direktivet som standard register_globals ändrades från ledande tillstånd till off. För de flesta användare är detta inte så stor roll, men förgäves. När allt kommer omkring, direkt påverkar det säkerheten för den utvecklade produkten. Om du behöver göra variabel global, PHP-direktiv om denna parameter inte påverkas direkt. Emellertid kan felaktig användning redan skapa prejudikat säkerhet.

Så om register_globals är påslagen, innan genomförandet av skriven kod initieras de olika variabler som behövs, till exempel för att skicka HTML-formulär. Därför beslöt man att stänga av den.

Varför är läget för detta direktiv i php globala variabeln beror mycket? Faktum är att när tillståndet av utvecklarna inte alltid med säkerhet kunde själva svara på frågan om var den kom ifrån. Å ena sidan är det lättare att skriva kod. Men å andra sidan - det är en säkerhetsrisk. Därför, för att undvika fel, samt uppgifter blandning och direktiv har inaktiverats.

Låt oss nu titta inte / säkerhetskod, samt hur man upptäcker fall där tillkännagivandet av den globala PHP variabel åtföljs av försök till manipulering med data. Detta är nödvändigt för att skapa inte bara vacker, men också stadigt arbetsplatser som inte knäcka den första tillgängliga person.

skadlig kod

Låt oss sätta den variabeln är sant för dem som har godkänts:

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

if ($ Auktorisera) {
inkluderar "/highly/sensitive/data.php";
}

I detta tillstånd kan den rörliga ställas in automatiskt. Med tanke på att de uppgifter som helt enkelt kan bytas ut, och källan till deras ursprung är inte satt, då vem som helst kan passera ett sådant test och låtsas vara någon annan. Om så önskas kan angriparen (eller bara nyfiken, men oerfaren person) försämras, vår logik.

Om vi ändrar värdet av direktivet kommer denna kod fungerar korrekt, som vi krävs. Men initiering av variabler är inte bara en god ton i planeringen, men också ger oss en viss garanti för stabiliteten i skriptet.

Tillförlitliga versionen av koden

du kan stänga av eller arbeta direktiv eller föreskriva en mer komplex kod för att uppnå detta mål. Till exempel så här:

if (isset ($ _ SESSION [ 'användarnamn'])) {

echo "Hej {$ _ SESSION [ 'användarnamn']} ";

} Else {

echo "Hej gäst
";
echo "Välkommen användare!";

}

Ett byte i detta fall kommer det att bli svårt. Men ändå - möjligt. För att göra detta måste du se till att de snabba svars verktyg tillhandahölls. Om du vill inkludera globala variabler i PHP, kan du använda följande verktyg: om vi vet vad serien är det värde som erhålls, är det möjligt att registrera ett skript för att kontrollera detta med en match. Naturligtvis också garanterar inte ett fullgott skydd mot ersättningsvärden. Men det är för mycket alternativ avsevärt komplicera.

Hittar försök att maskera

Låt oss se hur du förstår skrivit tidigare. I PHP globala variabler i funktion som kommer att anges nedan, måste du deklarera själv. Vi kan säga att detta är en typ av läxor på assimilering av lektionen ämnet. Här är koden:

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

post ( "administrarot@example.com", "Attention, var skriptet registrerades försök till inbrott och manipulering med data", $ _SERVER [ 'REMOTE_ADDR']);
echo "Det var en trasig säkerhet eller försöka göra det meddelas administratören.";
exit;

} Else {
}
?>

Nu förklaring därtill. Delvis C_COOKIE kommer till oss från en tillförlitlig källa. För att till fullo uppfyllt enligt det förväntade resultatet kontrollerar vi dess värde och meddela administratören om det uppstår problem. Om det inte kommer, då ingen åtgärd och inte behöver göra. Du måste förstå att bara inaktivera register_globals direktiv gör inte din kod är säker. Därför, eventuell rörlig som tar emot ett skript från användaren, bör kontrolleras för det förväntade värdet.

slutsats

Här, i allmänhet, och allt du behöver veta om de globala variabler för att framgångsrikt och säkert använda dem i sitt arbete. Naturligtvis för att säga att det finns en fullständig garanti att ingen kommer att använda dem kan inte - angripare ständigt förbättra sina metoder och färdigheter. Det är därför önskvärt att begränsa den maximala användningen av globala variabler i koden. Lyckligtvis kan struktur och design funktioner i programmeringsspråk uppnå detta mål. Lycka till!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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