24
1

Web 11

Embed Size (px)

Citation preview

1

2

2回目以降のアクセス時、現在の時間と前

回アクセスした時の時間を表示するプログラムを作成しましょう

3

4

クッキー変数を使ってアクセスカウンターを作りましょう

今回はテキストファイルは使いません

5

6

7

クッキーと同じくページをまたいでも値を保持してくれる変数

セッションはサーバ側に保存される

ユーザがセッションの変数を操作することはできない

8

9

セッション クッキー

変数の値の保持 可 可

保持する場所 サーバ ブラウザ

ユーザによる操作 操作できない 値の拒否や編集、削除が容易

変数の宣言 $_SESSION[“セッション名”]

$_COOKIE[“クッキー名”]

10

※ファイル名は「session1.php」

11

※ファイル名は「session2.php」

session1.phpにアクセス

ユーザ名に適当な文字列、パスワードに「hoge」と入力してログイン

「ページ更新」のリンクを押してカウントアップされていればおk

12

session_start()• 「このページではセッションを使いますよ」と宣言する関数

• これがないとセッションは使えない• クッキーと同じ仕様で、htmlタグより前に宣言すること

$_SESSION[“セッション名”]• セッションの変数を意味する• クッキー変数同様、他ページでも値を参照できる

13

header(“location:飛ぶ先のURL”)• 指定したURLに飛ぶ関数

• これが実行されると、同ページに書かれたそれ以降の処理は無視される

$_COOKIE[“PHPSESSID”]• session_start関数が宣言されると自動で生成されるクッキー

• 中身はセッションIDが入っている

• 無論、ブラウザの設定がクッキーを拒否している場合は使えない

14

15

※session2.php

$_SESSION=array()

• 実はセッション変数は配列になっている

• array()で中身のない配列を代入することで、存在する全てのセッション変数を空にしている

session_destroy()

• session_startと逆で「ここから先はセッション変数を使いません」と宣言する関数

• 使えなくするだけであって、セッション変数やID

は削除しないので注意

16

セッションはユーザを識別するためのもの、言い換えれば本人証明書のようなもの

本人証明書を誰かに盗られてしまうと、成り済ましの危険性がある

セッションIDは定期的に変更するのが望ましい

17

18

19

更新する度に値が変わっていればおk

session_regenerate_id()

• 現在のセッションIDを破棄して、新しいセッションIDを生成する

• 実行されると、$_COOKIE[“PHPSESSID”]も自動的に更新される

20

21

URLに直接session2.phpと書くと、ログイン処理を無視してsession2.phpに飛べてしまいます下の「?」部分を埋めてsession2.phpに直接飛べないようにしましょう

22

?

1回目はログイン処理をし、ログアウトしない限り、2回目以降のアクセスはユーザ

名等を打たなくても自動的にログインするようにsession1.php変えましょう

23

session1.php session2.php

1回目

2回目

要入力

入力不要

24

?