ÒdinatèLojisyèl

PHP plase varyab nan fonksyon an. Fè yon plase varyab nan PHP

Pou kreye yon sit plen, ki te gen gwo fonctionnalités ou bezwen konnen yon anpil. Men, sa ki ka fè l 'vrèman inik - li se PHP. varyab mondyal la nan lang nan pwogram pa itilize trè souvan, men pafwa yo konnen ki jan li fonksyone, pafwa li se li nesesè. Sa se etid la nan sa li ye ak kijan li fonksyone, nou pral fè nan atik sa a.

sijè ki abòde

Se konsa, rele kontèks la nan ki plase a ak detèmine. Nan pifò ka yo, yo gen sèlman yon sèl dimansyon. Lè PHP varyab mondyal chaje soti nan lòt dosye, Lè sa a, li kapab enklizif (gen ladan) ak obligatwa (mande pou).

Pa default, yo yo limite a sa sèlman sijè ki abòde lan fonksyon lokal yo. Ak ki jan fè varyab wè dosye nan limit li yo, sa ki kapab pi plis ak itilize? Pou sa ka fèt, epi li se bay nan varyab mondyal yo PHP.

mo kle a "mondyal"

Ak isit la se ki jan yo deklare yon varyab mondyal nan PHP? Nan reyalizasyon objektif sa a ap ede nou pawòl Bondye a "mondyal". Li nesesè yo mete nan devan nan varyab la ke ou vle fè yon mondyal (narimer, mondyal «Varyab nan").

Apre aplikasyon an tout moun ki tankou yon endikasyon, done yo yo pral kapab travay avèk nenpòt ki dosye. Si yon kote gen referans a sa a varyab, pwogram nan ap toujou peye atansyon sou vèsyon an mondyal la.

Poukisa tankou yon lang etranje? Lefèt ke an menm tan an gen pouvwa pou vèsyon lokal yo. Men, yo yo ap disponib sèlman pou sa yo dosye ki te anonse. Se pou tout rès la ap aji varyab mondyal klas PHP. Se poutèt sa ou dwe pran prekosyon. Ak sa ki te gen pa gen dout, isit la nan yon egzanp nan sa ki yo gade tankou: mondyal a.

Paske si yon sèl dosye ap gen aksè a yon nimewo nan varyab, li pral lakòz yo konfli. Men, nou pa ka di pou asire w - se lokal oswa mondyal plase lire ou tout ansanm fini. Se konsa, si li se yo enskri nan yon fonksyon, li ta dwe pa gen okenn pwoblèm. Men, itilize nan yon varyab pou fwontyè li yo yo dwe Pwoblematik. Se poutèt sa, estrikti a nan Desen an nan kòd la nesesè yo kontwole seryezman ak asire w ke okenn kote se gen menm yon avantou nan konfli a te di anyen.

Yon lòt reyalizasyon nan anrejistreman an

Eske li posib nan PHP yo kreye yon varyab mondyal nan yon lòt fason? Wi, pa menm yon sèl. Premyèman, kite a konsidere $ global la. Sa a se yon etalaj asosyatif. Kle a li - se non an. Kòm valè a nan sa ki aji kòm yon varyab mondyal la. Li ta dwe remake ke moun ki etalaj la apwè anonsman an egziste nan nenpòt dimansyon. Sa a bay rezon ki fè nou kwè ke li supèrglobal. Li sanble se konsa: $ global [ 'varyab'].

Predefini / superglobals

Nan chak lang programmation gen kèk non ke yo Chartered pou kèk nan fonksyon li yo. Se poutèt sa, yo kreye nan PHP varyab mondyal an menm non yo pa pral travay.

lang programmation sa a gen karakteristik pwòp li yo. Se konsa, li enpòtan pou varyab yo predefini isit la yo pa enstale "Super", se sa ki, yo menm yo pa disponib nan tout kote yo ye. Kouman mwen ka fikse li? Varyab predefini te disponib nan kèk lokal nan zòn nan, li dwe deklare jan sa a :. mondyal plase «" Li sanble yo dwe menm bagay la tou tankou anvan te di, dwa? Se vre, men li pa byen. Se pou nou gade nan deja "goumen" yon egzanp:

  • mondyal $ HTTP_POST_VARS;
  • repete $ HTTP_POST_VARS [ 'non'].

Ou santi ou diferans ki genyen ant yo? Remake byen ke nan varyab PHP mondyal pa nesesèman gen yo dwe itilize nan fonksyon an. Li ka menm dwe mete yo nan yon dosye ki se enkli nan li.

Lyen ak sekirite

Kòm ou ka wè, nan PHP kreye yon varyab mondyal se pa yon pwoblèm. Men, se gen nenpòt patikilye lyen relatif? Wi, gen pouvwa pou konpòtman inatandi lè w ap itilize mondyal la. Men, anvan sa, yon ti kras backstory.

Nan vèsyon 4.2.0 direktiv la pa register_globals default chanje soti nan sou-eta a nan. Pou pifò itilizatè yo, sa a se pa trè enpòtan, men pou gremesi. Apre yo tout, li dirèkteman afekte sekirite a nan pwodwi a devlope. Si ou bezwen fè plase varyab, PHP-direktiv la sou sa a paramèt se pa sa ki afekte dirèkteman. Sepandan, itilize kòrèk ka deja kreye presedan sekirite.

Se konsa, si register_globals ki vire sou, anvan ekzekisyon an nan kòd la ekri inisyalizèd varyab yo diferan ki nesesè, pou egzanp voye HTML-fòm. Se poutèt sa, li te deside vire l 'la.

Poukisa se eta a nan direktiv sa a nan php plase varyab dwe anpil? Reyalite a se ke lè eta a nan devlopè yo pa toujou ak sètitid te kapab tèt yo reponn kesyon an nan kote li te soti nan. Sou yon bò, li pi fasil yo ekri kòd. Men, sou lòt la - li se yon risk sekirite. Se poutèt sa, pou fè pou evite erè, osi byen ke done melanje e li te direktiv te enfim.

Koulye a, kite pou yo gade pa / sekirite kòd, osi byen ke ki jan yo detekte ka kote se anons la nan PHP varyab mondyal la akonpaye pa tantativ nan koken nan done. Sa a se nesesè yo nan lòd yo kreye pa sèlman bèl, men tou, piti piti sit ki pa krak premye moun ki disponib ap travay.

move Kòd

Se pou yo mete varyab sa se laverite pou moun ki te otorize:

si (authenticate_user ()) {
$ Otorize = verite;
}

si ($ otorize) {
enkli "/highly/sensitive/data.php";
}

Nan eta sa a, ka varyab la dwe mete otomatikman. Lè ou konsidere ke done yo ka senpleman dwe ranplase, ak sous la ki gen orijin yo, yo pa se mete, lè sa a nenpòt moun ki ka pase tankou yon tès yo ak pretann yo dwe yon lòt moun. Si ou vle, ka atakè a (oswa jis kirye men san eksperyans moun) dwe gen pwoblèm, lojik nou an.

Si nou chanje valè la nan direktiv la a, kòd sa a ap travay kòrèkteman, menm jan nou yo mande yo. Men, inisyalizasyon nan varyab se pa sèlman yon ton bon nan pwogram lan, men tou, ba nou yon garanti sèten nan estabilite nan script la.

Serye vèsyon nan kòd la

ou ka fèmen oswa travay direktiv, oswa preskri yon kòd pi konplèks nan reyalize objektif sa a. Pou egzanp, tankou sa a:

si (ise ($ _ SESYON [ 'non itilizatè'])) {

eko "Alo {$ _ SESYON [ 'non itilizatè']} ";

} Lòt Bagay {

eko "Alo Guest
";
repete "Byenveni itilizatè!";

}

Fè yon sibstitisyon nan ka sa a, pral gen difisil. Men, toujou - posib. Pou fè sa, ou dwe pran swen ke zouti yo repons rapid yo te bay la. Si ou vle gen ladan varyab mondyal nan PHP, ou ka sèvi ak zouti sa yo: si nou konnen ki sa seri a se valè a jwenn, li se posib yo enskri yon script tcheke sa a ak yon matche ak. Natirèlman, li tou se pa yon garanti plen pwoteksyon kont valè sibstitisyon. Men, sa a twòp opsyon siyifikativman konplike.

Jwenn eseye Masquerade

Ann wè ki jan ou konprann ekri pi bonè. Nan PHP varyab mondyal nan fonksyon an ke yo pral bay anba a, w ap bezwen yo deklare tèt ou. Nou ka di ke sa a se yon kalite devwa sou asimilasyon nan sijè sa a leson. Isit la se kòd la:

si (ise ($ _ [ 'C_COOKIE']) BONBON) {
} Èlzif (ise ($ _ JWENN [ 'C_COOKIE']) || ise ($ _ POST [ 'C_COOKIE'])) {

lapòs ( "administrarot@example.com", "Atansyon, yo te script a anrejistre tantativ nan vòl ak falsifikasyon ak done", $ _SERVER [ 'REMOTE_ADDR']);
repete "Te gen yon sekirite kase oswa eseye fè sa konnen Administratè a.";
sòti;

} Lòt Bagay {
}
?>

Koulye a, eksplikasyon kite yo pase. Partly C_COOKIE vin jwenn nou soti nan yon sous serye. Bay tout satisfè dapre rezilta a te espere, nou tcheke valè li yo epi notifye administratè a nan ka ta gen pwoblèm. Si li pa vini, lè sa a pa gen okenn aksyon ak pa t 'bezwen fè. Ou gen ke ou konprann ke tou senpleman enfimite register_globals direktiv pa fè kòd ou a se an sekirite. Se poutèt sa, nenpòt ki varyab ki resevwa yon script soti nan itilizatè a, yo ta dwe tcheke pou valè an te espere.

konklizyon

Isit la, an jeneral, ak tout bagay ou bezwen konnen sou varyab yo mondyal avèk siksè epi san danje sèvi ak yo nan travay yo. Natirèlman, yo di ke gen se yon garanti plen ki pa gen moun ap sèvi ak yo pa kapab - atakan yo toujou ap amelyore metòd yo ak kapasite yo. Se poutèt sa dezirab limite itilizasyon an maksimòm nan varyab mondyal nan kòd la. Erezman, estrikti ak konsepsyon karakteristik yo ki nan lang programmation sa a kapab reyalize objektif sa a. Bon chans!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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