libro
www.tuyano.com
初心者のためのPHPプログラミング入門

ページ遷移、クッキー、セッション (6/8)

作成:2010-12-10 09:16
更新:2010-12-10 09:16

■セッションを使ったプチ・ログイン機能

では、実際にセッションを使ってみましょう。ここでは、セッション利用の基本中の基本ともいえる、ログイン機能を実装してみることにします。といっても、ユーザー名とパスワードをデータベースで保管して……というのはまだ手に余りますから、とりあえずPHPのスクリプト内にこれらを変数として用意し、それを使ってチェックするだけにしておきましょう。

ここでは、ログインページであるindex.phpと、ログインしていないと表示されないindex2.phpの2つのページを用意することにしましょう。まずは、ログインページ(index.php)からです。下にサンプルコードを掲載しておきます。

ここでは、フォームを送信したら、冒頭にあるスクリプトでその内容をチェックし、セッションに保存しています。これ自体では、ログインのチェックは行っていません。単に、送信されたアカウントとパスワードを保管しているだけです。

冒頭では、まずsession_startを実行していますが、その頭に@をつけていますね。これは、前にファイルアクセスのところで登場しましたが、「エラーが発生しても無視して先へ進む」ためのものです。サーバーによっては、デフォルトでセッション機能がONになっているものもあり、そうしたものでは改めてセッションを開始しようとすると「もう開始してるよ」とエラーになることがあります。そのための予防策です。
$account = $_POST['account'];
$pass = $_POST['pass'];
$_SESSION['account'] = $account;
$_SESSION['pass'] = $pass;
セッション関係の処理は、たったこれだけです。 $_SESSIONに保管すればすべて保存されます。他に説明の要がないほど簡単ですね。あと、もう1つ触れておくとすれば、現在のアカウントを表示しているボディ内のスクリプト部分でしょう。ここでは、
if (isset($_SESSION['account'])){……略……
このように記述されていますね。「isset」というのは、引数に指定した変数が存在するかどうかを調べるものです。つまり、これで$_SESSION['account']があるかどうかを調べて表示をしている、というわけです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

*program list*
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
    @session_start();
     
    if ($_POST != null){
        $account = $_POST['account'];
        $pass = $_POST['pass'];
        $_SESSION['account'] = $account;
        $_SESSION['pass'] = $pass;
        header("Location: ./index2.php");
    }
?>
<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
        xml:lang="ja" lang="ja">
    <head>
        <meta http-equiv="Content-Type"
            content="text/html; charset=UTF-8" />
        <title>sample page</title>
    </head>
    <body>
        <h1>Hello PHP!</h1>
        <p>
            <?php
            if (isset($_SESSION['account'])){
                echo "your account:" . htmlspecialchars($_SESSION['account']);
            }  
            ?>
        </p>
        <hr>
        <form method="post" action="./index.php">
            ACCOUNT :<input type="text" name="account"><br>
            PASSWORD:<input type="password" name="pass"><br>
            <input type="submit" value="移動">
        </form>
        <hr>
    </body>
</html>

※関連コンテンツ

「初心者のためのPHPプログラミング入門」に戻る