1

ファイル RestClient.php の行 $uname = $this->input->post('username') および $pwd = $this->input->post('password') は NULL を返します。

これは私の(ビュー)loginform.phpです

    <?php echo form_open('api/RestClient/PostCurl'); ?>
    <div class="form-group">
        <label for = "username"><h5>Username</h5>
            <input type = "text" name = "username" class="form-control" required
                   oninvalid = "this.setCustomValidity('username is required')"
                   oninput = "this.setCustomValidity('')" autocomplete="off"> <br>
        </label>
    </div>
    <div class="form-group">
        <label for = "password"><h5>Password</h5>
            <input type = "password" name = "password" class="form-control" required
                   oninvalid = "this.setCustomValidity('password is required')"
                   oninput = "this.setCustomValidity('')" autocomplete="off"> <br>
        </label>
    </div>
    <div class="form-group">
        <a href="<?php echo site_url('api/RestClient/PostCurl'); ?>"> <input id="loginsubmit" type = "submit" class="btn btn-success" class="form-control" value = "Login"/>
        </a>
    </div>

これは私の RestServer API コントローラーです - LoginFormApi.php

    class LoginFormApi extends REST_Controller {

public function __construct() {
    parent::__construct();
    $this->load->helper('url');
    $this->load->library('form_validation');
    $this->load->model('LoginFormModel');
    $this->load->model('EmployeeAccountModel');
}

public function LoginForm_post() {
    $userName = $this->post('username');
    $password = $this->post('password');
    $error = 'Invalid' . $userName;
    if (!$userName || !$password) {
        $this->set_response($error, REST_Controller::HTTP_NOT_FOUND);
    }
    $id = $this->LoginFormModel->Validate($userName, $password);
    if ($id) {
        $token['id'] = $id;
        $token['username'] = $userName;
        $date = new DateTime();
        $token['iat'] = $date->getTimestamp();
        $token['exp'] = $date->getTimestamp() + 60 * 60 * 5;
        $output['id_token'] = JWT::encode($token, "~~~JWT Auth Key !!!!!!~~~");
        $this->set_response($output, REST_Controller::HTTP_OK);
    } else {
        $this->set_response($error, REST_Controller::HTTP_NOT_FOUND);
    }
}

これは、cURL を使用したクライアント リクエスト コントローラーです。RestClient.php 行 $uname = $this->input->post('username') および $pwd = $this->input->post('password') は NULL を返します。

    class RestClient extends CI_Controller{
public function __construct() {
    parent::__construct();
    $this->load->helper('url','form');
   $this->load->library('form_validation');
    $this->load->library('Curl');
}

public function PostCurl(){
    $username = 'admin';
    $password = 'apitest@1234';
    $uname = $this->input->post('username');
    $pwd = $this->input->post('password');
    echo '~'.$uname.$pwd.'~';
    $curl_handle = curl_init('http://localhost:8085/ci-api/index.php/api/LoginFormApi/LoginForm');
    curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
    $dataPost = array('username' => $uname,'password' => $pwd);
    curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $dataPost);
    curl_setopt($curl_handle, CURLOPT_USERPWD, $username.':'.$password);
    $data = curl_exec($curl_handle);
    curl_close($curl_handle);
    $result = json_decode($data);
    if(isset($result->status) && $result->status === 'success'){
        echo 'success' .$result;
    }else{
        $post = var_dump($dataPost);
        echo $post.'failure'.$result;
    }
}

}

4

1 に答える 1