PHPでのパラメータ追加を伴う自己リダイレクト
ページ index.php で、
名前が arg のGETパラメータが渡されるとします。
その内容を画面に表示しましょう:
<?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']; // パラメータは確実に存在する
?>
2番目の方法と3番目の方法の違いを説明してください。
ページ page.php で、
名前が num のGETパラメータを使って
数値を渡せるとします。このパラメータなしで
アクセスした場合、自動的にその同じページへ、
パラメータ num の値を 1 として
リダイレクトされるようにしてください。