ブログBlog

ログイン機能カスタマイズ、複数回エラー時の対応

今回は、ログイン機能をカスタマイズする際のログインエラー処理について備忘録もかねて記載します。何も考えないで実装すると、ログインエラーを繰り返すと、?login=failedがたくさんくっついてしまう事象が発生してしまいます。

今回は、本内容の解決手段について段階的に記載します。

 

1.ログイン失敗時のリダイレクト先の生成

各ページでログイン用のモーダルウィンドウなどを設置しログイン機能を各ページからログインできるように実装するような場合、現在の開いているページのURLを取得し、ログインフォームのURLやログイン失敗時のリダイレクト先を作成する場合があります。

1.現在のページからログインフォームのURLを作成する場合

 

2.ログイン失敗時のリダイレクト先を以下で作成

 

※なお、Wordpressにも、現在開いているページのURLを取得する関数(get_the_permalink)がありますが、この関数ですと、GETオプションがついていると取得ができないため、今回は利用することができません。

is_ssl()は、SSLかどうかを確認し、SSLの時には”https:”を、そうでない場合”http:”を付加しています。
$_SERVER[‘HTTP_HOST’]は、現在のリクエストのホスト、ヘッダーがあればその内容が入ってきます(rishuntrading.co.jpなど)。
$_SERVER[‘REQUEST_URI’]は、ページにアクセスする際に指定されたURI(ドメイン以下のパス)が入っています(/webdesign/など)。なお、GETオプションが付いているとその内容も入ってきます。

取得した情報から、1.ではログインフォームのURLを、2.では”?login=failed”を付加しログインエラーを通知するURLを生成しています。

ただし、これだと$_SERVER[‘REQUEST_URI’]にGETオプションも入ってきてしまうため、以下の問題があります。

(1)ログインを何回も間違えると、そのたびに”?login=failed”が付与されてしまう。(https://rishuntrading.co.jp/?login=failed?login=failed…など。)
(2)失敗した後に、ログイン成功した時のURLに、?login=failedがくっついたままとなってしまう。

 

2.URLからGETオプションを取り除く

parse_urlに、PHP_URL_PATHオプションを指定すると、GETオプションは取り除き、URLだけ返却してくれます。

1.現在のページからログインフォームのURLを作成する場合(改良版)

最後に、parse_urlを実行する事で、GETオプションを取り除き、URLパスのみにしています。

 

2.ログイン失敗時のリダイレクト先も以下で作成(改良版)

さらに、$login_statusのチェックを入れることで、連続で複数回間違っても付与される?login=failedは1回だけとなります。

※注意事項
開発環境とサーバー環境(本番環境)が相違していると、parse_urlの関数において、動作差分がある場合があります。次の章で詳細を記載します。

 

3.開発環境、本番環境の環境差分における対処

開発環境では、「2.URLからGETオプションを取り除く」まででOKだったのですが、本番環境(サーバー)環境においては、動作差分のため正常に動作しませんでしたので、その内容も記載させて頂きます。

サーバー環境では、以下の問題がありました。

問題① (1)の時、$httpが正しく作成されない(“://”が付与されない)。
問題② (3)の時、正常に動作しない(parse_urlの動作差分)。

 

そのため、以下で対処しました。

(1)~(3)は、分割する(://)。サーバー環境ではこうしないと動作しない。
(4)先に、GETパラメータを削除しておく

 

WEB DESIGN

RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。

「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。

運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。

しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。

本業が忙しい中小企業様に大変ご好評を頂いている商品です。

  • 独自ドメイン取得

    独自ドメイン取得

  • サーバー開設&設定

    サーバー開設&設定

  • レイアウト設計

    レイアウト設計

  • レスポンシブルデザイン

    レスポンシブルデザイン
    (*1)

  • 検索エンジン最適化(SEO対策)

    検索エンジン最適化
    (SEO対策)

  • 場所Maps

    場所Maps

  • お問い合わせフォーム

    お問い合わせフォーム

  • SSL化

    SSL化

  • 各種SNS連携

    各種SNS連携

  • 運用マニュアル

    運用マニュアル

≫詳細はこちら

MENU