Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk menyelesaikan masalah yang thinkphp tidak boleh mendapatkan data pos

Bagaimana untuk menyelesaikan masalah yang thinkphp tidak boleh mendapatkan data pos

WBOY
WBOYke hadapan
2023-05-29 21:25:102123semak imbas

1 Masalah

Selepas menyerahkan borang, gunakan request->param() atau $this->request->param() Data pos tidak boleh diperolehi dan tatasusunan kosong diperolehi.

2. Punca masalah

  1. Atribut enctype tidak ditetapkan dalam bentuk

Apabila borang diserahkan, jika atribut enctype tidak ditetapkan, kaedah penghantaran data lalai ialah application/x-www-form-urlencoded. Data kini akan diletakkan dalam pengepala permintaan HTTP dan bukannya badan permintaan. Oleh itu, apabila mendapatkan data siaran, kita perlu menggunakan $this->request->post() atau request()->post().

  1. Tiada pengepala permintaan ditetapkan semasa memanggil antara muka

Apabila memanggil antara muka, kita perlu menetapkan pengepala permintaan yang sepadan, seperti Kandungan -Jenis: aplikasi /json, jika tidak pelayan tidak boleh menghuraikan data. Jika Content-Type tidak ditetapkan, pelayan lalai kepada application/x-www-form-urlencoded, dan pada masa ini data pos akan diletakkan dalam pengepala permintaan http dan bukannya badan permintaan, mengakibatkan ketidakupayaan untuk mendapatkan menyiarkan data dengan betul.

3. Penyelesaian

  1. Tetapkan atribut enctype

Tambah enctype=" dalam borang multipart/form-data", supaya data pos dapat diperoleh dengan betul.

  1. Tetapkan pengepala permintaan

Apabila memanggil antara muka, anda boleh menggunakan curl untuk menetapkan pengepala permintaan. Kod sampel adalah seperti berikut:

$data = array(
    'username' => 'admin',
    'password' => '123456'
);

$url = 'http://www.example.com/login';
$ch = curl_init();

$header = array(
    'Content-Type: application/json',
    'Content-Length: '.strlen(json_encode($data))
);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$res = curl_exec($ch);
curl_close($ch);

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah yang thinkphp tidak boleh mendapatkan data pos. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam