調査結果---------------------------------------------------------------------------------- 与えられた値が空文字の場合 第一ブロックが表示される。 与えられた値が 0 (零)の場合 第一ブロックが表示される。 数値が 総ブロック数を超えている場合 最後尾のブロックが表示される。 空文字と半角数字以外の数値として解釈できない値が与えられた場合 致命的なエラーになる。 テストケースと実行結果-------------------------------------------------------------------- ${subject:A=$_|B=$_|C=$_} フィールド値 無し 結果 A= フィールド値 "テスト" 結果 実行不能 フィールド値 "1テスト" 結果 A=1テスト 考察 先頭の半角数字を認識する フィールド値 "1テスト" 結果 実行不能 考察 全角数字は通らない フィールド値 "20 asf" 結果 C=20 asf 考察 選択ブロック数以上の値だと最後のブロックが出力される ${url:A=$_|B=$_|C=$_} フィールド値 無し 結果 A= フィールド値 "テスト" 結果 A= フィールド値 "1テスト" 結果 A= フィールド値 "http://www.test.com" 結果 A= ${new():A=$_|B=$_|C=$_} 結果 A= ${random(50):A=$_|B=$_|C=$_} 結果 C=24 ${random(50テスト):A=$_|B=$_|C=$_} 結果 実行不能 考察 random関数の引数は半角数字のみ有効 ${random(50 1):A=$_|B=$_|C=$_} 結果 実行不能 考察 半角スペースも文字として認識している ${random(50 ):A=$_|B=$_|C=$_} 結果 実行不能 ${random( 50):A=$_|B=$_|C=$_} 結果 実行不能 ${field1:A=$_|B=$_|C=$_} フィールド値 無し 結果 A= フィールド値 "テスト" 結果 実行不能 フィールド値 "1テスト" 結果 A=1テスト ${name:A=$_|B=$_|C=$_} フィールド値 無し 結果 A= フィールド値 "テスト" 結果 実行不能 フィールド値 "1テスト" 結果 A=1テスト ${comments:A=$_|B=$_|C=$_} フィールド値 無し 結果 A= フィールド値 "テスト" 結果 実行不能 フィールド値 "1テスト" 結果 A=1テスト ${agent:A=$_|B=$_|C=$_} 結果 実行不能 考察 ユーザーエージェント名の先頭に半角数字が使われているなら通る?。 ${addr:A=$_|B=$_|C=$_} 結果 C=255.255.255.255 注 上記のアドレスは一部(?)改竄してあります ${email:A=$_|B=$_|C=$_} フィールド値 無し 結果 A= フィールド値 "テスト" 結果 A= フィールド値 "1テスト" 結果 A= フィールド値 "2@asdf.co"の場合 結果 B=2@asdf.co フィールド値 "10@asdf.co"の場合 結果 C=10@asdf.co フィールド値 "hogehoge@ybb.com"の場合 結果 実行不能 考察 最初にemailフィールドの値としてメールアドレスかどうかをチェックしている 次に選択表示の値として数値を解釈している。 ${number:A=$_|B=$_|C=$_} 結果 C=97 ${date:A=$_|B=$_|C=$_} 結果 C=2001年07月04日 14時24分21秒 ${year:A=$_|B=$_|C=$_} 結果 C=2001 ${month:A=$_|B=$_|C=$_} 結果 C=07 ${mday:A=$_|B=$_|C=$_} 結果 C=04 ${yday:A=$_|B=$_|C=$_} 結果 C=185 ${wday:A=$_|B=$_|C=$_} 結果 C=4 ${hour:A=$_|B=$_|C=$_} 結果 C=14 ${min:A=$_|B=$_|C=$_} 結果 C=32 ${sec:A=$_|B=$_|C=$_} 結果 C=14