PHP WEBアプリケーション作成⑩ クッキーの利用 

クッキーとは、サーバー上のデータをブラウザに保存することで、同じ情報を再利用することです。WEBページを開くと、すでにメールアドレスが入力された状態のときがあるかと思います。その機能がクッキーを利用しています。

以前に作成した「掲示板」では最初にコメントを書き込んだ時に名前をPOSTメソッドで送信しています。サーバーは受け取った名前データを書き込んだクッキーをブラウザに送信します。

これにより、サーバーが持っているデータをブラウザで保存することができます。

次に掲示板にアクセスしたとき、ブラウザ自身に保存されているクッキーの情報をサーバーへ送ります。これによりサーバーは同じ情報を再利用することができます。クッキーはブラウザ内部に保存されているので、ブラウザの画面を閉じても情報がきえることはありません。

クッキーの保存

それでは早速、掲示板で名前欄を保存するようにしてみましょう。

名前データを受け取ってクッキーに保存するのは、データベースに書き込みするwrtite.phpで行います。write.phpの必須項目チェックの後に、setcoolie~を追記します。

write.php

if(!preg_match(“/^[0-9]{4}$/”, $pass)){
    header(“location: bbs.php”);
exit();
}
必須項目のチェック(パスワードは4桁の数字であるかチェック)

setcookie(‘name’, $name, time() + 60*60*24*90)
名前をクッキーにセット。setcookie関数はブラウザに対してクッキーを発行して保存させる関するです。
書式は「setcookie(クッキーの名前、保存する値、有効期限のタイムスタンプ)」
第一引数のクッキーの名前は必須。第二引数以降は省略可能。第三引数でクッキーの有効期限を決められます。
有効期限は指定しなければ自動的にゼロがセットされ、ブラウザを閉じたときに有効期限が切れることになります。
現在のタイムスタンプであるtime()に、60秒*60分*24時間*90日を足した日時である、「90日後まで有効」との指定になります。

クッキーの読み込み

次は、保存したクッキーを読み取って利用するためのコードを書き修正しましょう。

掲示板であるbbs.phpファイルを修正し、掲示板の書き込みフォームを表示する際に、名前のテキストボックスにクッキーから読み取った値を表示させます。

bbs.php

<?php
if(isset($_COOKIE[‘name’])){
    $name = $_COOKIE[‘name’];
}else {
    $name =””;
}
~省略
クッキーはスーパーグローバル変数である$_COOKIEで扱います。
isset関数で$_COOKIE[‘name’]が存在するか確認し、あれば$nameに代入します。存在しなければ空欄にします。
 <!DOCTYPE html>
<html lang=”ja”>
~省略
<div class=”form-group”>
            <label>名前</label>
            <input type=”text” name=”name” class=”form-control” value=”<?php echo $name ?>”>
        </div>
書き込みフォームの名前のテキストボックスにvalue属性を追加し、あらかじめ文字列が入力された状態にします。

これで、ユーザーが名前を入力する手間を省くことができました。

便利な一方で、いくつか注意しなければならないことがあります。

クッキーの注意点

容量の大きい情報を入れない

クッキーが保存できる容量は4キロバイトほど。文字数にすると2000文字程度となり、大きなデータは保存できないので注意が必要。

重要な情報を入れない

クッキーはブラウザに保存されるため、重要な情報を入れないようにしましょう。パスワードのような重要情報はデータベースなどを使い、サーバ側のプログラムを通して扱うことにしてクッキーには保存しないようにしましょう。

内容が書き換えられると困る情報を入れない

クッキーが保存されている場所はユーザーのブラウザなので、なんらかしかの方法で書き換えることができてしまいます。なので入力補助のような活用で「ユーザーのため少し便利にする」という目的で使うのが無難です。

PHPについて

この本から引用、参考にして学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが3,000円弱ならコスパよく、買っておいてよかったと満足してます。


レベルアップにはプロから学ぶことも方法の一つ

キャリアアップに必要なスキルを取得しよう。

オンラインで受講ができるスクールですので、全国どこからでも。

就職・転職支援