簡単なPHP Webアプリ作成

ここまででPHPとMySQLの基本が身についたら、次は実践的な「ミニWebアプリ」の開発にチャレンジしましょう。
本記事では、PHPとMySQLを使った以下3つの簡単なアプリケーションを紹介します:

  • ① 会員登録とログイン機能
  • ② お問い合わせフォーム
  • ③ TODOリストや掲示板(DB連携)

① 会員登録とログイン機能(セッション管理)

usersテーブル例

CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(255) NOT NULL ); 

register.php(新規登録)

<?php 
 $pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", ""); 
 $message = ""; 
 if ($_SERVER["REQUEST_METHOD"] === "POST") { 
  $user = trim($_POST["username"]); 
  $pass = password_hash($_POST["password"], PASSWORD_DEFAULT); 
  $stmt = $pdo-&gt;prepare("INSERT INTO users (username, password) VALUES (?, ?)"); 
  $stmt-&gt;execute([$user, $pass]); 
  $message = "登録が完了しました。"; 
 } 
>
<form method="post"> ユーザー名<input name="username"&><br>
パスワード:<input type="password" name="password"><br>
<input type="submit" value="登録"></form> 
<p><?= $message ?></p> 

login.php(ログイン)

<?php 
 session_start(); 
 $pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", ""); 
 $error = ""; 
 if ($_SERVER["REQUEST_METHOD"] === "POST") { 
  $user = $_POST["username"]; 
  $pass = $_POST["password"]; 
  $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?"); 
    $stmt-&gt;execute([$user]); 
    $data = $stmt-&gt;fetch(); 
  if ($data &amp;&amp; password_verify($pass, $data["password"])) { 
    $_SESSION["user"] = $user; header("Location: dashboard.php"); 
    exit; 
  } else { 
   $error = "ログインに失敗しました。"; 
  } 
 } 
>
<form method="post">ユーザー名:<input name="username"><br>
パスワード:<input type="password" name="password"><br>
<input type="submit" value="ログイン"></form>
<p><?= $error ?></p>

② お問い合わせフォーム(バリデーション+DB保存)

contactsテーブル例

CREATE TABLE contacts ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100), message TEXT ); 

contact.php

<?php 
 $pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", ""); 
 $msg = ""; 
 if ($_SERVER["REQUEST_METHOD"] === "POST") { 
  $name = trim($_POST["name"]); 
  $email = trim($_POST["email"]); 
  $message = trim($_POST["message"]); 
  if ($name &amp;&amp; filter_var($email, FILTER_VALIDATE_EMAIL)) { 
   $stmt = $pdo-&gt;prepare("INSERT INTO contacts (name, email, message) VALUES (?, ?, ?)"); 
   $stmt-&gt;execute([$name, $email, $message]); 
   $msg = "お問い合わせを受け付けました。"; 
  } else { 
   $msg = "入力内容に不備があります。"; 
  } 
 } 
>
<form method="post">名前:<input name="name"><br>
メール:<input name="email"><br>
メッセージ:<textarea name="message"></textarea><br>
<input type="submit" value="送信"></form> 
<p><?= $msg ?></p>

③ TODOリスト/掲示板アプリ(DB操作と一覧表示)

todosテーブル例

CREATE TABLE todos ( id INT AUTO_INCREMENT PRIMARY KEY, content TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); 

todo.php(追加+表示)

<?php 
 $pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", ""); 
 if ($_SERVER["REQUEST_METHOD"] === "POST" &amp;&amp; !empty($_POST["task"])) { 
  $task = trim($_POST["task"]); 
  $stmt = $pdo-&gt;prepare("INSERT INTO todos (content) VALUES (?)"); 
  $stmt-&gt;execute([$task]); 
 } 
 $todos = $pdo-&gt;query("SELECT * FROM todos ORDER BY id DESC")-&gt;fetchAll(); 
>

<h2>TODOリスト</h2>
<form method="post">やること:<input name="task"><input type="submit" value="追加"></form><ul><?php foreach ($todos as $todo): >
 <li><?= htmlspecialchars($todo["content"]) ?>
 (<?= $todo["created_at"] ?>)
 </li>
 <?php endforeach > 
</ul>

まとめ

今回は、PHPとMySQLを使って以下の3つの簡単なWebアプリを構築しました。

  • 会員登録+ログイン機能: セッションとパスワード管理
  • お問い合わせフォーム: バリデーションとDB保存
  • TODOリスト/掲示板: DBからデータを追加&表示

このような小規模アプリから始めて、機能追加(削除・編集・ページネーション)へと発展させることで、実務レベルのスキルが身につきます。

採用情報 長谷川 横バージョン
SHARE
PHP Code Snippets Powered By : XYZScripts.com