Tự động chuyển hướng với việc thêm tham số trong PHP
Giả sử trên trang index.php được truyền
tham số GET với tên arg.
Hãy hiển thị nội dung của nó ra màn hình:
<?php
echo $_GET['arg'];
?>
Giả sử trang của chúng ta không thể hoạt động chính xác nếu không có tham số GET.
Trong trường hợp của chúng ta,
điều này thực sự đúng, vì nếu tham số
không được truyền, thì việc truy cập vào $_GET['arg']
sẽ dẫn đến lỗi.
Có thể phát sinh câu hỏi, tại sao nói chung người dùng sẽ vào trang của chúng ta mà không có tham số? Bởi vì chúng ta có thể đặt các liên kết với tham số này ở mọi nơi trên trang web của mình. Tuy nhiên, điều này không đảm bảo: người dùng trang web của chúng ta có thể, ví dụ, sao chép liên kết từ đâu đó và làm mất tham số trong quá trình đó. Hoặc đơn giản là xóa nó một cách tình cờ khi chỉnh sửa thanh địa chỉ.
Nói chung, trong mọi trường hợp, mã của chúng ta nên dự đoán tình huống như vậy và làm điều gì đó với nó. Vậy có thể làm gì?
Có thể kiểm tra sự tồn tại của tham số GET của chúng ta và chỉ hiển thị nó nếu nó tồn tại:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// phản ứng bằng cách nào đó, ví dụ, thông báo
}
?>
Có thể xử lý khéo léo hơn:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // giá trị mặc định
}
echo $_GET['arg']; // đảm bảo sẽ hiển thị thứ gì đó mà không lỗi
?>
Hoặc có thể làm sao để khi truy cập vào trang không có tham số sẽ xảy ra chuyển hướng đến chính trang đó nhưng với tham số:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // tham số được đảm bảo là có
?>
Hãy giải thích sự khác biệt giữa phương án thứ hai và phương án thứ ba.
Giả sử trên trang page.php có thể truyền
một số thông qua tham số GET với tên
num. Hãy thực hiện sao cho khi truy cập
không có tham số này, sẽ tự động thực hiện
chuyển hướng đến chính trang đó, nhưng với tham số
num có giá trị 1.