⊗ppPmRdIns 405 of 447 menu

მყისიერი რედირექტი PHP-ში

რედირექტი, რომელიც შესრულებულია header ფუნქციის საშუალებით, არ ხდება ამ ფუნქციის გამოძახების მომენტში. ბოლოსდაბოლოს, PHP თავად არ ახორციელებს რედირექტს, არამედ მხოლოდ აგზავნის შესაბამის HTTP ჰედერს ბრაუზერში.

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

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

<?php if ($_GET['test']) { header('Location: test.php'); } $query = "UPDATE users SET changed=1 WHERE id=1"; mysqli_query($link, $query); // შესრულდება რედირექტის შემთხვევაშიც კი! ?>

მსგავსი პრობლემების თავიდან ასაცილებლად საჭიროა რედირექტის შემდეგ დაუყოვნებლივ გამოვიძახოთ die ფუნქცია, რომელიც მყისიერად დაასრულებს სკრიპტის შესრულებას და რედირექტი მოხდება დაუყოვნებლივ:

<?php if ($_GET['test']) { header('Location: test.php'); die(); } $query = "UPDATE users SET changed=1 WHERE id=1"; mysqli_query($link, $query); ?>

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

ქართული
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა