2019年10月3日Webエンジニアツイートシェアはてブ送るPocket前回の記事「【PHPでwebアプリを作る】登録フォームでユーザーの新規登録をする」でユーザーの新規登録を作成しました。今度はそのユーザーでのログイン処理を作っていかなければいけないわけですが、ログイン処理はどう実装すればいいのでしょうか?ログイン処理の実装方法web系のログイン処理ではセッション変数というものを使ってログイン状態の判断をします。セッション変数とは簡単に言うと利用者のブラウザ側で保持され続ける変数みたいな感じです。ログイン処理に成功したら、セッション変数Authenticationをtrueにして、それがtrueの間はログイン状態と見なすといった使い方ができます。ログインの為のフォーム今までの記事を見てきていただいた方ならわかると思いますが、まずはメールアドレスとパスワードを入力するフォーム画面を作りましょう。フォーム自体はユーザー登録で使ったのとほぼ同一で使いまわせます。あとは入力された値と以下のクエリを合わせます。※今まで作ってきたデータベースやテーブルの項目での例です。別途作成している場合は名前等を調整してください。?;ステートメントを使うと以下のような形です。$password);$stmt->execute();入力されたメールアドレスとパスワードと一致するレコードがあればログイン成功と判断するといった感じですね。ユーザーの判定ログインは成功したとして、そのユーザーが誰であるかも持続的に記録しておかなければ各処理で誰が行うものなのかがわかりません。あるのはuser_idもセッション変数で持っておき、必要に応じてユーザー情報を参照するといったところですかね。それらを合わせるとログイン処理は以下のような実装になります。$db->close();?>すごい不格好な継ぎ足しスタイルになっていて申し訳ないですが、session_start()は一番最初に書く必要があるので今までの例でいうheader.phpの先頭に加えるのが良いと思います。入力されたメールアドレスとパスワードに一致するレコードをusersテーブルから取得して、該当があればログイン情報をセッションに格納する形です。あとは試しに以下のような記述をした別ページで値が格納されているかを確認してみてください。$_SESSION['user_id'];?>値が入っていればOKです、別ページにまたがっても認証情報は維持されています。まとめ正直つっこみどころは万歳の内容なのであまり真剣に掘り下げる必要はないです。フレームワークを使ったらフレームワークの作法に乗っ取って認証も書くことになりますのでイチからになります。基本の動きがどうなっているかを最低限でいいので作ってみて理解していくと良いと思います。web系サーバサイドの開発をメインに10年以上お仕事をさせていただいております。