КомпјутериСофтвер

Глобалната променлива во PHP функцијата. Направете глобалната променлива во PHP

Да се создаде целосна сајт, кој има широка функционалност треба да знаете многу. Но, она што може да го направи навистина уникатна - тоа е PHP. Глобалната променлива во програмскиот јазик не се користи многу често, но понекогаш да знаете како тоа функционира, понекогаш е потребно. Тоа е студија за тоа што е тоа и како тоа функционира, ние ќе се обидеме да се направи во овој член.

опсегот

Викни на контекстот во кој се утврдени променлива и. Во повеќето случаи, тие имаат само една опсег. Кога PHP глобални променливи бутира од други датотеки, тогаш тоа може да биде инклузивен (вклучува) и се бара (бара).

По правило, тие се ограничени на опсегот на локалните функција. И како да се направи променлива гледа датотеки во своите граници, што може повеќе и за употреба? За таа цел, и е предвидено во глобални променливи PHP.

Клучниот збор "Глобал"

И тука е како да се изјасни за глобалната променлива во PHP? Во остварувањето на оваа цел ќе ни помогне зборот "глобално". Неопходно е да се стави во предниот дел на променлива која сакате да се направи глобална (narimer, глобалната «променливата").

По спроведувањето на таква индикација, податоците ќе бидат во можност да работат со која било датотека. Ако некаде има препораки за оваа променлива, на програмата секогаш ќе обрне внимание на глобална верзија.

Зошто таков чуден јазик? Фактот дека во исто време може да има локални верзии. Но, тие ќе бидат достапни само за тие датотеки каде објавени. И за сите останати ќе дејствува глобални променливи PHP класа. Затоа мора да се биде внимателен. И тоа немаше сомнеж, еве еден пример на она што тие изгледаат како што се: глобалната a.

Затоа што ако една датотека ќе имаат пристап до голем број на променливи, тоа ќе предизвика нив да се во конфликт. Но, ние не може да се каже со сигурност - локални или глобални променливи се чита или целосно не успее. Значи, ако тоа е да се регистрирате во функција, тоа треба да биде никаков проблем. Но, користењето на променлива за своите граници за да биде проблематична. Затоа, структурата на изработката на кодот е потребно внимателно да ги следи и бидете сигурни дека никаде не е таму, дури и предуслов за изјави судири се јавуваа.

Друга олицетворение на снимање

Дали е можно во PHP да се создаде глобална променлива на друг начин? Да, нема ниту еден. Прво, ајде да се разгледа на $ глобални. Ова е асоцијативна низа. Клучот за тоа - е името. Како вредност на содржината делува како глобална променлива. Треба да се напомене дека постои низа од денот на објавувањето во секој опсег. Ова му дава причина да се верува superglobal. Тоа изгледа толку: $ глобални [ "променлива"].

Предефинирани / superglobals

Во секој програмски јазик има некои имиња кои се експерт за некои од своите функции. Затоа, за да се создаде во PHP глобални променливи со исто име нема да работи.

Овој програмски јазик има свои карактеристики. Значи, важно е дека на предефинирани променливи тука не се инсталира "супер", што е, тие не се достапни на сите локации. Како можам да го поправам? Претходно дефинирани променливи беше на располагање во некои локални област, тоа мора да биде прогласена како што следува :. Глобал "Variable" Се чини да биде ист како порано реков, нели? Тоа е точно, но не сосема. Дозволете ни да се погледне на веќе "борбата" на пример:

  • глобалната $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'Име'].

Ќе почувствувате разликата меѓу нив? Имајте на ум дека во PHP глобални променливи не мора нужно да се користи во рамките на функцијата. Тоа дури може да се стави во датотека која е вклучена во него.

Линкови и безбедност

Како што можете да видите, во PHP да се создаде глобална променлива не е проблем. Но, дали има некој посебен однос врски? Да, може да има неочекувани однесување кога се користи на глобално ниво. Но, пред тоа, малку backstory.

Во верзија 4.2.0 на Директивата стандардно register_globals смени од по-држава надвор. За повеќето корисници, тоа не е многу важна, но залудно. Впрочем, тоа директно влијае на безбедноста на развиените производ. Ако ви треба да се направи глобална променлива, PHP-директивата за овој параметар не е директно засегната. Сепак, поради неправилна употреба веќе може да се создаде преседан за безбедност.

Значи, ако register_globals е вклучен, пред извршување на код напишан иницијализира на различни променливи кои се потребни, на пример, да испрати HTML-форми. Поради тоа, се одлучи да го исклучите.

Зошто е состојбата на оваа директива во PHP глобалната променлива должи многу? Факт е дека кога државата од програмерите не се секогаш со сигурност може да се одговори на прашањето од каде доаѓа. Од една страна, тоа е полесно да се напише код. Но, од друга - тоа е ризик за безбедноста. Затоа, за да се избегнат грешки, како и податоци за мешање и Директивата е оневозможена.

Сега да ги погледнеме не / безбедносен код, како и како да се открие случаи кога објавувањето на глобалната променлива PHP на е придружена со обиди за манипулација со податоци. Ова е неопходно со цел да се создаде не само убава, но, исто така, постојано работат сајтови кои не попуштат првиот достапен лице.

малициозен код

Ајде да го поставиме таа променлива важи и за оние кои се овластени:

ако (authenticate_user ()) {
Овласти $ = true;
}

ако ($ Овласти) {
вклучуваат "/highly/sensitive/data.php";
}

Во оваа состојба, променлива може да се постави автоматски. Имајќи во предвид дека податоците едноставно може да се замени, а изворот на нивното потекло не е поставено, тогаш секој може да помине како на тест и претендираат да бидат некој друг. Ако сакате, напаѓачот (или само љубопитни, но неискусни лице) може да биде оштетена, нашата логика.

Ако се промени вредноста на директивата, овој код ќе работи како што треба, како што е потребно. Но иницијализација на променливи не е само добар тон во програмирање, но, исто така, ни дава одредена гаранција за стабилноста на сценариото.

Сигурен верзија на кодот

можете да го исклучите или работа директиви, или пропишува посложени код за да се постигне оваа цел. На пример, како оваа:

ако (isset ($ _ СЕДНИЦА [ 'име'])) {

echo "Здраво {$ _ СЕДНИЦА [ 'име']} ";

} Else {

echo "Здраво гости
";
echo "Добредојдовте корисник!";

}

Направи измена во овој случај, таму ќе биде тешко. Но сепак - е можно. За да го направите ова, мора да се грижи, кои беа обезбедени средства за брза реакција. Ако сакате да се вклучат глобални променливи во PHP, можете да го користите следниве алатки: ако знаеме што опсег е вредност добиена, можно е да се регистрирате на сценариото да проверите со еден натпревар. Се разбира, тоа, исто така, не е гаранција за целосна заштита против вредности замена. Но, тоа е премногу опции значително комплицира.

Наоѓа обиди да се маскира

Ајде да видиме колку ви е јасно напишано порано. Во PHP глобални променливи во функција кои ќе бидат дадени подолу, ќе треба да се изјасни. Можеме да кажеме дека ова е еден вид на домашна задача на асимилација на темата на лекцијата. Еве го кодот:

ако (isset ($ _ куки [ 'C_COOKIE'])) {
} Elseif (isset ($ _ се добие [ 'C_COOKIE']) || isset ($ _ пост [ 'C_COOKIE'])) {

пошта ( "administrarot@example.com", "Внимание, сценариото е снимен обид за кражба и упаднат со податоци", $ _SERVER [ 'REMOTE_ADDR "]);
echo "Имаше скршено безбедност или се обиде да го стори тоа известува администраторот.";
излез;

} Else {
}
?>

Сега објаснување на истите. Делумно C_COOKIE ни доаѓа од сигурен извор. За да се задоволат целосно во согласност со очекуваниот резултат, ние се провери неговата вредност и да го извести администратор во случај на проблеми. Ако тоа не се, тогаш нема акција и не треба да се направи. Мора да се разбере дека едноставно оневозможување register_globals директивата не направи вашиот код е безбеден. Затоа, секоја променлива која добива писмо од страна на корисникот, треба да се провери за очекуваната вредност.

заклучок

Тука, во целина, и се што ви треба да знаете за глобални променливи за успешно и безбедно да ги користат во нивната работа. Се разбира, да се каже дека постои целосна гаранција дека никој нема да ги користите за да не може да се - напаѓачите се постојано подобрување на нивните методи и вештини. Затоа е пожелно да се ограничи максималната употреба на глобални променливи во кодот. За среќа, структура и дизајн карактеристики на овој програмски јазик може да се постигне оваа цел. Со среќа!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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