質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2012閲覧

magic_quotes_gpc が ON の環境でも filter_input で値を受け取れば、stripslashes を使って \ を取り除く必要はなくなりますか?

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/04/05 06:51

編集2017/04/05 06:52

PHPの書籍を読んで勉強中ですが、magic_quotes_gpcON の場合、' " \ 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.17magic_quotes_gpcOn の環境で確認しています。

magic_quotes_gpcON の環境でも filter_input で値を受け取れば、stripslashes を使って\を取り除く必要はなくなりますか?

日本語読めないのかと叱られそうですが、PHPマニュアルの filter_input を読んでも、それらしい説明が見当たらなくて、filter_input を通したときの挙動をいまいち理解できてません><

※ちなみに、検証用なので htmlspecialchars は意図的に記述していません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

file_inputの除去フィルタに FILTER_SANITIZE_MAGIC_QUOTES があるので、これを指定していない場合は、magic_quotesされないという解釈が自然のような気がします。

http://php.net/manual/ja/filter.filters.sanitize.php

投稿2017/04/05 07:10

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/04/05 07:28

なるほど!取り除いているわけではなく、そもそも filter_input が magic_quotes_gpc を無視?してるんですね。 magic_quotes_gpc の設定は絶対なのかと思っていたので、その考えはありませんでした。 勉強になりました。回答ありがとうございますm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問