less than 1 minute read

学んだこと

セッションに値を保存する

セッションとは?

  • セッションとは、サーバー側でユーザーごとの情報を一時的に保持し、ユーザーの状態を管理する仕組み。
  • Cookie はクライアント側で情報を一時的に保持する。
  • セッションはサーバ側でユーザごとに情報を一時的に保持する。
  • そのため、機密データはセッション、機密ではないデータは Cookie に保存する。

index.php

  • $_SESSION[変数名] = 値;でセッションに保存することができる。
  • session_regenerate_id()はセッション ID を再生成する関数
    • セッション ID を盗み取られてしまうと、不正利用される可能性がある。
    • そのため、セッション ID の再生成を行い安全性を高める。
<a href="page02.php">2ページ目</a>
    <?php
    session_start();
    session_regenerate_id();
    $_SESSION['message'] = 'セッションに保存した値です';
    ?>
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
  </body>
</html>

page02.php

  • $_SESSION[変数名]でセッションの値を取得する。
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Page02</title>
</head>
<body>
    セッションの値: <?php echo $_SESSION['message'];?>
</body>
</html>

alt text

ランダムの値を取得

  • rand を使うことで、ランダムな値を取得することができる。
    • rand(最小値, 最大値)で設定を行う。
    • 最小値から最大値の間でランダムな値を生成し、戻り値として返す。
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
    $random = rand(0, 10);
    if ($random === 0){
        echo 'あたり';
    }else{
        echo 'はずれ';
    }
    ?>
</body>
</html>

ファイルをアップロードする

index.html

  • form 内で enctype=”multipart/form-data”と設定すると、ファイルをアップロードできるようになる。
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=<device-width>, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="submit.php" method="post" enctype="multipart/form-data">
        <label>写真:<input type="file" name="picture"></label>
        <input type="submit" value="送信する">
    </form>
</body>
</html>

submit.php

  • $_FILES['picture']でアップロードした画像データを取得することができる。
    • アップロードしたファイルの拡張子を確認する場合は、$file['type']で確認する。
    • 悪意のあるデータがアップロードされないよう、アップロードするファイルの拡張子など制限しておくと良い。
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
    $file = $_FILES['picture'];
    if ($file['type'] === 'image/jpeg' ||$file['type'] === 'image/png'){
        $path = 'images/' . $file['name'];

        $success = move_uploaded_file($file['tmp_name'], $path);
        if($success){
            echo '成功しました';
        }else{
            echo '失敗しました';
        }
    }else{
        echo 'ファイル形式が不正です';
    }
    ?>
</body>
</html>

Tags:

Updated: