RekenaarsSagteware

PHP globale veranderlike in die funksie. Maak 'n globale veranderlike in PHP

Om 'n volledige webwerf, wat het 'n groot funksies wat jy nodig het om 'n baie weet te skep. Maar wat kan hom werklik uniek maak - dit is PHP. Die globale veranderlike in die programmeertaal is nie baie dikwels gebruik, maar soms weet hoe dit werk, soms is dit nodig. Dit is die studie van hoe dit is en hoe dit werk, gaan ons doen in hierdie artikel.

omvang

So noem die konteks waarin die veranderlike en bepaal. In die meeste gevalle, hulle het net een omvang. Wanneer PHP globale veranderlikes uit ander lêers gelaai, dan is dit dalk inklusiewe (sluit) en vereis nie (vereis).

By verstek, is hulle beperk tot die plaaslike funksie omvang. En hoe om veranderlike gesien lêers te maak in sy grense, wat meer en kan gebruik? Vir hierdie doel, en word verskaf in die PHP globale veranderlikes.

Die term "globale"

En hier is hoe om te verklaar 'n globale veranderlike PHP? In die bereiking van hierdie doel sal ons help om die woord "globale". Dit is nodig om te plaas in die voorkant van die veranderlike wat jy wil om 'n globale (narimer, globale «Die veranderlike") maak.

Na die implementering van so 'n aanduiding is, sal die data in staat wees om te werk met 'n lêer. As iewers is daar verwysings na hierdie veranderlike, sal die program altyd aandag gee aan die globale weergawe.

Waarom so 'n vreemde taal? Die feit dat op dieselfde tyd is daar dalk 'n plaaslike weergawes. Maar hulle sal uitsluitlik aangewend mag word vir die lêers waar aangekondig. En vir al die res sal optree globale veranderlikes PHP klas. Daarom moet jy versigtig wees. En dat daar geen twyfel nie, hier is 'n voorbeeld van hoe hulle lyk: globale a.

Want as 'n lêer toegang tot 'n aantal veranderlikes sal hê, sal dit veroorsaak dat hulle bots. Maar ons kan nie met sekerheid sê - plaaslike of globale veranderlike lees of geheel en al misluk. So, as dit is om te registreer in 'n funksie, dit moet nie 'n probleem wees. Maar die gebruik van 'n veranderlike vir sy grense te problematies wees. Daarom is die struktuur van die opstel van die kode wat nodig is om fyn dophou en seker te maak dat nêrens is daar selfs 'n voorvereiste om die genoemde konflik ontstaan.

Nog 'n verpersoonliking van die opname

Is dit moontlik in PHP om 'n globale veranderlike in 'n ander manier te skep? Ja, selfs een. Eerstens, laat ons kyk na die $ GLOBALS. Dit is 'n assosiatiewe skikking. Die sleutel tot dit - is die naam. As die waarde van die inhoud tree op as 'n globale veranderlike. Dit sal opgemerk word dat die skikking na die aankondiging bestaan in enige omvang. Dit gee rede om dit te glo superglobal. Dit lyk so: $ GLOBALS [ 'n veranderlike '].

Gedefinieerde / superglobals

In elke programmeertaal daar is 'n paar name wat gehuur vir 'n paar van sy funksies. Daarom, om te skep in PHP globale veranderlikes met dieselfde naam sal nie werk nie.

Dit programmeertaal het sy eie kenmerke. So, is dit belangrik dat die gedefinieerde veranderlikes hier nie die installering van "super", dit wil sê hulle is nie beskikbaar in alle plekke. Hoe kan ek dit regmaak? Om gedefinieerde veranderlikes beskikbaar was op 'n sekere plaaslike area, moet dit soos volg :. Globale «Veranderlike verklaar" Dit lyk dieselfde te wees as vantevore gesê het, reg? Dit is waar, maar nie heeltemal. Kom ons kyk na al "baklei" 'n voorbeeld:

  • globale $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'naam'].

Jy voel die verskil tussen hulle? Let daarop dat in PHP globale veranderlikes nie noodwendig hoef te word binne die funksie. Dit kan selfs in 'n lêer wat ingesluit is in dit geplaas word.

Links en veiligheid

Soos jy kan sien, in PHP skep 'n globale veranderlike is nie 'n probleem. Maar is daar 'n bepaalde relatiewe skakels? Ja, daar kan onverwagte gedrag wees wanneer die gebruik van globale. Maar voor dit, 'n bietjie backstory.

In weergawe 4.2.0 die richtlijn by verstek register_globals verander van on-staat af. Vir die meeste gebruikers, dit is nie baie belangrik nie, maar tevergeefs. Na alles, dit direkte invloed op die veiligheid van die ontwikkelde produk. As jy nodig het om te maak die veranderlike globale, PHP-richtlijn op hierdie parameter is nie direk geraak word. Tog kan dit verkeerd gebruik reeds skep presedente sekuriteit.

So as register_globals aangeskakel, voor die uitvoering van die geskrewe kode geïnisialiseer die verskillende veranderlikes wat benodig word, byvoorbeeld om HTML-vorms te stuur. Daarom is daar besluit om dit af te skakel.

Hoekom is die toestand van hierdie richtlijn in PHP globale veranderlike danke? Die feit is dat wanneer die staat van die ontwikkelaars nie altyd doen met sekerheid kan hulself die vraag beantwoord van waar dit vandaan kom. Aan die een kant is dit makliker om die kode te skryf. Maar aan die ander kant - dit is 'n veiligheidsrisiko. Daarom, om foute, sowel as data meng vermy en richtlijn is afgeskakel.

Kom ons kyk nie / veilige kode, sowel as hoe om gevalle waar die aankondiging van die globale PHP veranderlike gaan gepaard met pogings om 'n gepeuter met data op te spoor. Dit is nodig om nie net te skep pragtige, maar ook stadig maar seker besig om webwerwe wat nie die eerste beskikbare persoon hoef te kraak.

kwaadwillige kode

Kom ons stel dat veranderlike is waar vir diegene wat gemagtig het:

indien (authenticate_user ()) {
$ Magtig = true;
}

indien ($ magtig) {
sluit "/highly/sensitive/data.php";
}

In hierdie toestand, kan die veranderlike outomaties gestel word. Ag geneem word dat die data kan eenvoudig vervang, en die bron van hul oorsprong is nie stel, dan iemand kan so 'n toets te slaag en voorgee om iemand anders te wees. As jy wil, kan die aanvaller (of net nuuskierig, maar onervare persoon) benadeel, ons logika.

As ons die waarde van die richtlijn te verander, sal hierdie kode korrek te werk, soos ons vereis. Maar inisialisering van veranderlikes is nie net 'n goeie toon in die ontwikkeling, maar ook gee vir ons 'n sekere waarborg van die stabiliteit van die script.

Betroubare weergawe van die kode

jy kan afskakel of voorskrifte te werk, of 'n meer komplekse kode om hierdie doel te bereik voorskryf. Byvoorbeeld, soos volg:

indien (isset ($ _ SESSIE [ 'username'])) {

eggo "Hallo {$ _ SESSIE [ 'username']} ";

} Else {

eggo "Hallo Guest
";
eggo "Welkom gebruiker!";

}

Maak 'n vervanging in hierdie geval, sal daar moeilik wees. Maar nog steeds - moontlik. Om dit te doen, moet jy sorg dat die vinnige reaksie gereedskap verskaf neem. As jy wil globale veranderlikes in PHP sluit, kan jy die volgende hulpmiddels gebruik: as ons weet wat die omvang is die verkry waarde, is dit moontlik om 'n script om hierdie gaan met 'n wedstryd te registreer. Natuurlik is dit ook nie waarborg volle beskerming teen vervanging waardes. Maar dit is te veel opsies aansienlik bemoeilik.

Vind pogings om maskerade

Kom ons kyk hoe jy vroeër verstaan geskryf. In PHP globale veranderlikes in die funksie wat onder gegee word, sal jy nodig het om jouself te verklaar. Ons kan sê dat hierdie is 'n soort van huiswerk op die opname van die les onderwerp. Hier is die kode:

indien (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Elseif (isset ($ _ KRY [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

pos ( "administrarot@example.com", "Aandag, die script is aangeteken poging tot inbraak en peuter met data", $ _SERVER [ 'REMOTE_ADDR']);
eggo "Daar was 'n gebreekte veiligheid of poog om dit te doen die Administrateur in kennis gestel.";
uitgang;

} Else {
}
?>

Nou verduideliking daarvan. Deels C_COOKIE tot ons kom uit 'n betroubare bron. Om ten volle tevrede volgens die verwagte resultaat, gaan ons die waarde daarvan in kennis stel en die administrateur in geval van probleme. As dit kom nie, dan geen aksie en het nie nodig gehad om te maak. Jy moet verstaan dat net die aanskakel register_globals richtlijn maak nie jou kode is veilig. Daarom, enige veranderlike wat 'n script van die gebruiker ontvang, moet nagegaan word vir die verwagte waarde.

gevolgtrekking

Hier, in die algemeen, en alles wat jy nodig het om te weet oor die globale veranderlikes om hulle suksesvol en veilig te gebruik in hul werk. Natuurlik, om te sê dat daar 'n volledige waarborg dat niemand sal gebruik hulle kan nie - aanvallers is voortdurend die verbetering van hul metodes en vaardighede. Dit is dus wenslik om die maksimum gebruik van globale veranderlikes in die kode te beperk. Gelukkig kan die struktuur en ontwerpeienskappe van hierdie programmeertaal hierdie doel te bereik. Sterkte!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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