引数に対してhtmlspecial()を実行するes()と、
es()をテストしたいのですが、
プログラムを実行すると$myCodeの値:としか表示されません。
エラーコードの該当箇所を見ても、何が間違っているのかが検討つきません。
どなたかご教示下さいませんか。
宜しくお願いします。
エラーコード
[27-Jul-2018 01:40:17 UTC] PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function es(), 1 passed in /Applications/MAMP/htdocs/187.php on line 18 and exactly 2 expected in /Applications/MAMP/htdocs/186.php:3 Stack trace: #0 /Applications/MAMP/htdocs/187.php(18): es('<h2>\xE3\x83\x86\xE3\x82\xB9\xE3\x83\x881<...') #1 {main} thrown in /Applications/MAMP/htdocs/186.php on line 3
186.php
<?php function es($data, $charset) { if (is_array($data)) { return array_map(__METHOD__, $data); } else { return htmlspecialchars ($data, ENT_QUOTES, $charset); } } ?>
187.php
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>XSS対策 es()</title> <link href=" ../../css/style.css" rel="stylesheet"> </head> <body> <div> <pre> <?php require_once("186.php"); $myCode = "<h2>テスト1</h2>"; $myArray = ["a"=>"<p>赤</p>", "b"=>"<script>alert('hello')</script>"]; echo '$myCodeの値:', es($myCode); echo "\n\n"; echo '$myArrayの値:'; print_r(es($myArray)) ; ?> </pre> </div> </body> </html>
表示させたい内容
$myCodeの値:<h2>テスト1$lt;/h2> $myArrayの値:Array ( [a]=><p>赤</p> [b]=>$lt;script>alert('hello$#039;)$lt;/script> )
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。