⊗ppPmRdSWP 407 of 447 menu

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 として リダイレクトされるようにしてください。

日本語
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
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否