თვითრედირექტი პარამეტრების დამატებით PHP-ში
დავუშვათ, რომ გვერდზე index.php გადაეცემა
GET პარამეტრი სახელად arg.
გამოვიტანოთ მისი შიგთავსი ეკრანზე:
<?php
echo $_GET['arg'];
?>
დავუშვათ, რომ ჩვენი გვერდი GET პარამეტრის გარეშე
არ შეუძლია კორექტულად მუშაობა. ჩვენს შემთხვევაში
ეს ნამდვილად ასეა, რადგან, თუ პარამეტრი
არ არის გადაცემული, მაშინ მიმართვა $_GET['arg']-ს
გამოიწვევს შეცდომას.
შეიძლება გაჩნდეს კითხვა, რატომ მოხვდება ადამიანი ზოგადად ჩვენს გვერდზე პარამეტრის გარეშე? ბოლოს და ბოლოს, ჩვენ შეგვიძლია ჩვენს საიტზე ყველგან დავადოთ ბმულები ამ პარამეტრით. თუმცა, ეს გარანტია არ არის: ჩვენი საიტის მომხმარებელმა შეიძლება, მაგალითად, დააკოპიროს ბმული სადმე და ამ დროს დაკარგოს ის პარამეტრი. ან უბრალოდ შემთხვევით წაშალოს იგი, მისამართების ზოლის რედაქტირებისას.
ზოგადად, ნებისმიერ შემთხვევაში, ჩვენმა კოდმა უნდა ივარაუდოს ასეთი სიტუაცია და რაიმე გააკეთოს მასთან. რა შეიძლება გაკეთდეს?
შეგვიძლია შევამოწმოთ ჩვენი GET პარამეტრის არსებობა და გამოვიტანოთ იგი, მხოლოდ იმ შემთხვევაში თუ ის არსებობს:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// როგორმე ვრეაგირებთ, მაგალითად, შეტყობინებით
}
?>
შეგვიძლია უფრო ჭკვიანურად მოვიქცეთ:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // ნაგულისხმევი მნიშვნელობა
}
echo $_GET['arg']; // გარანტირებულად რაღაცას გამოიტანს შეცდომის გარეშე
?>
შეგვიძლია ასევე გავაკეთოთ ისე, რომ გვერდზე პარამეტრის გარეშე შესვლისას მოხდეს რედირექტი ამავე გვერდზე პარამეტრით:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // პარამეტრი გარანტირებულად არის
?>
მოგვიყევით, რით განსხვავდება მეორე ვარიანტი მესამესგან.
დავუშვათ, რომ გვერდზე page.php შეიძლება გადავცეთ
რიცხვი GET პარამეტრის საშუალებით სახელად
num. გახადეთ ისე, რომ ამ პარამეტრის
გარეშე შესვლისას, ავტომატურად შესრულდეს
რედირექტი ამავე გვერდზე, მაგრამ პარამეტრით
num მნიშვნელობით 1.