1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPの基本操作⑤ 「クッキーとセッションの保存と取得」

Last updated at Posted at 2021-04-24

##参考書籍
よくわかるPHPの教科書 PHP7対応版

##他記事リンク

##クッキー(Cookie)

ログイン画面などで次回アクセス時に自動的に入力された状態にするなどのデータベースには保存しないけれど中長期的に保存しておきたいデータなどに使用する機能です。ブラウザを起動しているときだけ保存したいデータにはセッションを使います。

###データを保存する

クッキーにデータを保存するにはsetcookie関数を使います。

データをクッキーに保存する
setcookie(クッキー名, 値, 保存秒数, フォルダ, ドメイン, セキュア接続のみ, HTTPのみの接続);

3番目の引数まで指定すれば、関数は使用することができます。
4番目以降の引数は、セキュリティに関する設定です。

  • フォルダ: ここで設定したフォルダ配下でのみ有効になります
  • ドメイン:  ここで設定したドメイン配下でのみ有効になります
  • セキュア接続のみ: SSL接続でのみ有効になります
  • HTTPのみの接続: JavaScriptなどからはアクセスできなくなります
before.php
<?php
  $value = '変数に保存した値です';
  setcookie('save_message', 'Cookieに保存した値です', time() + 60 * 60 * 24 * 14);
?>

<p>Cookieに値を保存しました。次のページに移動してみましょう。
<a href="/sample24/after.php">page02へ</a>

###データを取得する

保存した値を取得するには$_COOKIE関数を使います。

クッキーに保存されているデータを取得する
$_COOKIE[クッキー名];
after.php
変数の値: <?php print($value); ?>
Cookieの値: <?php print($_COOKIE['save_message']); ?>

##セッション(Session)
ログイン後にログイン中であることを保存するなどのブラウザを開いている間だけデータを保存しておくための機能です。ブラウザを閉じても利用する場合には、クッキーを使います。

###データを保存する
セッションは保存する場合も取得する場合も、session_start関数を先に使います。
セッションを保存する場合には、$_SESSION関数を使います。

データをセッションに保存する
session_start()
$_SESSION[セッション名] = 
before.php
<?php
  session_start();
  $_SESSION['session_message'] = '値をセッションに保存しました';
?>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>セッション</title>
</head>
<body>
  <pre>
  セッションに値を保存しました。次のページに移動してみましょう。&raquo; <a href="after.php">afterページへ</a>
  </pre>
</body>
</html>

###データを取得する

セッションに保存してある値を取得する場合も保存する場合と同様に使います。

セッションに保存されているデータを取得する
session_start();
$_SESSION[セッション名]
after.php
<?php session_start(); ?>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>セッション</title>
</head>
<body>
  <pre>
  セッションの値: <?php print($_SESSION['session_message']); ?>
  <?php session_unset(); ?>
  </pre>
</body>
</html>

###データを削除する

今回は使用していませんが、明示的にセッションに保存されているデータを削除する場合にはunset関数を使用します。

セッションに保存されているデータを削除する
unset($_SESSION[セッション名]);
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?