КомпьютерлерБағдарламалық қамтамасыз ету

Функциясы жаһандық айнымалыны PHP. PHP жаһандық айнымалыны жасау

Егер сіз көп білу қажет кең функционалдық мүмкіндіктері бар толық сайты, жасау үшін. ол PHP болып табылады - Бірақ не оған шын мәнінде бірегей жасауға болады. бағдарламалау тілінде жаһандық айнымалы кейде бұл қажет, ол қалай жұмыс істейді білу кейде өте жиі пайдаланылады, бірақ жоқ. Яғни, біз бұл мақалада не істемекшісің, ол болып табылады және ол қалай жұмыс істейді қандай зерттеу болып табылады.

көлемі

Сондықтан айнымалы және бел онда контекст қоңырау. Көп жағдайларда, олар бір ғана саласын бар. PHP жаһандық айнымалылар басқа файлдардан жүктелген кезде, онда ол (талап) (қамтиды) инклюзивті және қажет болуы мүмкін.

Әдепкіде, олар жергілікті функциясы қолданылу шектеледі. Және одан да көп және пайдалана алатын, оның шекаралары айнымалы көрген файлдарды, қалай жасауға? Осы мақсатта, және PHP жаһандық айнымалы қарастырылған.

Кілт сөз «жаһандық»

Ал мұнда PHP жаһандық айнымалыны жариялау үшін қалай? Осы мақсатқа қол жеткізу деген сөз «жаһандық» көмектеседі. Ол сізге жаһандық (narimer, жаһандық «Variable») жасауға келеді, бұл айнымалы алдында орналастыру қажет.

Мұндай көрсете іске асыру кейін, деректер кез-келген файлды жұмыс істеу мүмкіндігіне ие болады. бір жерде осы айнымалы сілтемелер бар болса, бағдарлама әрқашан жаһандық нұсқасы назар аударатын болады.

Неге осындай біртүрлі тілі? сол уақытта жергілікті нұсқалары болуы мүмкін, бұл факт. Бірақ олар тек қана жариялады сол файлдар үшін қол жетімді болады. Ал барлық қалған жаһандық айнымалылар PHP класс әрекет етеді. Сондықтан сіз абай болу керек. жаһандық а: және ешқандай күмән жоқ екенін, мұнда олар сияқты көрінеді қандай мысал.

бір файл айнымалы бірқатар қол болады, егер, ол қақтығыс оларды себеп болады, өйткені. Бірақ біз дәл айта алмаймын, - жергілікті немесе жаһандық айнымалы оқып немесе мүлдем орындамаған жағдайда. ол функциясы тіркелу болып табылады Сондықтан, егер ол ешқандай проблема болуы тиіс. Бірақ оның шекараларын үшін айнымалы пайдалану проблемалы болуы. Сондықтан, тығыз, мониторинг және еш жерде деді жанжал тіпті қажетті шарты болып табылады көз жеткізу үшін қажетті коды әзірлеуге құрылымы пайда болды.

жазу Басқа вариант

ол басқа жолмен жаһандық айнымалы мәнін жасау үшін PHP мүмкін? Иә, тіпті бір. Біріншіден, компаниясының $ Жаһандық қарастырайық. Бұл ассоциативті алап болып табылады. оған кілті - атауы болып табылады. мазмұнын мәні жаһандық айнымалы ретінде әрекет ретінде. Ол жарияланғаннан кейін массив кез келген көлемде бар екенін атап өткен жөн. Бұл superglobal оны сенуге толық негіз береді. Ол сондықтан көрінеді: $ GLOBALS [ 'айнымалы'].

Алдын ала анықталған / superglobals

Әрбір бағдарламалау тілінде өз функцияларын кейбір жарғылық кейбір атаулары бар. Сондықтан, аттас PHP жаһандық айнымалы құру жұмыс істемейді.

Бұл бағдарламалау тілі өз ерекшеліктері бар. Сондықтан, бұл жерде алдын ала анықталған айнымалылар «супер» орнату емес, бұл маңызды болып табылады, яғни, олар барлық жерлерде қол жетімді емес. Мен оны қалай түзетуге болады? алдын ала анықталған айнымалы кейбір жергілікті аймағында қол жетімді болды, төмендегілер жарияланған болуы тиіс :. Global «Variable» Ол оң, бұрын айтты бірдей болып көрінеді? Ол өте шынайы, бірақ емес. АҚШ қазірдің өзінде мысал «күрес» қарастырайық:

  • жаһандық $ HTTP_POST_VARS;
  • [ 'Атауы'] $ HTTP_POST_VARS эхо.

Сіз олардың арасындағы айырмашылықты сезінуге? PHP жаһандық айнымалы міндетті функциясы ішінде пайдаланылуы тиіс жоқ екенін ескеріңіз. Ол тіпті оған енгізілген файл орналастырылуы мүмкін.

Сілтемелер және қауіпсіздік

Өздеріңіз көріп отырғандай, PHP жаһандық айнымалы проблема емес жасаңыз. Бірақ кез келген нақты салыстырмалы сілтемелер бар? жаһандық пайдаланған кезде Иә, күтпеген мінез-құлық бар болуы мүмкін. Бірақ бұған дейін, сәл төркіні.

нұсқасы 4.2.0 әдепкі register_globals Директивасын өшіру үшін мемлекет тарапынан өзгерді. Пайдаланушылардың көбі үшін, бұл өте маңызды, бірақ бекер емес. Өйткені, ол тікелей дамыған өнімнің қауіпсіздігін әсер етеді. Бұл параметр бойынша айнымалы жаһандық, PHP-директива шалу қажет болса тікелей зардап шеккен жоқ. Алайда, дұрыс пайдалану қазірдің өзінде прецедент қауіпсіздікті жасай аласыз.

Сондықтан жазбаша код орындау HTML-нысандарын жіберуге мысалы, қажет әр түрлі айнымалылар аңғартпа бұрын register_globals, қосылған болса. Сондықтан, оны өшіру үшін шешім қабылданды.

Неге PHP жаһандық айнымалы осы директивасының мемлекеттік көп міндетті болып табылады? факт, бұл қайдан әзірлеушілер мемлекеттік әрқашан сеніммен өздері сұраққа жауап алмады емес, бұл кезде. Бір жағынан, ол кодты жазу оңай. Бірақ екінші жағынан - бұл қауіпсіздік қаупі. Сондықтан, қателерді болдырмау, сондай-ақ деректер араластыру және директивалық үшін өшірілген.

Енді / қауіпсіз емес кодты қарайық, сондай-ақ жаһандық PHP айнымалы хабарландыру деректермен бұрмалау кезінде әрекет жүреді жағдайларды анықтау қалай. Бұл әдемі, бірақ сондай-ақ тұрақты бірінші қол адамды жарылып емес, сайттарды жұмыс ғана емес, жасау үшін қажет.

зиянды код

ның айнымалы уәкілетті жүргендер үшін шынайы екенін орнатайық:

егер (authenticate_user ()) {
$ = Шынайы уәкілеттік;
}

{($ Рұқсат) егер
«/highly/sensitive/data.php» қамтиды;
}

Бұл күйде, айнымалы автоматты түрде орнатуға болады. деректер жай ауыстыруға болады деп есептей отырып, және олардың шығу тегі көзі орнатылған жоқ, содан кейін кез келген адам мұндай тест тапсырып, басқа біреу болып көрінуге болады. Қаласаңыз, шабуыл (немесе жай ғана қызық, бірақ тәжірибесіз адам), біздің логикасын бұзылған болуы мүмкін.

біз директивасының мәнін өзгертсеңіз, осы код біз талап ретінде, дұрыс жұмыс істейтін болады. Бірақ айнымалы баптандыру бағдарламалау жақсы үні ғана емес, сонымен қатар бізге сценарий тұрақтылық белгілі бір кепілдік береді.

код сенімді нұсқасы

Сіз өшіру немесе жұмыс директивалар, немесе осы мақсатқа жету үшін неғұрлым күрделі кодын белгілеу мүмкін. Мысалы, осы сияқты:

{(Isset ($ _ СЕССИЯ [ 'қатысушы аты'])) егер

жаңғырығы «Сәлеметсіз бе {$ _ СЕССИЯ [ 'Пайдаланушы аты']} »;

} Тағы {

жаңғырығып «Сәлеметсіз бе Guest
»;
«Қош келдіңіздер пайдаланушы!» Жаңғырығы;

}

Бұл жағдайда ауыстыруға жасауға, қиын болады. Бірақ әлі күнге дейін - мүмкін. Бұл әрекетті орындау үшін, сіз тез жауап құралдары қамтамасыз етілді, бұл қамқорлық керек. Сіз PHP жаһандық айнымалылар қосқыңыз келсе, Сіз келесі құралдарды қолдануға болады: біз ауқымы алынған мән не екенін білесің, егер, ол матчта осы тексеруге арналған сценарийді тіркеуге болады. Әрине, ол сондай-ақ ауыстыру құндылықтар толық қорғау кепілдік бермейді. Бірақ бұл тым көп нұсқалары айтарлықтай қиындатады екен.

әрекеттері жасыру үшін табады

Сіз бұрын жазбаша түсінуге қалай көрейік. төменде келтірілген болады функциясы PHP жаһандық айнымалы, өзіңіз жариялау қажет болады. Біз осы сабақ тақырыбы меңгеру бойынша үй тапсырмасын бір түрі болып табылады деп айтуға болады. Міне код:

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

пошта ( «administrarot@example.com», $ _SERVER [ 'қашықтағы'] «Назар аударыңыз, сценарий тонау және деректермен бұрмалау кезінде әрекеті тіркелді»);
«. Онда сынған қауіпсіздік болды немесе осылайша Administrator хабардар әрекет» жаңғырығы;
шығу;

} Тағы {
}
?>

Енді түсіндіру оған. Жартылай C_COOKIE сенімді көзден бізге келеді. толық қанағаттандырылды деп күтілуде нәтижесіне сәйкес, біз оның мәні тексеру және проблемаларды жағдайда әкімшісіне хабардар. ол, содан кейін ешқандай әрекет келіп емес және жасау қажет жоқ. Егер Сіз жай ғана register_globals директивасын өшіру сіздің коды қауіпсіз жасауға емес екенін түсіну керек. Сондықтан, пайдаланушы сценарий алады, кез келген айнымалы, күтілетін құны бойынша тексерілуі тиіс.

қорытынды

Мұнда, жалпы, және сіз табысты және қауіпсіз өз жұмысында оларды пайдалануға жаһандық айнымалы туралы білу керек бәрі. Шабуылшылар үнемі олардың әдістері мен дағдыларын жақсарту - Әрине, ешкім оларды мүмкін емес пайдалануға болады деп толық кепілдік бар деп айтуға. Бұл код жаһандық айнымалы барынша пайдалануды шектеу үшін, сондықтан жөн. Бақытымызға орай, бұл программалау тілі құрылымы және дизайн ерекшеліктері осы мақсатқа қол жеткізуге болады. Сәттілік!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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