ホームページ  >  に質問  >  本文

PHP 警告: 配列を文字列に変換できません

<p>ファイルに次のコードがあります: </p> <pre class="brush:php;toolbar:false;">if (is_array($_REQUEST)) $cepl=implode(' ', $_REQUEST);</pre> <p>数日ごとに、php ログに次の警告が表示されます。 PHP 警告: /file.php の 76 行目で配列を文字列 </p> に変換しています <p>行 76 は次のとおりです: $cepl=implode(' ', $_REQUEST);</p> <p>この警告の原因がわかりません。 ! </p>
P粉101708623P粉101708623402日前386

全員に返信(1)返信します

  • P粉449281068

    P粉4492810682023-08-16 17:52:28

    関数 implode の定義は、非常に大まかに次のコードと同等です (これは単なる例であり、テストされていません)。 リーリー 重要な点は次のコード行です: $pieceAsString = (string)$piece;

    - 配列の要素を結合するには、

    implodeeach を実行する必要があります。要素を 1 つずつ文字列に変換します。 次に、$pcs

    が次のようになったかどうかを考えてみましょう:

    リーリー ループのある時点で、$piece = ['two-a', 'two-b']

    があり、それを文字列に変換しようとします。おっと!

    警告が表示される理由は、

    #$_REQUEST

    配列内に他の配列があるためです。これが起こる可能性はいくつかあります: $_REQUEST

    は直接記述できます。たとえば、
      $_REQUEST['example'] = ['a', 'b'];
    1. と書くことができます。 PHP は、配列を表す入力内の特定の表記法 を認識します。たとえば、誰かが URL /your-page.php?example[]=a&example[]=b
    2. にアクセスすると、
    3. $_REQUEST['a として自動的に入力されます。 '、'b '] これは非常に重要な注意事項です: ユーザー入力を決して信用しないでください。
    4. $_REQUEST
    の内容について

    何らかの仮定を行うことは非常に危険です。入力はユーザーの制御下にあり、ユーザーはあなたの友達ではないかもしれません。

    返事
    0
  • キャンセル返事