Datori, Programmatūra
PHP pasaules mainīgais funkciju. Padarīt globālo mainīgo PHP
Lai izveidotu pilnīgu vietni, kurā ir plaša funkcionalitāte, kas jums jāzina daudz. Bet ko var izdarīt viņam patiesi unikāla - tā ir PHP. Globālais mainīgais programmēšanas valodā netiek izmantots ļoti bieži, bet dažreiz zināt, kā tā darbojas, dažreiz tas ir nepieciešams. Tas ir pētījums par to, kas tas ir un kā tā darbojas, mēs gatavojamies darīt šajā rakstā.
vēriens
Pēc noklusējuma, tie ir tikai uz vietējo funkciju apjomu. Un kā padarīt mainīgās redzams failus tās robežām, kas varētu vairāk un izmantot? Lai to panāktu, un tiek sniegta PHP globālo mainīgo.
Atslēgvārds "globālā"
Pēc tam, kad, īstenojot šādu norādi, šie dati būs iespēja strādāt ar jebkuru failu. Ja kaut kur ir atsauces uz šo rādītāju, programma vienmēr pievērsīs uzmanību uz globālo versiju.
Kāpēc šāda dīvaina valoda? Fakts, ka tajā pašā laikā var būt vietējās versijas. Bet tie būs pieejami tikai tiem failiem, kur paziņots. Un visiem pārējiem darbosies globālie mainīgie PHP klasi. Tāpēc jums ir jābūt uzmanīgiem. Un tas nebija šaubu, šeit ir piemērs tam, ko viņi izskatās: globālās a.
Jo, ja viens fails būs pieejama no vairākiem mainīgajiem, tas radīs viņiem pretrunā. Bet mēs nevaram teikt droši - vietēja vai pasaules mēroga mainīgais ir lasīt vai vispār neizdodas. Tātad, ja tas ir jāreģistrējas funkciju, tai vajadzētu būt nekādu problēmu. Bet izmantošana mainīgo, tās robežām, ir problemātiska. Tāpēc struktūra izstrādes koda nepieciešams cieši uzraudzīt un pārliecināties, ka nekur ir tur pat priekšnoteikums minētā konflikta rašanās.
Vēl ieraksta iemiesojums
Iepriekš definēti / superglobals
Katrā programmēšanas valodā ir daži vārdi, kas ir diplomēto dažiem no tās funkcijām. Tāpēc, lai radītu PHP globālo mainīgo pašu nosaukumu nestrādās.
Šajā programmēšanas valoda ir savas īpatnības. Tātad, tas ir svarīgi, ka iepriekš noteiktie mainīgie šeit netiek uzstādot "super", tas ir, tie nav pieejami visās vietās. Kā es varu salabot? Lai bija pieejams iepriekš definēti mainīgie kādā vietējā teritorijā, tā jādeklarē šādi :. Global «mainīgais" Šķiet, ka tāds pats kā iepriekš teicu, labi? Tā ir taisnība, bet ne gluži. Ļaujiet mums apskatīt jau "kaujas" piemēru:
- globālais $ HTTP_POST_VARS;
- echo $ HTTP_POST_VARS [ 'nosaukums'].
Jūs sajutīsiet atšķirību starp viņiem? Ņemiet vērā, ka PHP globālo mainīgo nav obligāti jāizmanto ietvaros funkciju. To var pat novietot failā, kas ir iekļauts tajā.
Saites un drošība
Kā jūs varat redzēt, PHP izveidot globālu mainīgais nav problēma. Bet vai ir kādi īpaši relatīvās saites? Jā, var būt neparedzētas darbības, izmantojot globālo. Bet pirms tam, nedaudz backstory.
Šajā versijā 4.2.0 direktīvu pēc noklusējuma register_globals mainīts no uz valsts izslēgta. Lielākajai daļai lietotāju, tas nav ļoti svarīgi, bet veltīgi. Galu galā, tas tieši ietekmē izstrādāto produktu drošību. Ja jums ir nepieciešams, lai padarītu mainīgo globālo, PHP direktīva par šo parametru nav tieši ietekmētas. Tomēr nepareiza izmantošana var jau radīt precedentus drošību.
Tātad, ja register_globals ir ieslēgts, pirms izpilde rakstiskas koda inicializēts dažādus mainīgos, kas ir nepieciešami, piemēram, lai nosūtītu HTML formas. Tādēļ tika nolemts, lai to izslēgtu.
Kāpēc valsts šīs direktīvas php globālā mainīgā parādā daudz? Fakts ir tāds, ka tad, kad stāvoklis izstrādātājiem ne vienmēr droši var paši atbildēt uz jautājumu par to, kur tas nācis. No vienas puses, tas ir vieglāk rakstīt kodu. Bet no otras puses - tas ir drošības risks. Tādēļ, lai izvairītos no kļūdām, kā arī datus, samaisa un direktīva ir atspējots.
Tagad aplūkosim ne / drošu kodu, kā arī to, kā noteikt gadījumus, kad paziņojums par globālās PHP mainīgā kopā ar mēģinājumiem ar datiem. Tas ir nepieciešams, lai radītu ne tikai skaista, bet arī nepārtraukti strādā vietnēs, kas nav kreka pirmo pieejamo personu.
ļaunprātīgu kodu
Norunāsim ka mainīgais ir taisnība tiem, kas ir pilnvarots:
ja (authenticate_user ()) {
$ Autorizēties = true;
}
if ($ authorize) {
ietver "/highly/sensitive/data.php";
}
Šajā stāvoklī, mainīgais var iestatīt automātiski. Ņemot vērā, ka datus var vienkārši aizstāt, un avots viņu izcelsmes nav noteikts, tad ikviens var nodot šādu pārbaudi, un izlikties par kādu citu. Ja nepieciešams, tad uzbrucējs (vai vienkārši ziņkārīgs, bet nepieredzējušiem persona), var tikt traucēta, mūsu loģiku.
Ja mēs mainām vērtību direktīvas, šis kods darbosies pareizi, kā mēs nepieciešams. Bet inicializācijas mainīgo ir ne tikai labs tonis, plānojot, bet arī dod mums zināmu stabilitātes garantijas skriptu.
Uzticams versija koda
Jūs varat izslēgt vai strādā direktīvas, vai noteikt sarežģītāku kodu, lai sasniegtu šo mērķi. Tā, piemēram, šādi:
if (isset ($ _ SESSION [ 'username'])) {
echo "Hello {$ _ SESSION [ 'username']} b>";
} Else {
echo "Hello Viesu b>
";
echo "Welcome lietotājam!";
}
Padarīt maiņu šajā gadījumā būs grūti. Bet tomēr - ir iespējams. Lai to izdarītu, jums ir jārūpējas, ka ātrās reaģēšanas instrumenti tika sniegta. Ja vēlaties iekļaut globālos mainīgos PHP, varat izmantot šādus instrumentus: ja mēs zinām, kas diapazons ir vērtība, ko iegūst, ir iespējams reģistrēt skriptu, lai pārbaudītu to ar spēli. Protams, tas arī negarantē pilnīgu aizsardzību pret aizstāšanas vērtībām. Bet tas ir pārāk daudz iespējas, ievērojami sarežģī.
Konstatē mēģinājumus maskēties
Let 's redzēt, kā jūs saprotat rakstīts agrāk. PHP globālie mainīgie funkciju, kas tiks norādīti zemāk, jums būs nepieciešams deklarēt sevi. Mēs varam teikt, ka tas ir sava veida mājasdarbu par asimilāciju nodarbību tēmu. Šeit ir kods:
Php
if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} ElseIf (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {
pasts ( "administrarot@example.com", "Uzmanību, skripts tika ierakstīts mēģinājums ielaušanos un manipulācijām ar datiem," $ _SERVER [ 'REMOTE_ADDR']);
echo "Tur bija salauzta drošību vai mēģināt to darīt paziņojusi administratoru.";
izeja;
} Else {
}
?>
Tagad izskaidrojums tam. Daļēji C_COOKIE nāk pie mums no uzticama avota. Lai pilnībā apmierināti saskaņā ar paredzamo rezultātu, mēs pārbaudām, tās vērtību un paziņo administratoram problēmu gadījumā. Ja tas nenāk, tad nekādas darbības, un nav nepieciešams veikt. Jums ir jāsaprot, ka vienkārši atspējot register_globals direktīva nepadara jūsu kods ir droša. Tāpēc jebkurš mainīgais, kas saņem skriptu no lietotāja, būtu jāpārbauda paredzamo vērtību.
secinājums
Lūk, kopumā, un viss, kas jums jāzina par globālo mainīgo, lai veiksmīgi un droši izmantot tos savā darbā. Protams, teikt, ka ir pilnīga garantija, ka neviens tos izmantot nevar - uzbrucēji pastāvīgi pilnveidojot savas metodes un prasmes. Tādēļ ir vēlams ierobežot maksimālo izmantošanu globālo mainīgo lielumu kodu. Par laimi, struktūra un dizaina iezīmes šo programmēšanas valodu var sasniegt šo mērķi. Veiksmi!
Similar articles
Trending Now