LoginSignup
3
5

More than 5 years have passed since last update.

バリデーション調べている間に覚えたこと

Last updated at Posted at 2018-07-19

今やっているお問い合わせフォームの作成でもそうやけど、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かどうかを調べている。

http://d.hatena.ne.jp/tatakauashi/20080529/1212030859

$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/

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5