0

私は、任意のフォーム送信のPOST値を取得し、それらを配列にポップし、trim、addslashesなどを使用して配列をループし、その値を変数に戻し、そこで値を返す関数を作成しようと取り組んできました。データベースに渡されます。

今私が持っているハードルは、フォームの送信時にすべての入力、テキストエリア、選択要素のデータを配列に取り込むことです。私が従うコード

$fields = array($_POST['1'], $_POST['2']);

    $i = 0;
    foreach ($fields as $field) {
        $i++;
        ${'field'.$i } = trim(addslashes(strip_tags($field)));
        echo "POST field info #". $i ."&nbsp;-&nbsp;". ${'field'.$i }."<br />";
    }

POST値の名前がまだ静的に入力されていることを除けば、ここではすべて問題がないことがわかります。必要なのは、増分変数を使用してPOST名を動的に呼び出してからポップするループにPOSTデータをフィードする方法です。そのすべてのデータを同じ配列に入れます。私が試したコードは次のとおりです。

for ($ii=0;$ii++;) {
    foreach($_POST['$ii'] as $field) {
        $fields = array($field);
    }
}

    $i = 0;
    foreach ($fields as $field) {
        $i++;
        ${'field'.$i } = trim(addslashes(strip_tags($field)));
        echo "POST field info #". $i ."&nbsp;-&nbsp;". ${'field'.$i }."<br />";
    }

今ではこれがうまくいかないことはわかっていますが、私は比較的近くにいると感じることができるので、賢い人が最後の部分を整理するのを手伝ってくれるかどうか疑問に思っていますか?悲しいことに、私は今眠りにつくつもりであり、この投稿を少なくとも9時間は見ないでしょう、お詫びします。

前もって感謝します。

ダン。

4

2 に答える 2

2
$arrayOfPostValues = $_POST;  // it already is an array
$arrayOfPostValues = array_map('strip_tags', $arrayOfPostValues);
$arrayOfPostValues = array_map('trim', $arrayOfPostValues);

または、本当にループを使用したい場合は、次のようにします。

foreach ($arrayOfPostValues as &$value) {
   $value = trim(striptags($value));
}

の使用は絶対にお勧めしaddslashesません。目的はほとんどありません。代わりにmysql_real_escape_stringまたは準備されたステートメントを使用してください。

また、値を配列から個別の変数に分割しないことをお勧めします。これは問題を引き起こすだけです。本当にやりたい場合は、extractまさにそれを行う関数があります。しかし、繰り返しますが、それをしないでください。配列は、この種のデータを処理するのに最適な方法です。

于 2010-11-11T01:16:56.573 に答える
0

最初に $_POST[1] と $_POST[2] に値を割り当てる必要があります。私はあなたのためにこれを行いましたが、通常はフォームから入力されると思いますか?

${'field'.$key} のようなことをしたい理由がわかりませんが、理由があるに違いないと思うので、その部分はそのままにしておきます。

とにかく、私はあなたのコードを少し修正しました。以下を参照してください。

$_POST['1'] = '<h1>variable 1</h1>';
$_POST['2'] = '<h2>variable 2</h2>';

foreach($_POST as $key => $value){
    ${'field'.$key} = trim(addslashes(strip_tags($value)));
    echo "POST field info #". $key ." = ". ${'field'.$key}."<br />";
}

上記のコードの出力:
POST フィールド情報 #1 = 変数 1
POST フィールド情報 #2 = 変数 2

ちなみに、'1' や '2' などのフィールド名の使用はあまり良くありません。より説明的なものを使用してみてください。ただし、上で述べたように、これを行う理由があると思います。


更新:フォーム要素に特定の名前を使用している場合でも、これをどのフォームでも機能させることができます。例として、以下に数行を追加しました。

$_POST['email'] = 'example@example.com';
$_POST['password'] = 'hgbks78db';
$_POST['name'] = '';

foreach($_POST as $key => $value){
    if($value==''){
        echo 'POST field "'.$key . '" is empty<br />';
        /* I added the name of the field that is empty to an error array 
        so you have a way of storing all blank fields */
        $a_error[] = $key;
    }
    else{
        echo 'POST field "'.$key . '" is not empty<br />';
    }
}
于 2010-11-11T01:56:23.060 に答える