PHP 5.2.17とmagic_quotes_gpc
ディレクティブを有効にしたサーバで動作する小さなPHPスクリプトを作成しました。filter_input()はいつPOST変数のスラッシュを削除しますか?
私はphp.iniファイルへの書き込みアクセス権がありません。ユーザー入力からすべてのスラッシュを削除したいと思います。
magic_quotes_gpc
ディレクティブがオフになっていても(たとえば、スクリプトを別のサーバーに移動する場合など)、これが機能します。
ユーザーが配列を送信するときにも、再帰的に機能するはずです。
私は組み込み関数を使うほうが好きです。私のサーバー上で次のような結果になります
<html>
<head>
<title>HP</title>
</head>
<body>
<form method="POST" action="magic.php">
<input type="text" value="te\\"st" name="test1">
<input type="text" value="te\\"st" name="test2[tw"o]">
<input type="submit" value="submit">
</form>
<?php
echo "<pre>";
echo "magic_quotes: ".get_magic_quotes_gpc()."\n";
echo "<hr>test1";
echo "filter_input: ".filter_input(INPUT_POST, "test1")."\n";
echo "POST: ".$_POST['test1']."\n";
echo "<hr>test2 (filter)";
print_r(filter_input_array(INPUT_POST))."\n";
echo "<hr>test2 (post)";
print_r($_POST)."\n";
echo "</pre>";
?>
</body>
</html>
は:
magic_quotes: 1
filter_input: te\\"st
POST: te\\\\\"st
test2 (filter)Array
(
[test1] => te\\"st
[test2] => Array
(
[tw\"o] => te\\"st
)
)
test2 (post)Array
(
[test1] => te\\\\\"st
[test2] => Array
(
[tw\"o] => te\\\\\"st
)
)
配列のキー以外のスラッシュが削除されているようです。
スラッシュは追加されませんか? (それは推奨されませんので、filter_input()
とfilter_input_array()
は、magic_quotes_gpc
ディレクティブを無視するかもしれません。しかし、私はそのための参照を見つけることができませんでした)
は、システム・パラメータに何らかの形で依存filter_input()
とfilter_input_array()
のスラッシュを設定/ない取り除くための行動ですか?
警告hereがわかりません。
私は、現時点では同様のものを使用しますが、filter_input()とfilter_input_array()は私が必要なことを行うならば、私は好みますそのための余分な再帰関数を書いていません。しかし、filter_inputが何をしているのか分かりません。それは知っていると素晴らしいでしょう。 –