見出し画像

IDとパスワードのホームページを作る方法

-「IDとパスワードの基本的な作り方」: 初めてインターネットを作成する人々に向けたシンプルなガイドを提供します。

手順

  1. FTPクライアントを用意する

    • まず、FTPクライアントソフト(例: FileZilla, Cyberduckなど)をインストールします。

  2. FTPサーバーに接続する

    • サーバーのホスト名、ユーザー名、パスワード、ポート番号などの情報を使用して、FTPクライアントを通じてサーバーに接続します。

    • 接続に成功すると、サーバー上のファイルとフォルダが表示されます。

  3. HTMLファイルを準備する

    • ローカルでHTMLファイルを作成しておきます。例えば、index.htmlというファイルがあるとします。

  4. PHPファイルを準備する

    • ローカルでPHPファイルを作成しておきます。例えば、authenticate.phpというファイルがあるとします。

  5. FTPでファイルをアップロードする

    • FTPクライアントを使って、サーバー上の適切なディレクトリ(通常はpublic_htmlやwwwフォルダ)に、index.htmlとauthenticate.phpファイルをアップロードします。

  6. HTMLとPHPファイルを連携する

    • すでに作成したindex.htmlファイル内で、authenticate.phpに対してフォームのデータを送信する設定をしておきます。

1,HTMLのコード

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ログイン認証</title>
    <style>
        body {
            background-color: #b3e5fc; /* 水色の背景 */
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            font-family: Arial, sans-serif;
        }

        #loginForm {
            background-color: white;
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
            text-align: center;
            width: 300px;
        }

        label {
            display: block;
            margin-bottom: 8px;
            font-size: 14px;
        }

        input[type="text"],
        input[type="password"] {
            width: 100%;
            padding: 10px;
            margin-bottom: 15px;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-sizing: border-box;
        }

        button {
            background-color: #ffeb3b; /* 黄色のログインボタン */
            color: black;
            padding: 10px 15px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            font-size: 16px;
            width: 100%;
        }

        button:hover {
            background-color: #fdd835; /* ホバー時の少し濃い黄色 */
        }

        #content {
            margin-top: 20px;
            text-align: center;
            width: 100%;
        }

        iframe {
            border: none;
        }
    </style>
</head>
<body>
    <form action="authenticate.php" method="post" id="loginForm">
        <h2>IDとパスワードを入力してください</h2>
        <label for="userId">ID:</label>
        <input type="text" id="userId" name="userId" required><br>
        <label for="password">パスワード:</label>
        <input type="password" id="password" name="password" required><br>
        <button type="submit">ログイン</button>
    </form>

    <div id="content" style="display:none;"m>
        <iframe src="〇〇〇〇埋め込むサイト〇〇〇〇" width="100%" height="600px"></iframe>
    </div>

    <script>
        document.getElementById('loginForm').onsubmit = function(event) {
            event.preventDefault();
            var xhr = new XMLHttpRequest();
            xhr.open('POST', 'authenticate.php', true);
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.onload = function () {
                if (xhr.responseText === 'success') {
                    document.getElementById('loginForm').style.display = 'none';
                    document.getElementById('content').style.display = 'block';
                } else {
                    alert('IDまたはパスワードが正しくありません。');
                }
            };
            var userId = document.getElementById('userId').value;
            var password = document.getElementById('password').value;
            xhr.send('userId=' + encodeURIComponent(userId) + '&password=' + encodeURIComponent(password));
        };
    </script>
</body>
</html>

〇〇〇〇埋め込むサイト〇〇〇〇
の部分を変更して下さい。

2.authenticate.php

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $userId = $_POST['userId'];
    $password = $_POST['password'];

    // IDとパスワードの組み合わせを確認
    $validCredentials = [
        '001' => 'aaa',
        '002' => 'aab',
        '003' => 'aac'
    ];

    if (isset($validCredentials[$userId]) && $validCredentials[$userId] === $password) {
        echo 'success';
    } else {
        echo 'fail';
    }
}
?>

ID 001 パスワード aaa
ID 002 パスワード aab
ID 003 パスワード aac
の場合にこのように組み合わせを書きます。

仕組み

  • クライアントサイド(HTMLとJavaScript): ユーザーが入力したIDとパスワードは、JavaScriptを使用してAJAXリクエストでサーバーに送信されます。このとき、IDとパスワードはHTTPリクエストの一部として送信されます。

  • サーバーサイド(PHP): PHPはサーバー上で実行され、クライアントから送信されたIDとパスワードをチェックします。認証に成功すれば、PHPは「success」というレスポンスを返し、失敗すれば「fail」を返します。この処理はすべてサーバー上で行われるため、クライアント(ユーザー)には内部のロジックが見えません。

セキュリティについて

  • PHPのソースコード: サーバー上のPHPコード自体は、ユーザーが直接アクセスすることはできません。ブラウザで表示されるのは、PHPが生成したHTMLやJavaScriptだけです。

  • HTTPSの利用: さらにセキュリティを強化するためには、サイトをHTTPS(SSL/TLS)で保護することが重要です。これにより、クライアントとサーバー間の通信が暗号化され、IDやパスワードが安全に送信されます。

この構成であれば、IDとパスワードは安全に管理され、クライアントサイドから見られることはありません。


いいなと思ったら応援しよう!

村井宗明(ITエンジニア・元文部科学大臣政務官)
ありがとうございます。 よろしくお願いします。