5ステップで簡単!PHPで購読機能を作る方法

PHPを使って購読機能を作るステップバイステップのガイド PHP
この記事は約8分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、初心者でもPHPで購読機能を作る方法が身につくでしょう。

購読機能はユーザーに最新情報を提供し、ウェブサイトの訪問頻度を上げるのに非常に有効なツールです。

それでは、さっそく学んでいきましょう。

●PHPとは?

PHPは、Webサイト制作に広く使用されるサーバーサイドのスクリプト言語です。

HTMLを動的に生成することが可能で、データベースとの連携も容易に行えます。

●購読機能とは?

購読機能は、ユーザーが特定のコンテンツやサービスの更新情報を受け取るための機能です。

例えば、ブログやニュースサイトでは新しい記事が投稿されると、購読者に通知が行くようになっています。

●PHPで購読機能を作るステップ

では、PHPで購読機能を作成するステップを見ていきましょう。

○ステップ1:データベースの準備

まずは、購読者の情報を保存するためのデータベースを準備します。

MySQLを使用し、購読者のメールアドレスを保存するテーブルを作成しましょう。

<?php
// MySQLサーバに接続
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

// テーブルの作成
$query = "CREATE TABLE subscribers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(255) NOT NULL
)";
$db->exec($query);
?>

このコードでは、PDOを使ってMySQLサーバに接続し、購読者のメールアドレスを保存するテーブルを作成しています。

テーブル名は”subscribers”で、主キーの”id”と、メールアドレスを表す”email”の2つの列を持っています。

○ステップ2:購読処理の作成

次に、ユーザーが購読ボタンをクリックしたときに、そのメールアドレスをデータベースに保存する購読処理を作成します。

<?php
// MySQLサーバに接続
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

// POSTリクエストからメールアドレスを取得
$email = $_POST['email'];

// メールアドレスをデータベースに保存
$query = "INSERT INTO subscribers (email) VALUES (:email)";
$stmt = $db->prepare($query);
$stmt->execute([':email' => $email]);
?>

このコードでは、$_POST[’email’]でメールアドレスを取得し、その後でデータベースに保存しています。

prepareメソッドとexecuteメソッドを使用して、SQLインジェクション攻撃を防ぐようにしています。

○ステップ3:購読情報の保存

ユーザーが購読した情報を確認できるよう、購読情報の保存も重要なステップです。

<?php
// MySQLサーバに接続
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

// 全ての購読者のメールアドレスを取得
$query = "SELECT email FROM subscribers";
$stmt = $db->query($query);
$subscribers = $stmt->fetchAll(PDO::FETCH_COLUMN);

// メールアドレスを表示
foreach ($subscribers as $subscriber) {
    echo $subscriber . "<br>";
}
?>

このコードでは、データベースから全ての購読者のメールアドレスを取得し、それらを順に表示しています。

○ステップ4:購読情報の表示

購読者に対して、購読した情報が正しく保存されていることを示すために、購読情報の表示機能も実装しましょう。

<?php
// MySQLサーバに接続
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

// メールアドレスに対応する購読者を検索
$email = $_GET['email'];
$query = "SELECT email FROM subscribers WHERE email = :email";
$stmt = $db->prepare($query);
$stmt->execute([':email' => $email]);
$subscriber = $stmt->fetch();

// 購読者が存在する場合、メールアドレスを表示
if ($subscriber) {
    echo "購読者: " . $subscriber['email'];
} else {
    echo "購読者が見つかりません。";
}
?>

このコードでは、URLパラメータからメールアドレスを取得し、そのメールアドレスに対応する購読者がデータベースに存在するかを検索しています。

購読者が存在する場合、そのメールアドレスを表示します。

○ステップ5:購読の解除処理

最後に、購読者が購読を解除できるように、購読の解除処理を実装します。

<?php
// MySQLサーバに接続
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

// メールアドレスに対応する購読者を削除
$email = $_POST['email'];
$query = "DELETE FROM subscribers WHERE email = :email";
$stmt = $db->prepare($query);
$stmt->execute([':email' => $email]);
?>

このコードでは、$_POST[’email’]でメールアドレスを取得し、そのメールアドレスに対応する購読者をデータベースから削除しています。

●PHPでの購読機能のカスタマイズ方法

ここまでのステップで基本的な購読機能の作成は完了ですが、実際のウェブサイトではさまざまなカスタマイズが必要になるでしょう。

例えば、ユーザーが購読を希望する特定のトピックを選択できるようにする、購読の通知メールを送信する、購読者の情報を分析してマーケティング活動に活用するなど、PHPの購読機能を更に拡張する方法は数多くあります。

●注意点と対処法

PHPで購読機能を作成する際、セキュリティ面に十分な配慮が必要です。

特に、ユーザーからの入力情報をそのままデータベースに保存する場合、SQLインジェクションといった攻撃のリスクが存在します。

SQLインジェクションは、攻撃者がSQL文に不正な命令を挿入することでデータベースを不正操作する攻撃手法です。

対策としては、ユーザーからの入力をそのままSQL文に組み込むのではなく、パラメータ化クエリを利用することが一般的です。

パラメータ化クエリを用いると、ユーザーからの入力がSQL文の一部として解釈されることはなく、攻撃者による不正操作を防ぐことが可能です。

パラメータ化クエリを用いたコードの一例を紹介します。

<?php
// MySQLサーバに接続
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

// メールアドレスに対応する購読者を削除
$email = $_POST['email'];
$query = "DELETE FROM subscribers WHERE email = :email";
$stmt = $db->prepare($query);
$stmt->execute([':email' => $email]);
?>

このコードでは、PDOのprepareメソッドとexecuteメソッドを使って、SQLインジェクション攻撃を防ぐ対策を取っています。

ユーザーからの入力($_POST[’email’])をパラメータ(’:email’)としてSQL文に組み込んでおり、このパラメータは後から値が代入されます。

この方法により、ユーザー入力が直接SQL文に組み込まれるのを防いでいます。

また、ユーザーからの入力情報をそのままデータベースに保存するときは、不適切な入力をフィルタリングするためのサニタイズ処理も重要です。

これにより、データベースに誤った形式のデータが保存されることを防ぎます。

まとめ

以上、PHPで購読機能を作成するためのステップと、その際の注意点について解説しました。

具体的なコードの実装例を通じて、データベースの準備から購読処理の作成、購読情報の保存と表示、そして購読の解除処理まで、一連の流れを理解することができたかと思います。

また、セキュリティ面での配慮点についても触れました。

これらの基本的な手法をマスターすることで、購読機能のより高度なカスタマイズに挑戦することができます。