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

Bagaimana untuk menyelesaikan masalah yang thinkphp tidak boleh mendapatkan data pos

WBOY
Lepaskan: 2023-05-29 21:25:10
ke hadapan
2207 orang telah melayarinya

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);
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan