クロピグログ

職業訓練で学んだことまとめ

【PHP授業八日目】ファイルの読み込み、クッキー・セッション

ファイルの読み込み

f:id:chromiumpig:20200914105104p:plain

 

<?php
 ■ロジック部分
 ビューファイル(HTMLメインファイル)で使用する変数に値を代入する
header用変数
$title = '001ページ';
$cssPath =  '';
parts01用変数
$mainTitle = 'このページは001.phpです';
$text = <<< EOT
確認確認確認確認確認確認
EOT;
 ■ビューファイル
 今までは同じファイルにHTML部分を記述していたが
ビューファイル(HTMLメインファイル)をパーツ化して
requireを使用して読み込む
include __DIR__ . '/header.php';
require_once __DIR__ . '/parts01.php';
require_once __DIR__ . '/parts01.php';
require_once __DIR__ . '/parts01.php';;
require __DIR__ . '/footer.php';

 

  ファイル名 説明 使用する変数名
ロジック 001.php 本体ファイル
ロジック 002.php 本体ファイル
ロジック 003.php 本体ファイル
ビュー footer.php フッターパーツ
ビュー header.php ヘッダーパーツ $title:ページタイトル
$cssPath:ページ専用タグ
ビュー parts01.php コンテンツパーツ $mainTitle:メインタイトル
$text:テキスト
ビュー parts02.php コンテンツパーツ
ビュー parts03.php コンテンツパーツ
style.css

 

 ●条件付けてパーツの表示

$title = '003ページ';
$cssPath =  '<link rel="stylesheet" href="style003.css">';
$mainTitle = '';
$text = '';
require __DIR__ . '/header.php';
 $mainTitleが空文字ではない
 $textが空文字ではない
 上記両方の条件が満たされた時にparts01.phpを読み込む
if ($mainTitle != "" && $text != "") {
  require __DIR__ . '/parts01.php';
}

 

●書き方二種類

require 'header.php'相対パスになる
require __DIR__ . '/header.php'; ←絶対パスになる

・マジカル定数「__DUR__」には所属しているファイルのフォルダまでの絶対パスが入っている

・ファイル読み込み時にマジカル定数を使わなくても読み込むことができる

・マジカル定数を使うと読み込みが早い

・マジカル定数を使わないと限定的だがうまく読み込めない時がある

 

●実行ファイルのディレクトリ位置を示す「./」をつけた相対パスの場合には問題が発生することがある(なるべく「__DIR__」使って書く)

 

 

クッキー・セッション

f:id:chromiumpig:20200914154625p:plain

COOKIEとは

・閲覧者のブラウザに値を保存する技術

・有効期限を決めて保存することができるのでPCを切っても値が保存される

・発行元サイトの情報を持っているので、同じサイト内であればページをまたいで値を共有できる

 

●2回目以降:クッキーが届いている場合

・クッキーが受け取り専用変数「$_COOKIE」が連想配列で受け取る

・部屋の名前:クッキーの名前

・部屋の中に入る値:クッキーの値

 

■代入演算子の右辺で三項演算子

・条件 ? true時の処理:false時の処理;

・条件 :issset($_COOKIE['count'])

・countという名前のクッキーがあるか

・true時の処理:$_COOKIE['count']+1

・受け取ったクッキーに+1して変数countに代入

・false時の処理:1

・「1」を変数countに代入

■初回アクセス時はクッキーがないので変数countに「1」を代入

■2回目以降はクッキーが届いているので

クッキー内の値(前回アクセス数)+1して変数countに代入

$count = isset($_COOKIE['count']) ? $_COOKIE['count'] + 1 : 1;
 条件:カウント変数10以上だったら
if ($count >= 10) {
  10以上だったらクッキーを削除する処理
  $bool = setcookie('count'$counttime());
  10より小さい場合はクッキーを発行
else {
  $bool = setcookie('count'$count);
}

●setcookie関数:クッキー発行準備

・第1引数:クッキーの名前

・第2引数:クッキーの値

・第3引数(省略可):有効期限をタイムスタンプで設定

※省略時はブラウザを終了するまで

・戻り値:クッキー発行準備OKで「true」、クッキー発行準備NGで「false」