PHPの書籍を読んで勉強中ですが、magic_quotes_gpc
が ON
の場合、' " \ null
に対して自動的に \
が付くので、stripslashes
で \
を取り除く必要があると記載されています。
PHP5.3.0で既に非推奨になっていて、ON
になっている環境も滅多にないかと思うので、get_magic_quotes_gpc()
で処理を分岐しようかなと考えました。
ところが、下記のようにfilter_input
で値を受け取ると、\
が勝手に取り除かれて表示されます。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>null</title> </head> <body> <form method="post" action="send.php"> 名前:<input type="text" name="name"> <input type="submit" value="送信"> </form> </body> </html>
<!doctype html> <html> <head> <meta charset="utf-8"> <title>null</title> </head> <body> <?php $name = filter_input(INPUT_POST, 'name'); // \'" ←echoの結果 $name = $_POST['name']; // \\\'\" ←echoの結果 echo $name; ?> </body> </html>
PHP 5.2.17
で magic_quotes_gpc
が On
の環境で確認しています。
magic_quotes_gpc
が ON
の環境でも filter_input
で値を受け取れば、stripslashes
を使って\
を取り除く必要はなくなりますか?
日本語読めないのかと叱られそうですが、PHPマニュアルの filter_input を読んでも、それらしい説明が見当たらなくて、filter_input
を通したときの挙動をいまいち理解できてません><
※ちなみに、検証用なので htmlspecialchars
は意図的に記述していません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/04/05 07:28