会員サイト構築の記事

ARTICLE
会員サイト構築

PHPのログイン機能について|セッションや認証の仕組みを解説

掲載日:2021年8月6日更新日:2024年6月28日

会員制サイトの制作する際に欠かせないがログイン機能です。初心者でも比較的習得しやすいPHPでは、ライブラリやフレームワークを利用することでログイン機能を実装できます。この記事ではPHPでログイン機能を実装する方法や仕組みについて解説します。

PHPとは

PHPとは

PHPとはWebページを構築するためのプログラミング言語です。プログラミング言語には非常に多くの種類がありますが、使われている文法や仕様が比較的容易なことから、プログラミング初心者でも習得しやすい言語として知られています。サイト構築だけでなく、アプリケーション開発にもよく使われている言語でもあります。

動的コンテンツに向いているプログラミング言語

PHPは動的ページや動的コンテンツ作成に向いているプログラミング言語です。動的コンテンツとは、ユーザーが変更を加えるとすぐに反映されるページのことです。

動的コンテンツの代表的なものには掲示板やブログがあり、多くの場合PHPによって構築されています。ショッピングサイトをはじめとする会員登録制のサイトにもPHPが使われていることが多く、ユーザーの検索結果や購買情報などを基に表示内容を変えていることから動的コンテンツの部類に入ります。

HTMLと組み合わせて使用できる

HTMLとPHPは構造が似ており、どちらも初心者でも習得しやすい言語です。ところがHTMLはWebサイト制作において、ページを構成するためのマークアップ言語にあたります。そのため、HTMLは動的コンテンツに対応していないことから機能が大幅に制限されてしまうのです。

掲示板や会員サイトなどの動的コンテンツを作成したい場合は、PHPと組み合わせることで構築できるWebサイトの幅が広がります。

ログイン機能に欠かせない「セッション」とは

ログイン機能に欠かせない「セッション」とは

セッションとは、サーバー側に一時的にデータを保存する仕組みのことを指します。具体的にはログインやログアウト、閲覧履歴などユーザーごとのデータを保持する目的で利用されます。

認証機能を実現するための合言葉

セッションではログインした段階で本人確認情報であるID・パスワードを保存し、同時にPCとサーバーの信頼関係ができていることを証明する合言葉を発行します。

ページを行き来する際は、セッションで保存した本人確認情報と合言葉のようなものをサーバーに送ることで、ログイン状態を維持したままサイト閲覧が可能なのです。ログアウト時にはセッションからこの合言葉が破棄され、次回ログインの際には新しい合言葉が発行されます。

PHPでセッション機能を使用するには

セッション機能はsession_start関数を使用することでセッション管理がスタートします。「$_SESSION[‘キー名’] = 値」と記述することで、同じブラウザから訪問した回数をカウントできます。

異なるブラウザでアクセスすると、セッションが異なるため訪問回数が1に戻ります。countというセッションが存在するかどうかを判定し、登録されていなければ「$_SESSION[‘count’] = 1;」と記述し、登録されていれば「$_SESSION[‘count’]++;」と記述します。この記述によって、同じブラウザでアクセスした回数を加算していくプログラムが構築できます。

セッションの有効期限設定とは

会員制サイトにログインしたまま放置すると、一定時間で再度ログインするよう要求された経験がある方もいるでしょう。ログイン状態を維持したままだと第三者による流出や不正利用のリスクが高まることから、セッションには有効期限を設定できるようになっています。ここではセッションの有効期限設定について解説します。

session_start関数による設定

PHP7.0.0からは、session_start関数に有効期限を指定するオプションがつけられるようになりました。これまではphp.iniのファイルを操作して有効期限を上書きしていましたが、引数に[‘キー名’ => 秒数]を指定することで比較的容易に設定が可能になりました。

session_set_cookie_params関数による設定

セッションの有効期限を3分に設定した場合には、session_set_cookie_params(60 * 3);」「と記述します。この設定では、3分以内であればブラウザを閉じてしまっても再度立ち上げれば訪問回数が上書きされていくため、ログインをする必要はありません。しかし、3分間アクセスされなかった場合にはセッションの有効期限切れとなるため、またログインから始めなければなりません。

PHPで開発されたサービスとは

PHPで開発されたサービスとは

PHPではログイン機能のほかに、検索機能やショッピングカート機能などを実装できます。そのため、私たちが普段使う身近なサービスやアプリケーションにはPHPが使われているものがたくさんあるのです。ここではPHPで構築されている、または過去に構築されていたサービスやアプリケーションを紹介します。

WordPress

Webコンテンツを手軽に作成・管理できるシステムをCMSと呼びますが、CMSの中でも世界でもシェア率が高いWordPressはPHPで構築されています。WordPressではプラグインやHTMLなどを用いてサイト構築やカスタマイズを行うことが多いのですが、PHPの知識を持っている場合はさらに細部までカスタマイズが可能です。

Facebook

ビジネスシーンにも活用できるSNSとして現在も多くのユーザーが利用しているFacebookですが、サーバー動作部分はPHPによって開発されたプログラムを使用していました。2014年からはFacebookが独自に開発したプログラミング言語である「Hack(ハック)」に移行していますが、初心者でも習得しやすいプログラミング言語で構築されていた時期があるのです。

EC-CUBE

EC-CUBEはオープンソース型のECサイト構築システムで、誰でも手軽にECサイトを作成できるようになっていますが、実はこのシステムもPHPで作られています。PHPではショッピングカート機能を構築できるため、ECサイトを作成することも可能なのです。カートに入れた商品はいくつなのかをカウントしたり、商品の合計金額がいくらなのかを自動で計算したりするシステムもPHPで構築できます。

PHPで認証の仕組みを作るには

PHPで認証の仕組みを作るには

個人情報を登録しておく必要がある会員制サイトなどでは、情報を守るために認証機能を構築しなければなりません。認証システムを自作するには、高度なプログラミング知識と膨大な時間が必要なだけでなく、セキュリティ面の懸念点が多いため避けるべきだといえます。

PHPで認証の仕組みを構築するためには、すでに機能が搭載されているライブラリやフレームワークを活用するのがおすすめです。ここでは、自作認証システムの危険性とライブラリ・フレームワークについて解説します。

セキュリティ面から自作は避けたほうがよい

認証システムは個人情報を守る点で非常に重要な役割を担っているため、たとえ高度な知識を持ち合わせていたとしても自作認証システムを導入するのはリスクが高いといえます。過去には自作認証システムによって個人情報漏えいを止められなかったり、第三者の侵入を許してしまったことでコンテンツ内容が書き換えられてしまったりといった事故が発生しています。セキュリティに関する事故は企業の損失が大きいため、自作認証システムの導入は避けましょう。

合わせて読みたい記事「PHPを使ったログイン機能は安全?セキュリティ観点での詳細を解説

ライブラリとフレームワークを活用する

PHPには、システム構築を比較的容易に行えるライブラリとフレームワークがあります。これらには、会員制サイトを構築するためのログイン機能を搭載したものや、セキュリティ面でも一定のクオリティを保てるものが数多く存在しています。ここではライブラリとフレームワークそれぞれの機能について解説します。

ライブラリとは

Webサイト構築時によく使われるプログラムをひとまとめにしたものがライブラリです。たとえば会員制サイトを制作する際には、会員登録ページやログイン画面などの複数ページを構築する必要があります。1ページずつ構築するのは手間がかかりますし、プログラミング言語の知識が浅い人であれば多くの時間を費やしてしまうことでしょう。

会員登録ページやログイン画面に関する機能をまとめたライブラリを使用することで、時間や手間をかけることなく手軽にページ構築が可能になります。非常に便利な機能ですが種類がかなりたくさんあるため、どのようなサイトを制作するかを明確にした上で探すことをおすすめします。

フレームワークとは

アプリケーションやシステム開発時のベースとなる機能を備えたものがフレームワークです。機能の骨組みまで設計されているため、コードを一部書き加えるだけで作動するようになっています。システム構築には膨大なプログラムを記述しなければなりませんが、フレームワークを導入することで時間や工数を大幅に削減できます。

また、フレームワークを活用することで経験年数が浅い人でも一定のクオリティを保てる点も大きなメリットだといえます。

合わせて読みたい記事「PHPのログイン認証にフレームワークを用いるメリットを解説

PHPでログイン機能を実装する手順

ここからは、実際にログイン機能を実装する手順について解説します。

HTMLを使ってページを作る

まずは、ログインに必要な情報を入力するフォームを作成する必要があります。
PHPでログイン機能を実装するはじめの一歩として、HTMLでログインフォームを作成しましょう。

MySQLでデータベースを作る

MySQLとは、データベース管理システムの一つです。
データベース管理システムとは、データを効率よく管理するためのシステムであり、大容量のデータに対しても高速で動作したりなど、非常に実用性が高くで非商用利用であれば無償で使用が可能です。
ログイン機能の実装はHTMLを使ったログインページの作成だけでなく、MySQLを使ったデータベース作りもセットで行いましょう。

コマンドを使ってユーザー情報を入力する

認証する対象となる情報をデータベースに追加できるように設定を行いましょう。

PHPでログイン認証の処理を作る

下準備が完了したので、PHPでログイン機能を作っていきましょう。
ここまで大枠をご説明させていただきましたが、具体的なコードや詳細に関しては以下の記事でご説明していますので、気になる方はぜひご一読ください。

合わせて読みたい記事「ログイン機能とは?仕組みやPHPで実装する手順を解説

PHPでログイン機能を実装するのにおすすめのライブラリ

PHPでログイン機能を実装するのにおすすめのライブラリ

ログイン機能実装におすすめのPHPライブラリはSentinelです。会員登録やログイン画面をスムーズに導入できるライブラリで、メールアドレスのほかにもFacebookと連携して会員登録ができるような認証システムが用意されています。ほかのライブラリと比較して、会員登録情報を複数登録しておける点がメリットだといえます。

PHPでログイン機能を実装するのにおすすめのフレームワーク

PHPでログイン機能を実装するのにおすすめのフレームワーク

PHPには複数のフレームワークが存在しますが、「Laravel」と「CakePHP」は世界でもよく使われているフレームワークとして知られています。ここでは、それぞれのフレームワークに関するメリットとデメリットを解説します。

Laravel

Laravelはフレームワークの中でも新しいもので、2011年にリリースされました。世界でもっとも使用されているフレームワークのひとつで、2019年には世界シェア率1位を獲得しています。これまでリリースされたフレームワークのいいところを取り入れて作られていることから、学習のしやすさに定評があります。利用するユーザーが多いことから学習教材が豊富で、あらゆる書籍やコンテンツを役立てることで基礎から応用まで学ぶことが可能です。

Laravelを利用するメリット

Laravelを利用するメリットには、「開発経験が浅くても混乱することなく開発ができる」ことと、「拡張性と自由度が高い」ことがメリットとして挙げられます。Laravelの開発環境はMVCモデルと呼ばれており、データ処理を行うModelと画面表示を行うView、全体制御を行うControllerの3パーツに分けて開発を進めます。パーツを分けて作業を行うため、どこにどのような処理を記述するのかが明確になり、混乱することなく開発を進められる点がメリットといえます。

さらにLaravelは比較的新しいフレームワークであるため、現在もコンスタントに機能拡張のためのバージョンアップが行われています。これまで時間がかかっていた作業が効率的になったり、できることがどんどん増えていたりと便利な機能が次々と登場しています。

そのため、Laravelに搭載されている機能はほかのフレームワークと比べても比較的多く、拡張性やカスタマイズの自由度が高い点もメリットといえるでしょう。

Laravelを利用するデメリット

Laravelは多機能で自由度が高い点がメリットですが、「処理速度の遅さ」「複雑化しやすい」点がデメリットとして挙げられます。Laravelがリリースされる前にトップシェアを獲得していたCakePHPと比較すると、多機能であるがゆえに処理速度が遅くなってしまいがちです。無駄なコーディングを行っていないかを確認するなど、少しでも動作を軽くするよう心がけましょう。

Laravelは自由度が高いことから、同じ処理でも人によって記述するコードが異なる場合があり、異なるコードによってエラーが発生する可能性があります。大規模なプロジェクトの際や複数人でコーディングを行う場合には、コーディングルールをきちんと設けるようにしましょう。

CakePHP

CakePHPは開発スピードの速さに定評があり、シンプルなシステム構築に役立ちます。規約が厳しいことから柔軟性はLaravelと比較して劣るものの、コーディングルールに一貫性があるため、複数人が開発に関わっている際も混乱することなく開発を進められます。初心者でも理解しやすくコミュニティが活発なため、学習を進めるうえでわからない部分を気軽に聞ける環境が整っています。

CakePHPを利用するメリット

CakePHPを利用するメリットには「誰でも素早く開発が可能」なことが挙げられます。CakePHPにはO/Rマッピングと呼ばれる仕組みが搭載されており、短い記述からレコード抽出や書き換えが可能です。Laravelにも搭載されているMVCモデルはCakePHPにも搭載されていますが、このMVCモデルをさらに簡単に構築できるbake機能も備わっています。bake機能は対話形式の質問に回答するだけでプログラムの生成が自動で行われる機能で、MVCモデルの基盤となる部分であればソースコードを書くことなく構築が可能になるのです。

これらの理由から、CakePHPはシステム構築を短く簡略化することに長けているといえます。

CakePHPを利用するデメリット

CakePHPは規約が厳しいのが特徴で、少しでも柔軟性を取り入れようと試みても規約に縛られる事が多く、追加機能の拡張やカスタマイズ性能が低い点がデメリットといえます。設計段階で必要機能を洗い出した上で、細かいカスタマイズの必要がなかったり機能拡張の要望がない場合にはCakePHPを導入するとよいでしょう。

圧倒的な柔軟性とセキュリティで思い通りの会員向けサイト・サービスを構築するなら

当社のご提供する 「会員管理・会員サイト構築ソリューション」は、会員向けのサイトやサービスに必要とな要素をワンストップで提供するシステムです。

会員データ管理からマイページ作成・ログインなどの基本機能から、メール配信やアンケート作成、問い合わせ、フォーム作成、決済連携まで、会員管理・運営に必要な機能が充実。また、金融機関・官公庁でも採用されている高いセキュリティで会員の大切なデータを管理します。WordPressやMovableTypeを始めとした各種CMSや基幹システム等とのAPI連携も可能です。

ファンクラブやユーザーサポートサイト、学会・協会サイト、申請受付サイト、キャンペーン受付サイト、イベント受付管理、入居者サイトなど様々な業界・用途・シーンで延べ11,000以上のご利用実績がございます。

サービスの詳細については「会員管理・会員サイト構築ソリューション」のページをご覧いただくか、サービス導入をご検討中の方はこちらからぜひお問い合わせください。

まとめ

PHPはプログラミング言語のひとつで、初心者でも比較的容易に習得できます。PHPでサイト構築を行う際は、よく使われるプログラムをまとめた「ライブラリ」とシステム開発時の基本機能を備えた「フレームワーク」を活用するとよいでしょう。ログイン機能を実装するのにおすすめのライブラリは「Sentinel」、フレームワークは必要機能に応じて「Laravel」か「CakePHP」を選ぶことをおすすめします。