一から始めるPHPホームページ作成!7ステップで独立サイト立ち上げ – JPSM

一から始めるPHPホームページ作成!7ステップで独立サイト立ち上げ

PHPを使ったホームページ作成のイメージ図PHP
この記事は約14分で読めます。

 

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

このサービスは複数のSSPによる協力の下、運営されています。

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

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

また、理解しにくい説明や難しい問題に躓いても、JPSMがプログラミングの解説に特化してオリジナルにチューニングした画面右下のAIアシスタントに質問していだければ、特殊な問題でも指示に従い解決できるように作ってあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

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

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

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

はじめに

この記事を読めば、一から自分だけのホームページを作ることができるようになります。

PHPというプログラミング言語を利用して、どのようにホームページを作り、どのようにカスタマイズし、さらにはどのように上手に使いこなすのか、具体的な手順とサンプルコードを用いて解説します。

●PHPとは

PHPは、Webサイト制作によく使用されるプログラミング言語の一つです。

主にサーバーサイドで動作し、HTMLと組み合わせて使用されます。

○PHPの特徴

PHPの最大の特徴は、その柔軟性と簡便さです。

初心者でも扱いやすい構文を持ち、Webサイトの動的な部分を効率よく作成することが可能です。

また、データベースとの連携も容易であり、ユーザー情報の管理やブログ記事の更新など、動的な情報の取り扱いに威力を発揮します。

●PHPでホームページを作るための7ステップ

では、実際にPHPを使ってホームページを作る手順を見ていきましょう。

○サンプルコード1:基本的なPHPコードの書き方

まずはPHPの基本的なコードの書き方から始めましょう。

このコードでは、PHPで文字列を出力するためのecho関数を使っています。

echo関数は、指定した文字列をブラウザに表示する役割を持っています。

<?php
echo "Hello, World!";
?>

このコードを実行すると、ブラウザ上に「Hello, World!」と表示されます。

これは、PHPの基本的な文法として理解しておくとよいでしょう。

○サンプルコード2:HTMLとPHPの組み合わせ

次に、HTMLとPHPを組み合わせたコードを見ていきます。

このコードでは、PHPを用いて動的なWebページを作成しています。

<!DOCTYPE html>
<html>
<body>

<h1>私の初めてのPHPページ</h1>

<?php
echo "Hello World!";
?>

</body>
</html>

上記のコードをブラウザで開くと、「私の初めてのPHPページ」という見出しと、「Hello World!」という文言が表示されます。

これにより、HTMLの中にPHPのコードを埋め込むことで、動的なWebページが作成できることを理解できます。

○サンプルコード3:フォームからデータを受け取る

続いて、フォームからデータを受け取るPHPのコードを見ていきましょう。

このコードでは、HTMLのフォームから送られてきたデータをPHPで処理しています。

この例では、名前を入力するフォームからデータを取得し、それを表示しています。

<!DOCTYPE html>
<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  名前: <input type="text" name="name">
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 入力された名前を取得
    $name = $_POST['name'];
    echo $name;
}
?>

</body>
</html>

このコードでは、フォームから送られてきたPOSTデータを$_POST[‘name’]で取得し、それをechoで出力しています。

○サンプルコード4:データベースへの接続と操作

PHPはデータベースと連携する機能も強力で、ここではデータベースへの接続とその操作を示すコードを見ていきましょう。

この例ではMySQLデータベースへの接続と、データの取得を行います。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// MySQLへの接続を確立
$conn = new mysqli($servername, $username, $password, $dbname);

// 接続チェック
if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}

// SQLを実行
$sql = "SELECT id, name FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 結果を一行ずつ出力
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

このコードでは、mysqliを用いてデータベースへ接続し、SELECT文を使ってデータを取得しています。

取得したデータはwhileループを用いて一行ずつ表示しています。

○サンプルコード5:エラーハンドリング

PHPではエラーハンドリングも重要です。

予期せぬ問題が発生した場合に備えて、適切にエラーを捉えて対処する方法を確認しましょう。

このコードでは、例外処理を用いてエラーハンドリングを実行しています。

<?php
function checkNum($number) {
    if($number>1) {
        throw new Exception("値は1以下でなければなりません");
    }
    return true;
}

try {
    checkNum(2);
    echo '値は1以下です';
}

catch(Exception $e) {
    echo 'エラー: ' .$e->getMessage();
}
?>

このコードでは、関数checkNum内で値が1より大きい場合に例外を投げています。

そして、try-catchブロックを使ってその例外を捉え、エラーメッセージを出力しています。

○サンプルコード6:セキュリティの考慮

PHPにおいてはセキュリティも大きな問題です。

下記のコードでは、ユーザーからの入力を適切にエスケープすることで、SQLインジェクション攻撃を防ぐ方法を示しています。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}

$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

$firstname = "John";
$lastname = "Doe";
$email = "[email protected]";
$stmt->execute();

echo "新規レコードを追加しました";

$stmt->close();
$conn->close();
?>

このコードでは、プリペアドステートメントとバインドパラメータを使ってユーザーからの入力をエスケープしています。

これにより、SQLインジェクション攻撃を防ぐことが可能です。

○サンプルコード7:PHPでのメール送信

PHPではメール送信も可能です。

下記のコードはPHPでメールを送信する一例です。

<?php
$to      = '[email protected]';
$subject = 'テストメール';
$message = 'これはテストメールです';
$headers = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

このコードでは、mail関数を使ってメールを送信しています。

メールの宛先、題名、本文、ヘッダーを指定し、それをmail関数に渡すことでメールが送信されます。

●PHPホームページ作成の注意点と対処法

PHPでホームページを作成する際は、いくつかの注意点と対処法を心に留めておくと良いでしょう。

  1. エラーハンドリング:適切なエラーハンドリングを行うことで、思わぬ問題からアプリケーションを保護することができます。
  2. セキュリティ:ユーザーからの入力を適切にフィルタリングし、SQLインジェクションなどの攻撃を防ぎます。
  3. パフォーマンス:適切な設計と最適化により、アプリケーションのパフォーマンスを向上させることができます。

これらのポイントを考慮に入れつつ、より良いPHPのコードを書いていくことが重要です。

●カスタマイズ方法と応用例

PHPは非常に柔軟な言語であり、さまざまなカスタマイズ方法と応用例があります。

例えば、データベースと連携して動的なウェブページを生成したり、メール送信機能を利用してユーザーとコミュニケーションを取るなど、多岐にわたる用途で活用することができます。

その他、CMSの構築、Eコマースサイトの開発、社内ツールの制作など、要件に合わせてカスタマイズすることが可能です。

また、多くのフレームワークがPHPで作成されているため、これらを利用することで開発効率を大きく向上させることができます。

○サンプルコード8:データベースを利用した会員登録機能

PHPとデータベースを組み合わせることで、会員登録機能を実装することができます。

この例では、ユーザーの情報をデータベースに保存する会員登録機能を示しています。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}

$stmt = $conn->prepare("INSERT INTO Users (username, password, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $password, $email);

$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$email = $_POST['email'];
$stmt->execute();

echo "新規ユーザーを追加しました";

$stmt->close();
$conn->close();
?>

このコードでは、プリペアドステートメントとバインドパラメータを使用して、ユーザーから入力された情報をデータベースに保存しています。

これにより、SQLインジェクション攻撃を防ぐことができます。

また、パスワードはハッシュ化されて保存されるため、セキュリティも考慮されています。

○サンプルコード9:ログイン機能の実装

次に、ログイン機能の実装を見てみましょう。

このコードでは、ユーザーが入力した情報とデータベースに保存されている情報を比較して、ログインの可否を判断します。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}

$stmt = $conn->prepare("SELECT password FROM Users WHERE username = ?");
$stmt->bind_param("s", $username);

$username = $_POST['username'];
$stmt->execute();
$result = $stmt->get_result();
$hash = $result->fetch_assoc()['password'];

if (password_verify($_POST['password'], $hash)) {
    echo 'ログイン成功';
} else {
    echo 'ログイン失敗';
}

$stmt->close();
$conn->close();
?>

このコードでは、まずユーザー名に対応するパスワードのハッシュをデータベースから取得します。

その後、password_verify関数を使ってユーザーから入力されたパスワードがそのハッシュと一致するかをチェックします。

○サンプルコード10:掲示板機能の作成

掲示板機能はWebアプリケーションでよく見られる機能の一つです。

下記のコードは、PHPとデータベースを使った掲示板機能の実装例です。

ユーザーからの入力をデータベースに保存し、それを表示する基本的な機能を持っています。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $stmt = $conn->prepare("INSERT INTO Posts (username, message) VALUES (?, ?)");
    $stmt->bind_param("ss", $username, $message);

    $username = $_POST['username'];
    $message = $_POST['message'];
    $stmt->execute();

    echo "投稿が完了しました";
}

$stmt = $conn->prepare("SELECT username, message FROM Posts");
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    echo $row['username'] . ": " . $row['message'] . "<br>";
}

$stmt->close();
$conn->close();
?>

このコードでは、POSTリクエストが来た場合に、ユーザー名とメッセージをデータベースに保存します。

そして、データベースから全ての投稿を取得して表示します。

これにより、ユーザーがメッセージを投稿すると、そのメッセージが掲示板上に即座に表示される仕組みを実装しています。

まとめ

PHPはWebアプリケーションを開発する際に非常に便利な言語であり、データベースとの連携も容易です。

本記事では、基本的なPHPのコードの書き方から、HTMLとPHPの組み合わせ、フォームからデータを受け取る方法、データベースとの接続と操作、エラーハンドリング、セキュリティの考慮、メール送信機能の実装、会員登録機能やログイン機能、掲示板機能の作成といった具体的な機能の実装まで、様々なサンプルコードを通じてPHPの使い方を紹介しました。

これらのサンプルコードはあくまで基本的なものであり、実際のアプリケーション開発には、セキュリティの強化やパフォーマンスの最適化など、更なる工夫が求められます。

しかし、これらを理解し活用することで、PHPによるWebアプリケーション開発の基礎を身につけることができるでしょう。