SukeBlog

プログラマーSukeによるブログ

【PHP】No.2 PHP基礎(ページ遷移)

【PHP】No.2 PHP基礎(ページ遷移)
この記事は約6分で読めます

ページ遷移方法

ページ遷移するためには、HTMLのformタグを使用します。
試しに、page1.phpからpage2.phpにページ遷移するプログラムを書いてみましょう。
<form action='page2.php' method='post'>
    <input type='submit' value='ボタン'>
</form>
<?php 
    echo "ゲストさんこんにちは";
?>
ブラウザからpage1.phpにアクセスし、表示されているボタンをクリックします。
そうすると、page2.phpが実行され、「ゲストさんこんにちは」と画面に表示されます。

inputタグは一般的には、formタグで囲んだ中に書きます。
inputタグのtype属性にsubmitを指定すると、Webブラウザにはボタンが表示されます。
ボタンが押された場合、Webサーバにリクエストが送信されます。
formタグ内のaction属性には、リクエストが送信された際に次に実行するプログラムファイル名を指定します。
method属性には、”get”または”post”を指定します。
formタグを作成したら、だいたいはpostを使用します。

ページ間の値の渡し方

page1で名前を入力してもらい、入力された名前をpage2で表示する方法を見てみましょう。
<form action='page2.php' method='post'>
    <input type='text' name='yourname'>
    <input type='submit' value='ボタン'>
</form>
<?php 
    $name = $_POST['yourname'];
    echo $name . "さんこんにちは";
?>
このシンプルなプログラムからでも、いくつか学べることがあります。
まず、page1.phpで、ユーザが名前を入力するためのテキストボックスを表示しています。
表示の仕方は、inputタグのtype属性にtextを指定します。
また、name属性にテキストボックスの名前を設定しておきます。この値は、テキストボックスに入力された値をpage2.phpで使用するために必要です。

テキストボックスに入力された値をpage2.phpで使うには、$_POST[]を使用します。
$_POSTのカッコの中には、page1.phpで設定したinputタグのname属性を指定します。(上記のプログラムの場合、’yourname’と指定します。)
$_POST[‘yourname’]で、page1でユーザが入力した値が取得できますので、その値を一旦変数$nameに代入します。

最後に、echoで名前を表示させればOKですが、変数の値と「さんこんにちは」のような文字列をくっつける(連結と言います)には、ドット(.)を使います。

GETメソッドとPOSTメソッド

先ほどのプログラムでは、formタグのmethodの部分でpostを指定しました。

GETメソッド

GETメソッドでは、サーバに送信するパラメータがURLに含まれます。
試しに、先ほどのpage1.phpとpage2.phpを変更し、GETメソッドでパラメータを送信するようにしてみます。
<form action='page2.php' method='get'>
    <input type='text' name='yourname'>
    <input type='submit' value='ボタン'>
</form>
<?php 
    $name = $_GET['yourname'];
    echo $name . "さんこんにちは";
?>
URLを見ると、page1で入力したパラメータが含まれていることがわかります。(これをクエリパラメータと言います)
このように、URLを見ればパラメータを知ることができてしまうため、重要なパラメータを送信する際には一般的にPOSTメソッドがセキュリティ面で安全と言われています。
クエリパラメータを受け取るには、$_GET[]を使います。

また、aタグによるリンクや、URLを直打ちしてページにアクセスした場合はGETメソッドによるアクセスとなります。
このとき、URLの末尾に「?パラメータ名=値」とすることでクエリパラメータを設定することができます。
クエリパラメータは&区切りで複数渡すこともできます。
<a href='page2.php?yourname=ゲスト'>page2へ</a>