ᲙომპიუტერებიᲞროგრამული უზრუნველყოფა

PHP გლობალური ცვლადი ფუნქცია. ჩადება გლობალური ცვლადი PHP

შექმნა სრული საიტი, რომელსაც აქვს ფართო ფუნქციონალური თქვენ უნდა იცოდეს, ბევრი. მაგრამ, თუ რა შეუძლია მას ჭეშმარიტად უნიკალური - ეს არის PHP. გლობალური ცვლადი პროგრამირების ენა არ გამოიყენება ძალიან ხშირად, მაგრამ ზოგჯერ, თუ როგორ მუშაობს, აუცილებელია. ეს არის სასწავლო, რა არის და როგორ მუშაობს, ჩვენ ვაპირებთ, რომ გავაკეთოთ ამ სტატიაში.

სფერო

ასე უწოდებენ იმ კონტექსტში, რომელშიც ცვლადი და განისაზღვრა. უმეტეს შემთხვევაში, მათ აქვთ მხოლოდ ერთი ფარგლებს. როდესაც PHP გლობალური ცვლადები დატვირთული სხვა ფაილი, მაშინ ეს შეიძლება იყოს ინკლუზიური (მოიცავს) და საჭირო (მოითხოვს).

სტანდარტულად, ისინი შემოიფარგლება ადგილობრივი ფუნქცია ფარგლებს. და როგორ უნდა გააკეთოს ცვლადი ჩანს ფაილი თავისი საზღვრები, რაც შეიძლება მეტი და გამოყენება? ამ მიზნით, და იმ პირობით, რომ PHP გლობალური ცვლადები.

სიტყვით "გლობალური"

აქ არის თუ როგორ უნდა განაცხადოს გლობალური ცვლადი PHP? ამ მიზნის მისაღწევად დაგვეხმარება სიტყვა "გლობალური". ეს აუცილებელია თვალწინ ცვლადი, რომელიც გინდათ გლობალური (narimer, გლობალური «ცვლადი").

განხორციელების შემდეგ ასეთი აღნიშვნა, მონაცემები შეძლებს იმუშაოს ნებისმიერი ფაილი. თუ სადმე არსებობს მითითება ამ ცვლადი, პროგრამა ყოველთვის ყურადღების გლობალური ვერსია.

რატომ ასეთი უცხო ენაზე? ის ფაქტი, რომ ამავე დროს, არ შეიძლება იყოს ადგილობრივი ვერსიებს. მაგრამ ისინი ხელმისაწვდომი იქნება მხოლოდ იმ ფაილებს, სადაც გამოცხადდა. და ყველა დანარჩენი იმოქმედებს გლობალური ცვლადები PHP კლასის. ამიტომ, თქვენ უნდა ფრთხილად. და რომ არ არსებობს ეჭვი, აქ არის მაგალითი, თუ რას ჰგავს: გლობალური a.

იმიტომ, რომ თუ ერთი ფაილი ექნება დაშვება რაოდენობის ცვლადები, ეს გამოიწვევს მათ კონფლიქტში. მაგრამ ჩვენ არ შეგვიძლია ვთქვათ, რა თქმა უნდა - ადგილობრივი და გლობალური ცვლადი წაკითხვის ან საერთოდ ვერ. ასე რომ, თუ ეს არის დაარეგისტრირონ ფუნქცია, ეს არ უნდა იყოს პრობლემა. მაგრამ გამოყენების ცვლადი საზღვრებს იყოს პრობლემატური. აქედან გამომდინარე, სტრუქტურა შედგენაში კოდი აუცილებელია ყურადღებით დააკვირდება და დარწმუნდით, რომ არსად არსებობს კი იმის წინაპირობაა, რომ განაცხადა, კონფლიქტი წარმოიშვა.

კიდევ ერთი განსახიერება ჩაწერა

შესაძლებელია თუ არა PHP შევქმნათ გლობალური ცვლადი სხვა გზა? დიახ, არც ერთი. პირველ რიგში, მოდით განიხილავს $ Globals. ეს არის ასოციაციურ მასივში. გასაღები - ეს სახელი. როგორც ღირებულების შინაარსი მოქმედებს, როგორც გლობალური ცვლადი. აღსანიშნავია, რომ მასივი გამოცხადების შემდეგ არსებობს არანაირი ფარგლებს. ეს იძლევა საფუძველს, მჯერა, რომ ეს superglobal. ეს ასე გამოიყურება: $ Globals [ 'ცვლადი].

წინასწარგანსაზღვრული / superglobals

ყველა პროგრამირების ენა არსებობს გარკვეული სახელები, რომლებიც ნაფიც მისი ზოგიერთი ფუნქციები. ამიტომ, რათა შეიქმნას PHP გლობალური ცვლადები იგივე სახელი არ იმუშავებს.

ეს პროგრამირების ენა აქვს საკუთარი მახასიათებლები. ასე რომ, ეს ძალიან მნიშვნელოვანია, რომ განსაზღვრული ცვლადები აქ არ დაყენების "სუპერ", რომ არის, ისინი არ არის ხელმისაწვდომი ყველა ადგილას. როგორ შემიძლია გაასწორონ ის? განსაზღვრული ცვლადები იყო ხელმისაწვდომი ზოგიერთი ადგილობრივი ტერიტორიაზე, ეს უნდა გამოცხადდეს შემდეგნაირად :. Global «Variable" როგორც ჩანს, ისევე, როგორც ადრე უთხრა, არა? მართალია, მაგრამ არა საკმაოდ. მოდით შევხედოთ უკვე "ბრძოლის" მაგალითად:

  • გლობალური $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'name'].

თქვენ გრძნობენ განსხვავებაა მათ შორის? აღსანიშნავია, რომ PHP გლობალური ცვლადები სულაც არ უნდა იქნეს გამოყენებული ფუნქცია. ეს შეიძლება იყოს მოთავსებული ფაილი, რომელიც შედის ეს.

ბმულები და უსაფრთხოება

როგორც ხედავთ, PHP შექმნას გლობალური ცვლადი არ არის პრობლემა. მაგრამ არსებობს რაიმე კონკრეტული ნათესავი კავშირები? დიახ, შეიძლება იყოს მოულოდნელი საქციელი, როდესაც გამოყენებით გლობალური. მანამდე კი, ცოტა backstory.

ვერსია 4.2.0 დირექტივა by default register_globals შეიცვალა on-სახელმწიფოს off. საუკეთესო წევრებს, ეს არ არის ძალიან მნიშვნელოვანი, მაგრამ უშედეგოდ. ყოველივე ამის შემდეგ, იგი პირდაპირ გავლენას ახდენს უსაფრთხოების შემუშავებული პროდუქტი. თუ თქვენ უნდა მიიღოს ცვლადი გლობალური, PHP-დირექტივა ეს პარამეტრი უშუალოდ არ ეხება. თუმცა, არასწორი გამოყენება შეიძლება უკვე შევქმნათ პრეცედენტები უსაფრთხოებას.

ასე რომ, თუ register_globals აღმოჩნდა, სანამ აღსრულების დაწერილი ინიციალიზაცია სხვადასხვა ცვლადები, რომ საჭიროა, მაგალითად გაგზავნის HTML ფორმები. აქედან გამომდინარე, გადაწყდა, რომ ჩართოთ იგი.

რატომ არის სახელმწიფო ამ დირექტივა php გლობალური ცვლადი დავალიანება ბევრი? ფაქტია, რომ როდესაც სახელმწიფო დეველოპერები ყოველთვის არ დარწმუნებით შეიძლება თავს პასუხი კითხვაზე, სადაც იგი მოვიდა. ერთის მხრივ, ეს არის ადვილი დაწერა კოდი. თუმცა, მეორე - ეს არის უსაფრთხოების რისკი. ამიტომ, რათა თავიდან ავიცილოთ შეცდომები, ისევე როგორც მონაცემთა შერევას და დირექტივა გათიშულია.

ახლა მოდით შევხედოთ არ / უსაფრთხო კოდი, ისევე, როგორც, თუ როგორ უნდა აღმოაჩინოს შემთხვევებში, როდესაც გამოცხადების გლობალური PHP ცვლადი თან ახლავს მცდელობები გაყალბების მონაცემები. ეს არის საჭირო იმისათვის, რომ შეიქმნას არა მხოლოდ ლამაზი, არამედ სტაბილურად მუშაობს საიტებზე რომ არ ბზარი პირველი ხელმისაწვდომი პირი.

მუქარის კოდი

მოდით მითითებული, რომ ცვლადი არის ნამდვილი მათთვის, ვინც უკვე უფლებამოსილია:

თუ (authenticate_user ()) {
$ ავტორიზაცია = true;
}

if ($ უფლებას) {
მოიცავს "/highly/sensitive/data.php";
}

ამ სახელმწიფოს, ცვლადი ყენდება ავტომატურად. იმის გათვალისწინებით, რომ მონაცემები, უბრალოდ უნდა შეიცვალოს, და წყარო მათი წარმომავლობის არ არის მითითებული, მაშინ ყველას შეუძლია გაიაროს ასეთი ტესტი და პრეტენზია უნდა იყოს ვინმეს. თუ სასურველი, თავდამსხმელი (ან უბრალოდ აინტერესებს, მაგრამ გამოუცდელი პირი) შეიძლება დაირღვეს, ჩვენი ლოგიკა.

თუ შევცვლით ღირებულება დირექტივა, ეს კოდი იმუშავებს სწორად, როგორც ჩვენ საჭირო. მაგრამ ინიციალიზაციისას ცვლადები არ არის მხოლოდ კარგი ტონი პროგრამირების, არამედ გვაძლევს გარკვეულ გარანტიებს სტაბილურობის script.

სანდო ვერსია კოდი

თქვენ შეგიძლიათ გამორთოთ ან მუშაობა დავალებები, ან განსაზღვრონ უფრო რთული კოდი ამ მიზნის მისაღწევად. მაგალითად, ასე:

თუ (isset ($ _ SESSION [ 'username'])) {

echo "Hello {$ _ SESSION [ 'username']} ";

} Else {

echo "Hello სასტუმრო
";
echo "კეთილი შესახებ!";

}

ცვლილება ამ შემთხვევაში, არ იქნება რთული. მაგრამ მაინც - შესაძლებელია. ამისათვის, თქვენ უნდა იზრუნოს, რომ სწრაფი რეაგირების ინსტრუმენტები იქნა უზრუნველყოფილი. თუ გსურთ მოიცავს გლობალური ცვლადები PHP, შეგიძლიათ გამოიყენოთ შემდეგი ინსტრუმენტები: თუ ჩვენ ვიცით, რა დიაპაზონი არის ღირებულება მიღებული, ეს შესაძლებელია რეგისტრაცია სკრიპტის სანახავად ამ მატჩი. რა თქმა უნდა, მას ასევე არ იძლევა გარანტიას, სრული დაცვა წინააღმდეგ ცვლილება ღირებულებებს. მაგრამ, რომ ძალიან ბევრი ვარიანტი მნიშვნელოვნად გაართულებს.

პოულობს მცდელობა მასკარადი

ვნახოთ, თუ როგორ გესმით დაწერილი ადრე. In PHP გლობალური ცვლადები ფუნქცია, რომელიც მიეცემა ქვემოთ, თქვენ უნდა განაცხადოს საკუთარ თავს. შეიძლება ითქვას, რომ ეს არის ერთგვარი დავალებას ასიმილაციის გაკვეთილი თემაზე. აქ არის კოდი:

თუ (isset ($ _ ხელნაკეთი [ 'C_COOKIE'])) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

ფოსტა ( "administrarot@example.com", "ყურადღება, სკრიპტი ჩაიწერა მცდელობა ძარცვა და მოსყიდვით მონაცემები", $ _server [ 'REMOTE_ADDR']);
echo "იყო გატეხილი უსაფრთხოებისა და ცდილობენ ამის გაკეთებას აცნობა Administrator.";
გასასვლელი;

} Else {
}
?>

ახლა ახსნა მასთან. ნაწილობრივ C_COOKIE მოდის ჩვენთან საიმედო წყარო. სრულად დააკმაყოფილა მიხედვით მოსალოდნელი შედეგი, ჩვენ შეამოწმოს თავისი ღირებულება და აცნობოს ადმინისტრატორს შემთხვევაში პრობლემები. თუ ეს არ მოდის, მაშინ არ ქმედება და არ უნდა მიიღოს. თქვენ უნდა გვესმოდეს, რომ უბრალოდ გამორთვა register_globals დირექტივა არ მიიღოს თქვენი კოდი არის უსაფრთხო. აქედან გამომდინარე, ნებისმიერი ცვლადი, რომელიც იღებს დამწერლობის შესახებ, უნდა შემოწმდეს მოსალოდნელი ღირებულება.

დასკვნა

აქ, ზოგადად, და ყველაფერი თქვენ უნდა იცოდეთ შესახებ გლობალური ცვლადები წარმატებით და უსაფრთხოდ გამოიყენოს მათ მუშაობა. რა თქმა უნდა, უნდა ვთქვა, რომ არ არსებობს გარანტია, რომ არავინ არ გამოიყენონ მათ არ შეუძლიათ - თავდამსხმელები მუდმივად გაუმჯობესების მათი მეთოდები და უნარები. ამიტომ, სასურველია, რომ შეზღუდოს მაქსიმალური გამოყენება გლობალური ცვლადები კოდი. საბედნიეროდ, სტრუქტურა და დიზაინი თვისებები ამ პროგრამირების ენა შეიძლება ამ მიზნის მისაღწევად. გისურვებთ წარმატებას!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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