Heim > PHP-Framework > Denken Sie an PHP > So lösen Sie das Problem, dass thinkphp keine Beitragsdaten abrufen kann

So lösen Sie das Problem, dass thinkphp keine Beitragsdaten abrufen kann

WBOY
Freigeben: 2023-05-29 21:25:10
nach vorne
2206 Leute haben es durchsucht

1. Problem

Nach dem Absenden des Formulars können die Beitragsdaten nicht über request->param() oder $this->request->param() abgerufen werden und es wird ein leeres Array erhalten. 2. Ursache des Problems -www-form-urlencoded. Daten werden jetzt in HTTP-Anfrageheadern statt im Anfragetext platziert. Daher müssen wir beim Abrufen von Beitragsdaten $this->request->post() oder request()->post() verwenden.

Beim Aufruf der Schnittstelle wird kein Anforderungsheader festgelegt.

  1. Beim Aufruf der Schnittstelle müssen wir den entsprechenden Anforderungsheader festlegen, z. B. Content-Type: application/json, andernfalls kann der Server die Daten nicht analysieren. Wenn der Inhaltstyp nicht festgelegt ist, verwendet der Server standardmäßig application/x-www-form-urlencoded. Zu diesem Zeitpunkt werden die Post-Daten im HTTP-Anforderungsheader und nicht im Anforderungstext platziert, was dazu führt, dass sie nicht abgerufen werden können die Beitragsdaten korrekt.

3. Lösung

  1. Setzen Sie das enctype-Attribut

Fügen Sie enctype="multipart/form-data" im Formular hinzu, damit die Beitragsdaten korrekt abgerufen werden können.

Anforderungsheader festlegen

  1. Beim Aufruf der Schnittstelle können Sie mit Curl die Anforderungsheader festlegen. Der Beispielcode lautet wie folgt:

    $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);
    Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass thinkphp keine Beitragsdaten abrufen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage