Lesson12「実践!ユーザー登録システムを作ってみよう!part2」

この練習は本入部生のみ閲覧できます。

本入部はこちら

学習概要

今回はバリデーションチェックを最後までやります!セキュリティ対策としての「サニタイズ」にも少し触れ、フォームの内容を保持する方法についても解説しています。次回はDBへ情報を登録していく処理についてです!

補足

ログインが必要です

この練習でわからない所を質問する※部活外の質問はできません

ログインが必要です

この練習への質問一覧

ログインが必要です

Lesson12「実践!ユーザー登録システムを作ってみよう!part2」の内容※SEO用のため読めません

前回に続いてユーザー登録画面のシステムを作っていきますでは次にポスト送信された場合の中の処理を見ていきましょう中を見てみるとディファインかっこで囲まれた塊がありますこれは定数というものを宣言しています定数は変数と同じく値を入れる箱なんですけれども一回中に入れたら途中で中身を書き換えることはできないと思うのになります PHP で定数を制限するにはリファイン加工としてかっこの中にコーテーションまたダブルコーテーションでまず定数の名前を決めますです女は大文字小文字でも構わないんですが基本的に大文字で定数とわかりやすいように書くのが鳴らしになりますとしてカンマで区切って提出の中の値を入れてあげます今回はテニスを使ってバリデーションチェックで引っかかった場合のエラーメッセージを格納していますすぎですねエラーフラグというものとエラーメッセージというもの変数で宣言してるんですが後からそれをちょっといらないので削除してしまって大丈夫ですを制限した後にはエラーメッセージというメッセージを入れる配列を宣言しています宣言というのはこの箱を使えますよという形で箱を用意するという意味ですね NG の場合は変数にある学校という形で代入することで配列として指定することはできますこちらもコメントをつけておきますスラッシュ二つでプログラムに関係ないコメントをつけることができますまた入れる箱を用意した後に実際にバリデーションのチェックをしていきますまずは各フォームに値が入ってるかどうかのチェックですね必須項目に対してのチェックでよく使えるものですねそれぞれ if 文を使って各フォームに値が入ってるかどうかをチェックしていきますその中でもまず最初にやっているチェックがいいメールフォームのチェックですね前回もありましたがいいというメソッドを使って値が空かどうかをチェックしています空かどうかを見ている対象はならアンダーバーポストの E メールという君のものになります前回このフォームに入力された情報というのは送信されるとだらアンダーバーポストという中に入るという話をしましたけれども学校もの情報というのは連想配列の形式で入っていますキーを指定することでその値を取り出すことができますその気になんですが実際のフォーム HTML form ですねその中の name 属性をつけたかと思うんですがその name 属性の値をキーとして取得することができます今回は E メールフォームを name 属性 E メールとしているので E メールにすることでその中の値を取り出すことができますのでその連想配列を empty で調べることで値が空かどうか中に入ってるかどうかというの確認することはできますもし入っていなかった場合にはエラーメッセージの編集ですねを連想配列にしてますけれどもエラーメッセージにキーを指定してあげます E メールという気にしてますもうすることでキーが E メールの連想配列が自動的に作られてその中に定数を入れています提出は入力必須ですというメッセージですね夢連想配列の中にエラーメッセージを入れてるということです岡野ホームに対しても同じ処理ですねパスワードのホームとまたはパスワードの再入力のホーム同じような形で書いていますとした値なかなかのチェックをした後にまた IF 文が出てきます IF 文の条件はエラーメッセージの削除の連想配列が空かどうかを確認しています先ほどのフォームの値が空かどうかのチェックをしてもしそのチェックは何も問題なければもの連想配列には何も入らないはずですのでエラーメッセージという連想配列が空だった場合に後続のバリデーションチェックを続けていくという形になっていますのでもし先ほどのエラーチェック必須項目のチェックで引っかかった場合エラーメッセージの中に何かしらのメッセージが入りますそうするとその後の後続の処理がされませんそのまま進んでいって指定メールが読み込まれていきますそうするとその後にまた PHP のコードがあるわけですねその PHP のコードには削除エラーメッセージの連想配列エラーメッセージが入っている配列ですねそれが空かどうかを調べています validation チープでいっか買った場合酒の連想配列の中にエラーメッセージは何かしら入っていますので空かどうかの判定でからではないという形になりますから出なかった場合にその連想配列の中身を表示させるという形になっていますなのでエラーメッセージが表示されるという仕組みになっているんですね英語の必須項目のチェックで何も問題なかった場合エラーメッセージのレース荒れたからですのでその中の処理というのがされていきますそうするとまず変数を各自作ってその中に form の値というものを入れています女とサニタイズと言ってユーザーから入力された情報に変なプログラムが入っていた場合のために無効化する処理というものを着るし いないんですがここから観測のために入れてありません詳しくはネットワーク部の方でお話しします返信フォーム入力された情報を格納した後に今度は E メールの形式かどうかのチェックをしていますこの方は JavaScript jQuery 部の方でもちょっとやりました正規表現という書き方になります指定した大賞の値があるルールに沿ってるかというのを確かめるものですねルールを自分で決めることができます PHP の場合はプレイの町というメソッドを使ってかっこの中にルールを変えていきますまずコーテーションまたダブルコーテーションでルールを囲って書いていきますそしてカンマで区切った後にチェック対象にしたい与えてもの入れてあげます文変数の E メールと変数にてます正規表現というのちょっと書き方難しいのでインターネットで PHP 正規表現 E メールという形で検索していただくと出てきますのでそれそままコピーして使っていただければと思います E メールの形式かどうかというのを正規表現でチェックしようとするとかなり複雑になりますので誤解簡素化のために書いてありますなので現地の人をチェックできていないのでそこは中止てくださいご川生協 E メールの形式でない場合なのでプラグマッチのメソッドの前にびっくりマークをつけて指定の条件にしています E メールの形式でない場合という形ですねその場に酒飲まをチェックと同じ空連想配列の中にエラーメッセージを格納していますそしてその次にパスワードのホームとパスワードの再入力フォームの値が同じかどうかをチェックしています他のない場合にエラーメッセージ表示したいのでびっくりマークをつけていますそしてビックリマーク==にすることでその変数の型の同じかどうかというものまで見ています基本的に if 文の中で比較する場合はかたまで比較するようにして下さいそして同じでなかった場合に下げると同じくエラーメッセージを確認しています僕はパスポートホームにだけエラーメッセージを表示させるようにしていますパスワード再入力フォームにもエラーメッセージ同じように表示させてもいいんですけれども同じエラーメッセージが二つ表示されてもちょっとごちゃごちゃになってしまうので同じパスワードのところだけエラーメッセージを表示させるようにしていますもしパスワード再入力フォームにも同じメッセージ表示させたい場合はこういった形で書きますねこの二つのチェックというのをしていた後にまた if 文でエラーメッセージの連想配列が空かどうかというのは安定していますそして空だった場合にまた購読のバリデーションチェックを続けていくという形になっていますもし長田バリデーションチェック引っかかった場合のエラーメッセージが入りますので高速のバリデーションチェックは実行されずにそのまま HTML がまた読み込まれていくような形になりますそうすると先ほどと同じくまた PHP のコードがありますのでそこでエラーメッセージを連想配列かどうか空かどうか判定されてからでないのでエラーメッセージが表示されるという形になります作画バリデーションチェック問題なかった場合には今度こちらのチェックをしていきます if ELse if 文を使ってパスワードパスワード再入力フォームが半角英数字かどうか6文字以上かどうかというの算定しています半角英数字かどうかプレートマッチ竹田正規表現を使ってルールに当てはめてパスワードフォームの値が半角英数数字かどうかをチェックしていますパスワード再入力範囲のかと思われるかもしれないんですが削除のチェックでパスワードの値と同じかどうかをチェックしているので特にパスワードだけチェックしてあげれば大丈夫ですパスワードが半角英数字だった場合にこの ELse if 文の条件の判定に入りますパスワードの値が6文字以内だった場合6文字未満だった場合ですね2エラーを表示させるという形にしていますあたりの文字数がいくつかどうかというのは MP ストールンというメソッドを使いますかこの中にチェックしたい値を入れてあげることでその値が何文字かどうかというのチェックしてくれますをして6文字未満だった場合にレースを配列にエラーメッセージを確認していますそしてそのチェックの後にまた IF 文がありますこのまた連想配列が空かどうかというのチェックしていますエラーに問題がなかった場合ですねチェックに IF 文の書き方は1秒で書ける書き方ですね中学校を使わない書き方になります条件に頭と処理が一様でかける場合にはこのように一度で書くことができますのでこのような格好で囲っても同じような意味になります最終的に先ほどのバリデーションで全てチェックで引っかからなかった場合エラーメッセージが入ってきませんのでその IF 文で連想配列エラーメッセージは空かどうかがチェックされてからになりますそうすると減ったというメソッドを使って指定した場所へ飛ばすことができませんさせることができます今回はマイページで飛ばしています書き方としては減ったかっことしてかっこの中にコーテーションまたダブルクォーテーションで囲ってその中にロケーションという形で書いて滅んで区切った後に遷移先のファイルのパスを指定してあげ 岡山ページに遷移させてあげたいのでマイページ. PHP というファイルへ遷移させてます先は外部の URL でも構いませんこのようにすればヤフーの画面へ遷移させることができますこういったロジックでですね実際バリデーションというものが実行されてエラーメッセージが表示されていますちなみに先ほどサニタイズというものですね変なプログラムを無効化するものなんですがそういったものはこういった形で帰っていただくと実際にユーザーから入力された情報の中で変なプログラムがあった場合に無効化することができませんセキュリティ対策というものになりますまたですね今回このままだと文字を入力してバリデーションに引っかかった場合に入力された文字というのは消えてしまうのでその入力された文字を保持したいと思いますバリデーションチェックに引っかかった場合でも前回入力された情報をホームに表示させたいと思いますその場合にはこのようにホームにバリューという属性をつけてその中に PHP のコードを変えていきますこのコードはポスト送信された中身の値ポストという変数の中の値を表示させるためのものですねこれもですねそのまま表示させてしまうとプログラムをわざと書かれてしまって入力されてしまっていた場合にそれをそのまま表示させてしまうのでプログラムが実行されてしまいますそうするとセキュリティ上良くないのでサニタイズというものがまた必要になってきますを買い観測のために特に何も書いていません同じような形ですね核ホームにバリューという属性をつけてその中に PHP のコードで変数ポストの中の値を表示させていきますように変えたら実際に保存して画面に表示させていますそうするとこのようにですね送信をした後でもバリデーションに引っかかってエラーメッセージが表示されたとしても前の入力した値というのがそのままホームに表示されます見てみると尿の中というのは PHP のことで if 文が枯れていますエンプティーというメソッドで空かどうかを判定してますねとして判定する対象というのは PHP がで自動で用意してくれるホストという連想配列ですねその中の E メールというものに対してからかどうかをチェックしています毎回送信押されてファイルが読み込まれるためにここがチェックされますその数と毎回送信された情報というのポストの中に入ってますのでこの中の値が空かどうかがチェックされます一番最初に画面が表示された場合にはその中の値というのは何も入ってません送信辛されてないですからその彼方エテルナ空になってますまだ何も表示されないんですが送信された場合には中に入っているのでその値というものがある愛されるという形になっていますいいですねパスワードとパスワード再入力フォームのタイプ属性をパスワードに変えていますテキストからパスワードに帰るとパスワード専用のテキストフォームになりますあとスタイルシートもですねパスワードようになりますのでタイプ属性がパスワードのもの同じような形で作ってあげますこれで保存して画面を更新していますそうするとパスワードの入力欄ですねに入れてみるとこんな形で入力された内容ってのがわからなくなりますこうすることでパスワードの入力されている最中に誰かに後ろから画面を見られたりですとかパソコンがハッキングされて画面を見られてしまっている場合でものにパスワードの内容というのがわからなくなりますセキュリティ対策のためにもパスワードを入力するフォームには TYPE 属性パスワードを指定するようにしてください僕はここまでにしたいと思いますが実際に入力された情報というのデータベースに保存していきたいと思います