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

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

WBOY
リリース: 2016-06-23 13:52:11
オリジナル
829 人が閲覧しました

多くのパラメーターの送信を処理していると、データベースのクエリや挿入などの操作が発生する場合があります。
このとき、エスケープまたは実体化する必要があります
セキュリティに詳しくない PHP 初心者の場合は、次のようにクエリステートメントを作成しますby

$sql="select * from demo where user='".$_POST['user']."'"";
ログイン後にコピー
ログイン後にコピー

そこでSQLインジェクションの危険性があります
一般的に、ある程度経験のある人はこのようなクエリ文を書きます
$sql="select * from demo where user='".addslashes($_POST['user'])."'"";
ログイン後にコピー

このように書いても問題ありませんが、
1. 専門的ではないように見えます
2. 多すぎますステートメントを一つ一つ書くのは面倒だし、何かを見落とすのは避けられない

もし私が今持っている知識でこのステートメントを書くとしたら、まだ書くだろう
うわー
でも私は初心者ではないので
付け加えておきますフォーム処理ファイルの先頭にある文、
$sql="select * from demo where user='".$_POST['user']."'"";
ログイン後にコピー
ログイン後にコピー


実際のソースコード例
$_POST=array_map("addslashes",$_POST);
ログイン後にコピー

印刷結果
";var_dump($_POST);?>
ログイン後にコピー


ディスカッションへの返信 (解決策)

Please call me live Lei Feng

フォームの場合同じ名前のコントロールがある場合、 $_POST=array_map("addslash es" ,$_POST); これで終わりですよね? Live Lei Feng

フォームに同じ名前のコントロールがある場合、$_POST=array_map("addslashes",$_POST); は終わりです

そうですね? Live Lei Feng

同じ名前のフォーム コントロールは何を指しますか? 例を挙げてみましょう
最も簡単な答えはチェックボックスです

type=チェックボックス名 =c[] 値=2>

<入力タイプ=チェックボックス名=c[] 値=3>
<入力タイプ=テキスト名=t[]>答え 1
<入力タイプ=テキスト名= t[]>答え2
答え3

同名のテキストコントロールは回避可能
ですが、チェックボックスは回避できません


試してみましたが、案の定、よく考えていませんでした。今後この問題に注意する必要があります

最も簡単な答えはチェックボックスです

<入力タイプ=チェックボックス名=c[] 値=2>

<入力タイプ=テキスト名=t[]>
回答2
回答3

同名のテキストコントロールは避けられますが
、チェックボックス避けられません


頑張れ、雷峰。

だから私はこのように書かなければなりません

array(2) {  ["user"]=>  string(4) "demo"  ["content"]=>  string(18) "Hello,It\'s a book"}
ログイン後にコピー
$a = array(  'a' => "a'b",  'b' => array("C'd", 123));array_walk_recursive($a, function(&$v) { $v = addslashes($v); });print_r($a);
ログイン後にコピー
ログイン後にコピー

??その方法は素晴らしいです、私は前にそれを考えました???

共有していただきありがとうございます。

思い切って集めてください

だから、こうやって

Array(    [a] => a\'b    [b] => Array        (            [0] => C\'d            [1] => 123        ))
ログイン後にコピー
$a = array(  'a' => "a'b",  'b' => array("C'd", 123));array_walk_recursive($a, function(&$v) { $v = addslashes($v); });print_r($a);
ログイン後にコピー
ログイン後にコピー
と書かないといけないんです

書き方が間違っていてプロンプトがエラーになるということです

この神様、久しぶりです、本当に何人いるのか知りたいですエレガントなフレームワークをダウンロードしましたか?どのバージョンにアップグレードされましたか ...また、感心できる JavaScript の奥深い作品はありますか?

この神様、久しぶりです。あなたのエレガントなフレームワークを何人の人がダウンロードしたのか、またどのバージョンにアップグレードされたのかを知りたいです...また、私が賞賛できる JavaScript の高度な作品はありますか?

私はもうフレームワーク レベルには執着していません。フォーラムではまだどのフレームワークが良いか悪いかを議論している人がいます。

js プラグイン、ポップアップ ウィンドウ http://tip.youyax.com/ を試すことができます

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート