PHP 警告: 配列を文字列に変換できません
P粉101708623
P粉101708623 2023-08-15 22:27:37
0
1
484
<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粉101708623
P粉101708623

全員に返信(1)
P粉449281068

関数 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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート