ホームページ >バックエンド開発 >PHPチュートリアル >フォームパラメーターと URL パラメーターを処理する実用的な方法を考えたことはありますか?

フォームパラメーターと URL パラメーターを処理する実用的な方法を考えたことはありますか?

WBOY
WBOYオリジナル
2016-06-13 12:04:11949ブラウズ

[共有] フォームパラメータと URL パラメータを処理する実用的な方法を考えたことはありますか?

この投稿は、xjl756425616 によって 2014-08-07 11:03:45 に最終編集されました 多数のパラメーターの送信を処理しているときに、データベース クエリや挿入などの操作が発生する可能性があります。
この時、エスケープするか実体化する必要があります
セキュリティに詳しくないPHP初心者はこのようにクエリ文を書きます
$sql="select * from demo where user='".$_POST['user']."'"";

そうするとSQLインジェクションのリスクがあります
一般的に, ある程度の経験がある人は、このようにクエリ文を書きます
$sql="select * from demo where user='".addslashes($_POST['user'])."'"";

このように書くのは問題ありませんが、
1. 文が多すぎて、それぞれを書くのは専門的ではありません。面倒なので、

を見逃すのは避けられません。今の知識でこのステートメントを書いても、

$sql="select * from demo where user='".$_POST['user']."'"";
と書きますが、私は初心者ではありません。
処理ファイルの先頭に

$_POST=array_map("addslashes",$_POST);

実際のソースコード例

$_POST['user']="demo";
$_POST['content']="Hello,It's a book";
$_POST=array_map("addslashes",$_POST);
echo "
";
var_dump($_POST);
?>
出力結果

array(2) {<br />  ["user"]=><br />  string(4) "demo"<br />  ["content"]=><br />  string(18) "Hello,It\'s a book"<br />}
-- ----解決策---------
次のように書きます
$a = array(<br />  'a' => "a'b",<br />  'b' => array("C'd", 123)<br />);<br />array_walk_recursive($a, function(&$v) { $v = addslashes($v); });<br />print_r($a);
Array<br />(<br />    [a] => a\'b<br />    [b] => Array<br />        (<br />            [0] => C\'d<br />            [1] => 123<br />        )<br /><br />)<br /><br />
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。