プログラミングは面白い

プログラミングの事を中心に色々書いていきます

PHP上級資格を取るべく勉強中

えー、年の瀬ですが私は試験勉強の為に机に向かって唸っています。
PHPの上級資格を取得するために今更ながらPHP5の勉強をしなくてはならないという…
どうせ勉強するならPHP7がいいのですが、まぁPHP7でも使える技術は沢山あるので無駄ではないでしょう。
まずは準上級を狙っています。ちなみに初級試験は2週間くらい勉強したらサクっと取れました。
上級試験はあまりにも難しすぎて合格者が少ないために、いつからか正答率50%以上~70%未満には準上級資格が得られるようになったそうです。
たぶん、今の勉強時間だと上級を受かるのは難しそうです。てか、未経験で上級受かるのはかなりキツイらしいです。
てことで、せっかくブログもやってますし、今後、おもむろにアウトプットをしていこうと思います。
教材は黒本と呼ばれてる問題集を中心に勉強しています。
ちょっと中途半端ですが、5章の問題から気になる部分をアウトプット。

5-2 $_SERVERに関する問題
$_SERVER["REQUEST_METHOD"]にはGET、POST等が設定される。
$_SERVER["PATH_INFO"]にはパス情報が設定される。
$_SERVER["REQUEST_URI"]にはホスト名(ドメイン)以降が設定される。クエリ文字も含まれる。
$_SERVER["SCRIPT_NAME"]にはパス名とファイル名が設定される。
$_SERVER["REMOTE_HOST"]には現在のページにアクセスしているホストIP(IPアドレスを逆引きしたもの)が設定されるが、サーバーの設定や逆引きしていないIPの場合は取得出来ない。
$_SERVER["HTTP_USER_AGENT"]にはブラウザ情報が設定される。User_Agentヘッダがあれば設定される。
例)
http://example.test/php/foo.php/bar?a=b

$_SERVER["PATH_INFO"]/bar
$_SERVER["REQUEST_URI"]/php/foo.php/bar?a=b
$_SERVER["SCRIPT_NAME"]/php/foo.php
$_SERVER["PHP_SELF"]/php/foo.php/bar
$_SERVER["QUERY_STRING"]a=b

5-5 magic_quotes_gcpに関する問題
addslashes()エスケープしたものを元に戻すにはstripslashes()で処理する。

5-6 フォームパラメータに関する問題
GETリクエストの場合、パラメータはクエリ文字で送信され、$_GET配列に設定される。パラメータ名がキーになる。
HTMLのパラメータ名にピリオドやスペースがあるとアンダースコアに変換される。
<input name="a.b" value="1" type="text"> → キーはa_bに変換される

<input name="a_b" value="1" type="text">
<input name="a.b" value="2" type="text">
上記の場合、パラメータの値は2になる。
最初にキーa_bに値1がセットされるが、a.bがa_bに変換されるため、最初の値1のa_bが上書きされて2になる。

5-8 フォームでの複数選択の処理に関する基本的な問題
複数の項目を選択出来るフォームではHTMLフォームのパラメータ名の最後に[]をつける必要がある。

5-11 入力チェックに関する問題
strspn()は第一引数に渡した文字列の中の先頭から何文字目までが第二引数で指定した文字かが分かる。
strspn("38", "1234567890")の場合は2が返ってくる。
ctype_digit関数は与えられた文字列の全てが半角数字か判定する。ただし、""で囲った文字列でないとfalseが返ってくる。

とまぁ、こんな感じでアウトプットしていく。
しかし未経験者には難しい問題ばかり。