皆さんこんばんは!(更新時間が遅くなり申し訳ございません。)
毎回帰りの時間がゲリラ豪雨と重なるツキの無い男ポンコツエンジニアのGONです。
九州地方の方地震の影響は大丈夫でしょうか。
熊本県で震度7の地震を記録し、ニュースでもショッキングな映像が流れていました。
余震も続いてる様ですので十分にご注意なさってください。
前回までに人生賭けた求人サービスを構築するために『PHP』『postgreSQL』『AWS』を選んだ理由や、
サービス名の由来、求職者様向け&企業様向け機能のご紹介、面談の採用確率UP方法、
『PHP』『postgreSQL』『AWS』の実機練習用サイトをご紹介させていただき、
さらに『SQL』『PHP』『AWS』の基本的な操作方法について書かせていただきました。
今日は『PHP』第二弾として次の構文をご紹介させていただきます。
正直この求人サービスを構築するまでは『PHP』を書いたことが無い、
というかプログラマーとしては絶望的なコーディングアレルギー(コーディングしていると蕁麻疹が出る)のため
ほぼ初心者の方達と変わらない私です。
こんな私でも頑張ればWebサービスを構築出来ますので、皆さんも是非チャレンジしてみてください!
書籍しか情報が無い昔と違い、今は無料で無限の情報が手に入る時代です。
いやあ、本当に時代の移り変わりは早いものです。
さて、気を取り直してPHPの例文を紹介します。
【1】求職者が案件に応募する
→ 『INSERT』文の前に応募の重複チェックを行うのがポイントです。
<構文>
<?php
session_start();
// ログインチェック
if (!isset($_SESSION['user_id'])) {
die("ログインしてください。");
}
$pdo = new PDO(
"pgsql:host=localhost;dbname=job_db",
"postgres",
"password",
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]
);
$userId = $_SESSION['user_id'];
$jobId = $_POST['job_id'];
$message = $_POST['message'] ?? "";
// 同じ求人への重複応募をチェック
$sql = "
SELECT COUNT(*)
FROM applications
WHERE user_id = :user_id
AND job_id = :job_id
";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':user_id' => $userId,
':job_id' => $jobId
]);
if ($stmt->fetchColumn() > 0) {
die("この求人には既に応募しています。");
}
// 応募登録
$sql = "
INSERT INTO applications
(user_id, job_id, status, cover_letter)
VALUES
(:user_id, :job_id, :status, :cover_letter)
";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':user_id' => $userId,
':job_id' => $jobId,
':status' => $status,
':cover_letter' => $cover_letter
]);
echo "応募が完了しました。";
**【2】企業側が登録ミスした案件を削除
→ シンプルですが、実際の運用ではなりすまし対策等が含まれます
<構文>
<?php
try {
$pdo = new PDO(
"pgsql:host=localhost;dbname=job_db",
"postgres",
"password",
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]
);
// 削除する求人ID
$jobId = $_POST['job_id'];
$sql = "DELETE FROM jobs WHERE id = :job_id";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':job_id' => $jobId
]);
echo "求人を削除しました。";
} catch (PDOException $e) {
echo "エラー: " . $e->getMessage();
}
?>`
今回も簡単な『SQL』を実行するための『PHP』の例をご紹介しましたが、
実際にはなりすましを防ぐためにCSRFF(Cross-Site Request Forgery)対策をするなど、
もう少しセキュリティを考慮した構文になります。
次回以降、そちらをご紹介させていただきたいと思います。
コミュニティの方々に助けられながら構築した求人サービスが以下になります。
企業の方、エンジニアの方に使っていただけると非常に喜びます。
▼求人マッチングサービス【ヴェテラン】
https://veteran-work.com/
「セキュリティはよ」
「PHPじゃなくてJavaで書いて」
などご意見いただけますとモチベーションが上がるのでよろしくお願いいたします!
本日もお疲れ様でした。
明日もよろしくお願いします。