Amaran PHP: tidak boleh menukar tatasusunan kepada rentetan
P粉101708623
P粉101708623 2023-08-15 22:27:37
0
1
463
<p>Saya mempunyai kod ini dalam fail saya: </p> <pre class="brush:php;toolbar:false;">if (is_array($_REQUEST)) $cepl=implode(' ', $_REQUEST);</pre> <p>Setiap beberapa hari saya mendapat amaran berikut dalam log php: Amaran PHP: Menukar tatasusunan kepada rentetan</p> dalam /file.php, baris 76 <p>Barisan 76 ialah: $cepl=implode(' ', $_REQUEST);</p> <p>Saya tidak dapat mengetahui apa yang menyebabkan amaran ini? ! </p>
P粉101708623
P粉101708623

membalas semua(1)
P粉449281068

Takrifan fungsi

implode adalah sangat kasar bersamaan dengan kod berikut (ini hanyalah contoh, tidak diuji):

function not_really_implode($glue, $pieces) {
   $result = '';
   $first = true;
   foreach ( $pieces as $piece ) {
      if ( ! $first ) {
          $result .= $glue;
      }
      $pieceAsString = (string)$piece;
      $result .= $pieceAsString;
      $first = false;
   }
   return $result;
}
Intinya ialah baris kod ini: $pieceAsString = (string)$piece; - Untuk menggabungkan elemen tatasusunan,

setiap elemen mesti ditukar kepada rentetan satu demi satu. $pieceAsString = (string)$piece; - 为了组合数组的元素,implode Sekarang fikirkan jika kelihatan seperti ini:

$pieces = [
   'one',
   ['two-a', 'two-b'],
   'three',
];

Pada satu ketika dalam gelung kami, kami akan mempunyai $pieces dan cuba tukarkannya kepada rentetan - oops!

Jadi sebab amaran muncul adalah kerana di dalam $piece = ['two-a', 'two-b']array

anda, terdapat tatasusunan lain. Beberapa cara ini boleh berlaku: $_REQUEST

Boleh tulis terus. Sebagai contoh, seseorang boleh menulis $_REQUEST['example'] = ['a', 'b'];
  1. PHP akan $_REQUEST可以直接写入。例如,有人可以写入$_REQUEST['example'] = ['a', 'b'];mengenal notasi tertentu
  2. dalam input untuk mewakili tatasusunan. Sebagai contoh, seseorang boleh mengakses URL /your-page.php?example[]=a&example[]=b dan
  3. akan diisi secara automatik sebagai ['a', 'b'] . /your-page.php?example[]=a&example[]=b$_REQUEST将自动填充为['a', 'b']Ini membawa peringatan yang sangat penting:
  4. Jangan sekali-kali mempercayai input pengguna!
Amat berbahaya untuk membuat

sebarang andaian tentang kandungan dalam , kerana $_REQUESTinput adalah di bawah kawalan pengguna, dan pengguna mungkin bukan rakan anda.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan