TölvurHugbúnaður

PHP er alþjóðlegt breytu í aðgerð. Búðu til alþjóðlegt breytu í PHP

Til að búa til fullnægjandi síðu sem hefur mikla virkni þarftu að vita mikið um það. En hvað getur gefið það alvöru sérstöðu er PHP. Hnattræn breyting á þessu forritunarmál er ekki notuð mjög oft, en stundum er nauðsynlegt að vita hvernig það virkar. Með því að læra hvað það er og hvernig það virkar, munum við skoða þessa grein.

Gildissvið

Þetta er heiti samhengisins þar sem breytu er skilgreind. Í flestum tilfellum hafa þau aðeins eina umfang. Þegar í PHP eru alþjóðlegar breytur hlaðnar frá öðrum skrám, þá geta þeir verið með (innihalda) og krafist (krafist).

Sjálfgefin eru þau takmörkuð við staðbundna umfang aðgerðarinnar. Og hvernig vilt þú að breytu sé séð af skrám utan landamæra sinna og gætu þau einnig verið notaðir? Fyrir þetta veitir PHP einnig alþjóðlegt breytu.

Leitarorðið "alþjóðlegt"

En hvernig á að lýsa yfir alþjóðlegu PHP breytu? Með því að ná þessu markmiði mun orðið "alþjóðlegt" hjálpa okkur. Þú þarft að setja það fyrir breytu sem þú vilt gera á heimsvísu (til dæmis alþjóðlegt "Variable").

Eftir að slíkar leiðbeiningar hafa verið framkvæmdar getur hver skrá unnið með gögnin. Ef einhvers staðar er tilvísanir í þessa breytu, þá mun forritið alltaf taka eftir alþjóðlegu útgáfunni.

Hvers vegna svona undarlegt samsetning? Staðreyndin er sú að samtímis með þessu geta verið staðbundnar útgáfur. En þeir verða aðeins tiltækar í þeim skrám þar sem þau eru lýst. Og fyrir alla aðra munu alþjóðlegar breytur PHP kennslunnar vinna. Þess vegna þarftu að vera varkár. Og svo að það er enginn vafi, hér er dæmi um hvernig þeir líta út: alþjóðlegt a.

Vegna þess að ef einn skrá hefur aðgang að nokkrum breytum, mun þetta valda þeim átökum. En hér getur maður ekki sagt nákvæmlega - staðbundin eða alþjóðlegur breytur verður lesinn eða villa verður upp. Svo, ef það er skrifað inni í aðgerð, þá ætti ekki að vera nein vandamál. En með því að nota breytu fyrir utan mörk þess verður vandamál. Þess vegna er nauðsynlegt að fylgjast náið með uppbyggingu samantektar áætlunarinnar og tryggja að hvergi sé það enn forsenda þess að átökin uppi.

Annar valkostur fyrir upptöku

Er hægt að búa til alþjóðlegt breytu í PHP á annan hátt? Já, og ekki einu sinni. Í fyrsta lagi skulum líta á $ GLOBALS. Þetta er tengslanet. Lykillinn í því er nafn. Verðmæti er innihald alþjóðlegu breytu. Það skal tekið fram að þessi fylki eftir yfirlýsingu er til staðar í hvaða umfangi sem er. Þetta gefur tilefni til að íhuga það frábærlega. Það lítur svona út: $ GLOBALS ['Variable'].

Fyrirfram skilgreind / superglobals

Í hverju forritunarmáli eru nokkrar nöfn sem eru skipulögð fyrir einstaka aðgerðir. Þess vegna getur þú ekki búið til alþjóðlegar breytur í PHP með sama nafni.

Í þessu forritunarmáli eru sérstakar aðgerðir. Svo mikilvægt er að fyrirfram skilgreindir breytur hér hafi ekki "frábær" stillingu, það er að þau eru ekki tiltæk á öllum stöðum. Hvernig get ég lagað þetta? Til þess að fyrirfram skilgreindur breytur sé tiltækur á sumum svæðum, verður það að vera lýst sem hér segir: alþjóðlegt "Variable". Það virðist vera það sama og áður sagði, ekki satt? True, en ekki raunverulega. Skulum líta á "bardaga" dæmi:

  • Global $ HTTP_POST_VARS;
  • Echo $ HTTP_POST_VARS ['nafn'].

Finnst þér munurinn á þeim? Athugaðu að í PHP þarf ekki að nota alþjóðlegt breytu innan aðgerða. Það er hægt að finna í skrá sem er innifalinn í henni.

Tenglar og öryggi

Eins og þú sérð, í PHP er að búa til alþjóðlegt breytu ekki vandamál. En eru einhverjar aðgerðir um tenglana? Já, það getur verið óvænt hegðun þegar notuð er alþjóðlegt. En áður en þetta er smá bakgrunnur.

Í útgáfu 4.2.0 breyttist reglubundið tilskipun frá upphafi þegar kveikt var á henni. Fyrir flesta notendur er þetta ekki mjög mikilvægt, en til einskis. Eftir allt saman hefur þetta bein áhrif á öryggi vöru sem verið er að þróa. Ef þú þarft að búa til alþjóðlegt breytu, mun PHP tilskipunin á þessum breytu ekki hafa bein áhrif á það. En röng notkun getur nú þegar skapað fordæmi fyrir öryggi.

Svo, ef register_globals er á, áður en þú framkvæmir skrifaðan kóða, eru ýmsar breytur gerðir sem nauðsynlegar eru til að senda HTML skjöl. Þess vegna var ákveðið að slökkva á því.

Afhverju er ástand þessarar tilskipunar í PHP alþjóðlegt breytilegt vegna margra? Staðreyndin er sú að verktaki getur ekki sjálfstætt svarað spurningunni um hvar það kom frá því þegar ríkið er á. Annars vegar gerði það auðveldara að skrifa kóða. En hins vegar - þetta skapaði öryggisógn. Því til að forðast mistök, sem og að blanda gögnunum og tilskipunin var gerð óvirk.

Og nú skulum við líta á óörugga númerið, og einnig hvernig á að greina mál þegar yfirlýsingin um PHP hnattræna breytu fylgir tilraunir til að skjóta gögnum. Þetta er nauðsynlegt til að búa til ekki aðeins fallegar, heldur einnig stöðugar vinnustaði sem ekki sprunga fyrstu manneskju sem kemur yfir.

Hættulegt númer

Við skulum staðfesta að breytu sé satt fyrir þá sem hafa fengið leyfi:

Ef (sannvottun_user ()) {
$ Leyfa = satt;
}

Ef ($ heimild) {
Innihalda "/highly/sensitive/data.php";
}

Í þessu ástandi er hægt að stilla breytu sjálfkrafa. Í ljósi þess að gögnin geta einfaldlega verið skipt út og uppruna uppruna þeirra er ekki staðfest, þá getur hver sem er farið framhjá slíkum stöðva og hugleiða einhvern annan. Ef óskað er, getur árásarmaðurinn (eða bara forvitinn, en óreyndur manneskja) brotið gegn rökfræði handritsins.

Ef þú breytir verðmæti tilskipunarinnar, þá getur þessi kóði virkt rétt eins og við þurfum. En frumstilling breytinga er ekki aðeins góð tón í forritun, heldur gefur okkur einnig nokkur trygging fyrir stöðugleika handritsins.

Öflug útgáfa af kóðanum

Til að ná þessu markmiði geturðu annað hvort slökkt á rekstri tilskipunarinnar eða skráð flóknari kóða. Til dæmis, hér er þetta:

Ef (isset ($ _ SESSION ['notendanafn']))) {

Echo "Halló {$ _ SESSION ['notandanafn']} ";

} Annars {

Echo "Halló Gestur
";
Echo "Halló, notandi!";

}

Í þessu tilfelli verður erfitt að gera skiptingu. En samt er hægt. Til að gera þetta þarf að gæta þess að tryggja að snögg svörunarverkfæri séu veitt. Ef þú vilt bæta við alþjóðlegum breytur í PHP, getur þú notað eftirfarandi tól: Ef við þekkjum sviðið þar sem verðmæti er aflað, getum við skráð það þannig að handritið stöðva þetta með því að nota kortlagning. Auðvitað tryggir þetta einnig ekki fulla vörn gegn staðgöngu gilda. En hér getur leitað hugsanlegra valkosta verulega flókið.

Finnur tilraun til skiptis

Við skulum athuga hvernig þú skiljaðir hvað þú skrifaðir áður. Í PHP heimsvísu breytur í aðgerðinni, sem verður að finna hér fyrir neðan, verður þú að lýsa sjálfum þér. Það má segja að þetta sé einhvern veginn heimavinnuverkefni til að læra efni kennslustundarinnar. Hér er kóðinn:

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

Póstur ("adminarot@example.com", "Viðvörun, handritið lagði tilraun til að hakka og skopstælingargögn, $ _SERVER ['REMOTE_ADDR']);
Echo "Öryggi hefur verið í hættu eða reynt að gera það." Stjórnandi tilkynnt ";
Hætta;

} Annars {
}
?>

Og nú er útskýring á því. Breytu C_COOKIE kemur til okkar frá áreiðanlegum uppruna. Til að fullvissa væntanlega niðurstöðu, athugum við gildi þess og ef vandamál koma upp, tilkynna stjórnandinn um það. Ef ekkert hefur komið, þá ætti ekki að grípa til aðgerða. Það ætti að skilja að einfaldlega að slökkva á register_globals tilskipuninni gerir ekki kóðann örugg. Því þarf að athuga hvaða breytu sem handritið fær frá notandanum fyrir áætlað gildi.

Niðurstaða

Það, almennt, og allt sem nauðsynlegt er að vita um alþjóðlegar breytur, til þess að hægt sé að nota þau með góðum árangri í starfsemi sinni. Auðvitað, til að segja að það sé fullnægjandi ábyrgð að enginn geti notað það - kexar eru stöðugt að bæta aðferðir sínar og færni. Því er æskilegt að takmarka notkun á alþjóðlegum breytum í kóðanum að hámarki. Sem betur fer getur uppbygging og eiginleikar þessarar forritunarmáls náð þessu markmiði. Gangi þér vel!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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