今やっているお問い合わせフォームの作成でもそうやけど、phpは基本的に正規表現をよく使う。
##$_SEVER変数
phpが稼働しているwebサーバーの色々な情報をはじき出してくれる。
サーバー変数は連想配列から取り出すので、**$_SEVER('キー名')
**のような感じ。
特に、前のページでpost
,GET
などで、飛ばしてきたデータを使いたい場合は、
**$_SEVER('REQUEST_METHOD')
**のような感じ。
これで、前のページから飛んできたものが、POST
とかGET
とか種類を判別できる。
if($_SEVER['REQUEST_METHOD']==='POST'){
~~~~~
}
上は、もし前のページからpostが飛ばされているのなら、以下のものを実行するという意味。
##header関数
バリデーションで、前回ページに飛ばす際に必要だった。
if(! isset($name)) {
echo '名前が記入されていません。';
header('Location:http://nishimura.pg-bootcamp.com/input.php');
exit;
}
SESSIONを保持したまま前回ページに飛ばすことができなかった。
そもそもできないのか。
##preg_match
echo preg_match("/c[aeiou]t/" , "I love my cat")
peg_matchは第一引数の指定が、第二引数でどれだけ該当しているかどうかチェックしてくれる。
この場合、第一引数の"/c[aeiou]t/"
はcで始まりtで終わる。2文字目は[aeiou]のどれか。これが該当する単語がいくつあるかを調べてくれる。
この場合、該当するのは第二引数のcatだけなので1と結果が呼び出される。
teratailで見つけたバリデーションの例では、
$pattern = '/\A([a-z0-9_\-\+\/\?]+)';
$pattern .= '@([a-z0-9\-]+\.)+[a-z]{2,6}\z/i';
if(!preg_match($pattern ,$email)){
$err = '';
}else{
$err = 'メールアドレスの形式が違います。';
}
何かがあった。上記で$pattern
に変数を入れて、下記で、$pattern
に該当しない$email
ははじき出すように設定している。
##$issetと$!emptyの違い
: isset() : !empty()
-----------------------------
未定義 : FALSE : FALSE 一致
NULL : FALSE : FALSE 一致
FALSE : TRUE : FALSE 不一致
空文字 : TRUE : FALSE 不一致
空配列 : TRUE : FALSE 不一致
0 : TRUE : FALSE 不一致
'0' : TRUE : FALSE 不一致
'0a' : TRUE : TRUE 一致
unset後 : FALSE : FALSE 一致
$hoge_back=0a
わかりやすかったので他サイトから引用。
$isset
は変数が示す先が、Null
かどうかだけを調べている。
$!empty
は〃、Null
かどうかかつ、0かどうかを調べている。
##$err
エラー時のメッセージを格納する。
##return文
##サニタイズ化
消毒するといういみ。
入力フォームなどで、無効な数値を入力された際に、予期せぬフォームプログラミングの動作を防ぐもの。
##エラーメッセージ諸々
###Notice: Undefined variable:
意味:未定義の変数がある
解決策:変数をちゃんと定義する
###Notice: Undefined index:
意味:グローバル変数に値が格納されていないのによぼうとしてる
解決策:定義しなおす。ページ移動した際におきやすい。
(自分の場合字が間違ってただけ…)
##思ったことメモ
###引き値より戻り値のほうが便利?
引き値と戻り値の違いがいまいち理解できなかったけど、できたような気がする。
それから思ったのは、戻り値のほうが便利ちゃうか。
お世話になったサイト達
http://life-collections.com/dev/programming/php_validation_check
https://teratail.com/questions/136429
https://gray-code.com/php/make-the-form-vol5/