KompjûtersSoftware

PHP global fariabele yn 'e funksje. Meitsje in wrâldwiid fariabele yn PHP

Om in folsleine site, dat hat brede funksjonaliteit jo witte moatte in protte. Mar wat kin meitsje him echt unyk - it is PHP. De wrâldwide fariabele yn de programmearring taal wurdt net brûkt hiel faak, mar soms om te witten hoe't it wurket, soms is it nedich. Dat is de stúdzje fan wat it is en hoe't it wurket, wy geane te dwaan yn dit artikel.

berik

Sa neame de kontekst dêr't de fariabele en fêststeld. Yn de measte gefallen, se hawwe mar ien strekking. Doe't PHP globale fariabelen laden fan oare bestannen, dan kin it wêze inclusive (ûnder oare) en nedich (nedich).

Standert, se binne beheind ta de lokale funksje omfang. En hoe te meitsje fariabele sjoen triemmen yn syn grinzen, dat koe mear en brûke? Dêrta, en wurdt foarsjoen yn de PHP globale fariabelen.

It kaaiwurd "mondiale"

En hjir is hoe te ferklearje in globale fariabele te Fil? By it berikken fan dit doel sil helpe ús it wurd "globale". It is needsaaklik om te pleatsen tsjinoer de fariabele dat jo wolle meitsje in globale (narimer, globale «De Fariabele").

Nei de útfiering fan sa'n yndikaasje, de gegevens sille wêze kinne om te wurkjen mei gjin triem. As earne der binne ferwizings nei dizze fariabele, it programma sil altyd betelje omtinken op de globale ferzje.

Wêrom sa'n frjemd taal? It feit dat tagelyk der mooglik lokale ferzjes. Mar se sille beskikber wêze eksklusyf foar dy bestannen dêr't bekend makke. En foar alle oaren sil hannelje globale fariabelen PHP klasse. Dêrom moatte jo wêze foarsichtich. En dat der wie gjin twifel, hjir is in foarbyld fan wat se sjogge as: globale a.

Want as ien triem sil ha tagong ta in oantal fariabelen, dan sil se te stridich binne. Mar wy kinne net sizze foar seker - lokale of global fariabele wurdt lêzen of hielendal mislearret. Dus, as it is te registrearjen yn in funksje, it moat gjin probleem. Mar it gebrûk fan in fariabele foar syn grinzen te wêzen problematysk. Dêrom, de struktuer fan 'e redaksje fan' e koade nedich om nau gaten en meitsje wis dat nearne is der sels in betingst foar it neamde konflikt ûntstien.

In oare belichaming van de opname

Is it mooglik yn PHP te meitsjen in globale fariabele yn in oare wize? Ja, der sels ien. As earste, litte wy beskôgje it $ Globals. Dit is in assosjative pronk. De kaai ta it - is de namme. As de wearde fan 'e ynhâld fungearret as in globale fariabele. Dêrby moat opmurken wurde dat de rige nei de oankundiging bestiet yn alle omfang. Dat jout oanlieding ta leauwe superglobal. It sjocht der dus: $ Globals [ 'fariabele'].

Foardefiniearre / superglobals

Yn alle programmeartaal binne der in pear nammen dy't stedsrjochten foar guon fan syn funksjes. Dêrom, om te meitsjen yn PHP wrâldwide fariabelen fan deselde namme sil net wurkje.

Dizze programmeartaal hat syn eigen skaaimerken. Sa, is it wichtich dat de foarôf ynstelde fariabelen hjir net it ynstallearjen "super", dat wol sizze, hja binne net beskikber yn alle lokaasjes. Hoe kin ik fix it? Om foarôf ynstelde fariabelen wie beskikber by guon lokaal gebiet, dan moat ferklearre wurde as folget :. Global «Fariabele" It liket te wêzen itselde as earder sein, rjochts? It is wier, mar net alhiel. Lit ús ris sjen nei al "fjochtsjen" in foarbyld:

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

Jo fiele it ferskil tusken harren? Tink derom dat in PHP globale fariabelen net needsaaklik moatte brûkt wurde binnen de funksje. It kin sels wêze pleatst yn in triem dat is opnaam yn it.

Links en feilichheid

Sa't jo sjen kinne, yn PHP meitsje in globale fariabele is gjin probleem. Mar is der gjin bysûndere relative keppelings? Ja, der kinne ûnferwachte gedrach by it brûken fan globale. Mar foardat dy, in bytsje backstory.

Yn ferzje 4.2.0 de rjochtline standert register_globals feroare fan op-state oan ôf. Foar de measte brûkers, dit is net hiel wichtich, mar om 'e nocht. Ommers, it direkt effekt op de feiligens fan 'e ûntwikkele produkt. At it nedich is om de fariabele globale, PHP-rjochtline op dizze parameter is net direkt beynfloede. Lykwols, ferkearde gebrûk kin al meitsje Précédents feiligens.

Dus as register_globals is ynskeakele, foar de útfiering fan 'e skreaune koade inisjalisearre de ferskillende fariabelen dy't nedich binne, bygelyks te stjoeren HTML-formulieren. Dêrom waard besletten om it ôf.

Wêrom is de steat fan dizze rjochtline yn PHP globale fariabele tanket folle? It feit is dat doe't de steat fan de projektûntwikkelders dogge net altiten mei wissichheid koe sels beäntwurdzje de fraach wêr't it weikaam. Oan 'e iene kant, is it makliker om te skriuwen koade. Mar oan de oare - it is in befeiligingsrisiko. Dêrom, om foar te kommen flaters, lykas ek gegevens mingen en rjochtline is útskeakele.

No litte we ris net / feilich koade, en ek hoe't te spoaren gefallen dêr't de oankundiging fan de globale PHP fariabele wurdt begelaat troch besykjen om tampering mei gegevens. Dit is nedich om te skeppen net allinnich moai, mar ek stadichoan wurkje sites dy't net crack de earste beskikber persoan.

kwea-aardich koade

Lit ús set dat fariabele jildt foar dyjingen dy't binne autorisearre:

as (authenticate_user ()) {
$ Machtigje = true;
}

as ($ machtigje) {
ûnder oaren "/highly/sensitive/data.php";
}

Yn dizze tastân, de fariabele kin ynsteld wurde automatysk. Oerwagende dat de gegevens kinne gewoan wurde ferfongen, en de boarne fan harren komôf is net ynsteld, dan eltsenien kin trochjaan sa'n test en beare dat se immen oars. As winske, de oanfaller (of gewoan nijsgjirrich mar sûnder ûnderfining persoan) kin min sjogge, ús logika.

As wy feroarje de wearde fan de rjochtline, dizze koade sil wurkje goed, as wy nedich. Mar Initialisieren of fariabelen is net allinnich in goede toan yn de programmearring, mar ek jout ús in sekere garânsje fan de stabiliteit fan it skript.

Betroubere ferzje fan de koade

Jo kinne útsette of wurkje rjochtlinen, of foarskriuwe in mear komplekse koade te berikken dit doel. Bygelyks, lykas dit:

as (isset ($ _ sesje [ 'brûkersnamme'])) {

echo "Hello {$ _ sesje [ 'brûkersnamme']} ";

} Else {

echo "Hello Guest
";
echo "Wolkom brûker!";

}

Te ferfangen yn dit gefal, der sil dreech. Mar dochs - mooglik. Om dat dogge moatte soargje dat de snelle antwurd ark waarden foarsjoen. As jo wolle ûnder oaren globale fariabelen yn PHP, kinne jo gebrûk meitsje fan de folgjende ynstruminten: as wy witte wat it berik is de wearde krigen, is it mooglik om te registrearje in skript om te kontrolearjen dat in wedstriid. Fansels, dat ek net garandearje folsleine beskerming tsjin substitúsje wearden. Mar dat is te folle opsjes gâns complicate.

Fynt besocht te masquerade

Lit sjen hoe't jim begripe skreaun earder. Yn PHP globale fariabelen yn de funksje dy't sil jûn wurde hjirûnder, dan moatte jo ferklearje josels. Wy kinne sizze dat dit in soarte fan húswurk op 'e assimilaasje fan' e les ûnderwerp. Hjir is de koade:

as (isset ($ _ koekje [ 'C_COOKIE'])) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

mail ( "administrarot@example.com", "Let op, it skript waard opnommen besykjen by ynbraak en tampering mei gegevens", $ _SERVER [ 'REMOTE_ADDR']);
echo "Der wie in brutsen feiligens of probearrest te dwaan dus meidield de Behearder.";
ôfslach;

} Else {
}
?>

No taljochting dêrby. Foar in part C_COOKIE komt om ús út in betroubere boarne. Om folslein tefreden neffens de ferwachte resultaat, wy kontrolearje syn wearde en hichte bringe fan de behearder yn gefal fan problemen. As it net komme, dan gjin aksje en net hoege te meitsjen. Jo moatte begripe dat gewoan útskeakeljen register_globals rjochtline net meitsje dyn koade is feilich. Dêrom, eltse fariabele dat krijt in skript fan de brûker, moatte wurde kontrolearre op de ferwachte wearde.

konklúzje

Hjir, yn it algemien, en alles jo witte moatte oer it globale fariabelen om mei súkses en feilich brûke se yn harren wurk. Fansels, om te sizzen dat der in folsleine garânsje dat gjinien sil brûke se kinne net - oanfallers wurde hieltyd ferbetterjen fan harren metoaden en feardichheden. It is dêrom winsklik te beheinen de maksimale gebrûk fan wrâldwide fariabelen yn de koade. Gelokkich, de struktuer en foarmjouwing funksjes fan dizze programmeartaal kinne berikke dit doel. Good luck!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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