MySQL Lesson11~13(復習) 2hour
Aug/2hour
Total 26.5hour
$_postについて(バリデーションチェック1)
- PHPの定義済み変数(=スーパーグローバル関数)。前日に学んだローカル関数・グローバル関数を超えたもので、どこからでも使用できる変数
- HTTP POST メソッドで渡された値を取得する変数。htmlの<formタグ>にmethod属性をpostとすることでサーバーにデータを送る
- 連想配列として使用される。key名=name属性、値=value属性という形で代入される
挙動としてどうなるのか?
例えばこの画面で「email」のところに何も入力しなかった場合
valueの値は空となる。
$_postには「email =>(空=から)」として連想配列が代入される
$_post(
[email] => (空の配列)
これによって
if(empty($_POST[‘email’])){
の条件が満たされることで以下の処理が実行される。
$err_msg[‘email’] = MSG01;
}
元々$err_msgは$err_msg = array();として配列を宣言している。そのため、上記のコードの展開はこうなる
err_msg(
[email] => MSG01MSG01=入力必須です
と定義しているので、入力しなかった場合は下記のメッセージが表示される↓
$_postを学習する上ですごく参考になったサイト
PHP の $_POST(ポスト変数 ) の扱い方やデータのやり取りを紹介。また、$_POST(ポスト変数 )を利用したフォームの作成方法のサンプルを掲載しています。[…]
ちなみに「空=から」という概念はなかなか奥が深く、下記のような値は「空=から」と判断されるらしい
- “” (空文字列)
- 0 (整数 の 0)
- 0.0 (浮動小数点数の 0)
- “0” (文字列 の 0)
NULL
FALSE
- array() (空の配列)
preg_match, !== (バリデーションチェック2)
上記のコードは「空欄にemailアドレスやパスワードが入っているか?」を確認するバリデーション。
次にチェックするのは
「入っている値はemailアドレスとして正しいか」
「パスワードとパスワード(再入力)の値がイコールかどうか」
ということ。これを達成するためには下記のコードを記述する
まず
if(empty($err_msg)){
をすることで上記の「何も記入されていない」というチェックをクリアしているかどうか確認。
もし$err_msgであるなら、以下の処理を実行してください、となる。
次に、$_postで取得してきた値をそれぞれ変数に代入している。
$email = $_POST[‘email’];
$pass = $_POST[‘pass’];
$pass_re = $_POST[‘pass_retype’];
例えばemailアドレスに「info@sample.com」と入力した場合は、$_postがその値を受け取り、変数$emailに先ほどの「info@samplecom」が代入される。
次にするのは「それは正しいアドレスの表記ですか?」ということ。これをするために次のコードを記述する。
if(!preg_match(“/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/”, $email)){
}
preg_matchとは?
→第一引数の正規表現に第二引数のテキストが一致していたら、trueを返してくれる関数。上記でいうと、
第一引数:(“/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/”
第二引数:$email(=ここには先ほどの値である、「info@sample.com」
そして、このpreg_matchの前に「!」がついていることで、「〜ではない」となるので「もし$emailの値がアドレスの正規表現でない場合は、以下の処理を実行する」となる。
入力されたアドレスが正規表現でなかった場合
$err_msg[‘email’] = MSG02;
が実行される。MSG02=’Emailの形式で入力してください’と定数で宣言しているので、画面上にはこのメッセージが表示される。
メールアドレスがOKだったら、次はパスワードと再入力したパスワードがあっているかを確認する。
if($pass !== $pass_re){
$err_msg[‘pass’] = MSG03;
}
「!==」は、型も含めてその値同士が等しくないかを確認する比較演算子。 基本的にif文で比較する場合には型まで比較すること。
上記のコードは「もし$passと$pass_reが型まで含めて同じものでなかった場合、以下を実行する」として、
$err_msg[‘pass’] = MSG03; が実行される仕組み。MSG03は上述したMSG02と同じように定数で宣言しているため、メッセージとしては「パスワード(再入力)が合っていません」と表示される。
学習は全てウェブカツ!!というプログラミングスクールで学んでいます。
大手スクール生徒や現役エンジニアが多数学び直している「実務レベル」に特化した「稼ぐ」ためのプログラミングスクール[…]