1

htmlフォームコード-

<td width="75">
<input name="txtQty[]" type="text" id="txtQty[]" size="5" 
 value="<?php echo $ct_qty; ?>" class="box" onKeyUp="checkNumber(this);">

フォームを送信すると、次のスクリプトを呼び出します-

if (!get_magic_quotes_gpc()) {
if (isset($_POST)) {
    foreach ($_POST as $key => $value) {
        $_POST[$key] =  trim(addslashes($value));
    }
}

if (isset($_GET)) {
    foreach ($_GET as $key => $value) {
        $_GET[$key] = trim(addslashes($value));
    }
}   
}

エラー-

警告:addslashes()は、パラメーター1が文字列であり、配列がC:\ xampp \ htdocs \ shizin \ products \ library\config.phpの53行目にあることを想定しています。

このスクリプトは入力をトリミングするためだけに使用されていると思いますが、このaddslash関数が何をするのか、なぜこのエラーが発生するのかわかりません。

4

4 に答える 4

2

このコードをint値に適用すると、これらの関数を次のように削除します

if (!get_magic_quotes_gpc()) { 
if (isset($_POST)) { 
    foreach ($_POST as $key => $value) { 
        $_POST[$key] =  $value; 
    } 
} 

if (isset($_GET)) { 
    foreach ($_GET as $key => $value) { 
        $_GET[$key] = $value; 
    } 
}    
} 
于 2010-12-02T09:36:48.717 に答える
1
  1. アプローチ全体が間違っています。
    ユーザーが提供したデータを受け取ったら、追加ではなく、魔法の引用符で追加されたスラッシュを削除する必要があります。

  2. 配列アプローチについては、すでに2つの回答が投稿されていると書かれています。ここでよく説明されていることを願っています。それほどうまくはありませんが、とにかく。

したがって、2 つのコード スニペットが必要になります。
最初のものはhttp://www.php.net/manual/en/function.stripslashes.phpの stripslashes_deep() です

2 つ目は、投稿したコードが必要だと思った理由をお知らせください。

于 2010-08-17T07:28:01.830 に答える
0

エラーは言った、addslashes関数はスラッシュで文字列を引用しようとしますが、パラメータが文字列ではない$valueは配列です、何を含むの$_GETですか?

これは、このスクリプトを呼び出すページが配列を渡すためです。txtQty[]

http://php.net/manual/en/function.addslashes.php

于 2010-08-17T07:26:58.870 に答える
0

addslashes() に渡す前に $value をエコーするだけで、問題がすぐにわかります。

于 2010-08-17T07:27:12.443 に答える