KompjuteraProgram

PHP globale variabel në funksion. Bëni një ndryshore globale në PHP

Për të krijuar një faqe të plotë, e cila ka funksionalitet të gjerë që ju duhet të dini shumë. Por çfarë mund të bëjë atë të vërtetë unik - ajo është e PHP. Global ndryshueshme në gjuhën e programimit nuk është përdorur shumë shpesh, por ndonjëherë të dini se si funksionon, ndonjëherë është e nevojshme. Ky është studimi i çfarë është dhe si funksionon, ne do të bëjmë në këtë artikull.

fushë

Kështu e quajnë kontekstin në të cilin variabli dhe përcaktuar. Në shumicën e rasteve, ata kanë vetëm një qëllimin. Kur PHP ndryshoret globale ngarkuar nga fotografi të tjera, atëherë ajo mund të jetë përfshirës (përfshirë) dhe e nevojshme (kërkojnë).

By default, ato janë të kufizuara në fushëveprimin e funksionit lokal. Dhe si për të bërë ndryshueshme fotografi shihet në kufijtë e saj, të cilat mund të më shumë dhe të përdorni? Për këtë qëllim, dhe është dhënë në variablat globale PHP.

Fjalen "global"

Dhe këtu është se si të deklarojë një ndryshore globale me PHP? Në arritjen e këtij qëllimi do të na ndihmojë fjalën "globale". Është e nevojshme për të vendosur në frontin e variablit që ju doni të bëni një globale (narimer, globale «variablit").

Pas zbatimit të një treguesi të tillë, të dhënat do të jenë në gjendje për të punuar me ndonjë fotografi. Nëse diku ka referenca për këtë variabël, programi gjithmonë do t'i kushtojë vëmendje në versionin globale.

Pse një gjuhë të tillë të çuditshme? Fakti që në të njëjtën kohë mund të ketë versione të lokale. Por ata do të jenë në dispozicion vetëm për ato fotografi ku shpallura. Dhe për të gjithë të tjerëve do të veprojë variablave globale klasë PHP. Prandaj ju duhet të jenë të kujdesshëm. Dhe se nuk kishte asnjë dyshim, këtu është një shembull i asaj që ata të duken si: një globale.

Sepse në qoftë se një skedar do të kenë qasje në një numër të variablave, ajo do të shkaktojë që ata të konflikt. Por ne nuk mund të themi me siguri - lokale apo globale variabel lexohet ose krejt dështon. Pra, në qoftë se ajo është që të regjistrohen në një funksion, ajo duhet të ketë asnjë problem. Por përdorimi i një variabël për kufijtë e saj të jetë problematike. Prandaj, struktura e hartimit të kodit të nevojshme për të monitoruar nga afër dhe të sigurt se askund ka edhe një parakusht për konfliktin në fjalë u ngrit.

Një mishërim i regjistrimit

A është e mundur në PHP për të krijuar një ndryshore globale në një mënyrë tjetër? Po, as edhe një. Së pari, le të konsiderojmë Globals $. Ky është një grup associative. Çelësi për të - është emri. Si vlera e përmbajtjes vepron si një ndryshore globale. Duhet të theksohet se array pas shpalljes ekziston në çdo fushë. Kjo i jep arsye për të besuar atë superglobal. Ajo duket kështu: $ Globals [ 'ndryshueshme'].

Paracaktuara / superglobals

Në çdo gjuhë programimi ka disa emra që janë të privilegjuar për disa nga funksionet e saj. Prandaj, për të krijuar në PHP variablave globale të njëjtin emër nuk do të funksionojë.

Kjo gjuhë programimi ka karakteristikat e veta. Pra, është e rëndësishme që variablat paracaktuara këtu nuk janë instaluar "Super", që është, ata nuk janë në dispozicion në të gjitha vendet. Si mund ta fix it? Për variablat paracaktuara ishte në dispozicion në një zonë lokale, ajo duhet të deklarohet si më poshtë :. Global «ndryshueshme" Kjo duket të jetë i njëjtë si u tha më parë, e drejtë? Është e vërtetë, por jo mjaft. Le të shikojmë në tashmë të "luftuar" një shembull:

  • $ Globale HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'emrin'].

Ju ndjeni dallimin në mes tyre? Vini re se në PHP variablave globale nuk do të duhet të përdoret në funksion. Ajo mund edhe të vendoset në një skedar që përfshihet në të.

Lidhjet dhe siguria

Siç mund ta shikoni, në PHP krijojë një ndryshore globale nuk është një problem. Por a ka ndonjë lidhje të veçantë të afërm? Po, mund të ketë sjellje të papritur kur duke përdorur globale. Por, para kësaj, një backstory pak.

Në versionin 4.2.0 Direktiva nga register_globals parazgjedhur ndryshuar nga on-shteti në off. Për shumicën e përdoruesve, kjo nuk është shumë e rëndësishme, por më kot. Pas të gjitha, ajo ndikon drejtpërdrejt në sigurinë e produktit të zhvilluara. Nëse keni nevojë për të bërë globale variabel, PHP-direktiva në këtë parametër nuk është i prekur drejtpërdrejt. Megjithatë, përdorimi i gabuar tashmë mund të krijojë precedentë siguri.

Pra, nëse register_globals është kthyer më, përpara se ekzekutimi i kodit të shkruar inicializohen variablat e ndryshme që janë të nevojshme, për shembull për të dërguar HTML-format. Prandaj, u vendos për ta kthyer atë off.

Pse është gjendja e kësaj direktive në PHP globale variabel detyrohet shumë? Fakti është se kur gjendja e zhvilluesit jo gjithmonë me siguri mund të vetë përgjigjet në pyetjen se ku ajo erdhi nga. Nga njëra anë, ajo është më e lehtë për të shkruar kodin. Por nga ana tjetër - kjo është një rrezik të sigurisë. Prandaj, për të shmangur gabimet, si dhe të dhënat përzierjen dhe direktiva ka qenë me aftësi të kufizuara.

Tani le të shohim jo / kod të sigurt, si dhe se si për të zbuluar rastet kur shpallja e variablit PHP globale është shoqëruar me përpjekjet në ngatërrime me të dhëna. Kjo është e nevojshme në mënyrë që të krijojë jo vetëm e bukur, por edhe në mënyrë të qëndrueshme faqet që nuk plas personin e parë në dispozicion të punës.

dëmshme

Le të vendosur se ndryshueshme është e vërtetë për ata që janë të autorizuar:

nëse (authenticate_user ()) {
$ Autorizoj = e vërtetë;
}

në qoftë se ($ autorizojë) {
përfshijnë "/highly/sensitive/data.php";
}

Në këtë shtet, variabli mund te behet automatikisht. Duke pasur parasysh se të dhënat e thjesht mund të zëvendësohet, dhe burimi i origjinës së tyre nuk është caktuar, atëherë dikush mund të kalojnë një test të tillë dhe pretendon të jetë dikush tjetër. Nëse e dëshiruar, sulmuesi (ose vetëm personi kurioz por papërvojë) mund të jetë i zhvlerësuar, logjikën tonë.

Nëse do të ndryshojë vlerën e direktivës, ky kod do të funksionoj në rregull, si ne kërkohet. Por initialization e variablave nuk është vetëm një ton të mirë në programimin, por edhe na jep një garanci të caktuar të stabilitetit të shkrimit.

version i besueshëm i kodit

ju mund të kthehet off ose të punojnë udhëzime, ose të përshkruajnë një kod më komplekse për të arritur këtë qëllim. Për shembull, si kjo:

në qoftë se (isset ($ _ SEANCA [ 'username'])) {

echo "Përshëndetje {$ _ SEANCA [ 'username']} ";

} Tjetër {

echo "Përshëndetje Vizitor
";
echo "Welcome përdorues!";

}

Bëjë zëvendësim në këtë rast, nuk do të jetë e vështirë. Por ende - të jetë e mundur. Për ta bërë këtë, ju duhet të kujdeset që janë siguruar mjetet e shpejta të reagimit. Nëse ju doni që të përfshijë variabla globale në PHP, ju mund të përdorni mjetet e mëposhtme: në qoftë se ne e dimë se çfarë varg është vlera fituar, është e mundur për të regjistruar një script për të kontrolluar këtë me një ndeshje. Sigurisht, ajo gjithashtu nuk garanton mbrojtje të plotë kundër vlerave të zëvendësimit. Por kjo është shumë e shumë opsione të konsiderueshme komplikojë.

Gjen përpjekjet për të marr pjesë në maskaradë

Le të shohim se si ju e kuptoni shkruar më parë. Në PHP ndryshore globale në funksion që do të jepen më poshtë, ju do të duhet të deklarojnë veten. Ne mund të themi se kjo është një lloj i shtëpisë në asimilimin e temës mësimit. Këtu është kodi:

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

mail ( "administrarot@example.com", "Kujdes, script është regjistruar përpjekje për vjedhje dhe ngatërrime me të dhëna", $ _SERVER [ 'REMOTE_ADDR']);
echo "Nuk ishte një e sigurisë thyer apo përpjekje për ta bërë këtë njoftuar administratori.";
dalje;

} Tjetër {
}
?>

Tani shpjegim to. Pjesërisht C_COOKIE na vjen nga një burim i besueshëm. Për të kënaqur plotësisht në bazë të rezultatit të pritur, ne kontrolloni vlerën e saj dhe të njoftojë administratorin në rast të problemeve. Në qoftë se ajo nuk vjen, atëherë asnjë veprim dhe nuk ka nevojë për të bërë. Ju duhet të kuptoni se thjesht disabling direktivë register_globals nuk e bën kodi juaj është e sigurtë. Prandaj, çdo variabël që merr një script nga përdoruesit, duhet të kontrollohet për vlerën e pritshme.

përfundim

Këtu, në përgjithësi, dhe çdo gjë që ju duhet të dini në lidhje me variablat globale me sukses dhe në mënyrë të sigurtë përdorimin e tyre në punën e tyre. Natyrisht, për të thënë se ka një garanci e plotë se askush nuk do t'i përdorë ato nuk mund të - Sulmuesit janë vazhdimisht përmirësimin e metodave dhe aftësive të tyre. Prandaj është e dëshirueshme për të kufizuar përdorimin maksimal të variablave globale në kodin. Për fat të mirë, struktura dhe projektimit tiparet e kësaj gjuhe programimi mund të arrijë këtë qëllim. fat të mirë!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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