Heim  >  Artikel  >  PHP-Framework  >  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
WBOYnach vorne
2023-05-29 21:25:102123Durchsuche

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);

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen