появляется ошибка проверки пустых полей формы react и php, даже если поля не пустые

#php #reactjs #codeigniter

#php #reactjs #codeigniter — инициализатор кода

Вопрос:

Я пытаюсь проверить информацию и поэтому проверяю, не пусто ли какое-либо из полей, но даже когда поля заполнены, появляется ошибка «Необходимо заполнить все поля». Это не имеет смысла, потому что он по-прежнему регистрирует пользователя, а данные находятся в базе данных, что означает, что на самом деле эти переменные в $array не являются неопределенными. Так что мне очень трудно понять, почему возникает эта ошибка.

Это мой почтовый запрос.

 const registerUser = async (userData) => {
     
    console.log(userData)
  
    const request = await fetch("http://localhost/practise-api/public/users/registerUser",{
      method:"POST",
      headers:{
        'Content-Type' : 'application/x-www-form-urlencoded'
      },
      body: JSON.stringify({
        firstname: userData.firstname,
        email: userData.email,
        password: userData.password,
        secondname: userData.secondname
      })
    })
  
    let res = await request.text()
    console.log(res)
    
    if(res.status === "fail"){
      setShowModal(true)
    }
    else if(res.status === "success"){
      setSuccess(true);
    }
    
  }
 

Здесь я проверяю данные, а затем регистрирую пользователя.

 <?php namespace AppControllers;

header('Access-Control-Allow-Origin: *');


class Users extends BaseController
{

    public function registerUser()
    {

        $array = json_decode(file_get_contents("php://input"), true);
        $this->response->setContentType('Content-Type: application/json');
        if(!isset($array["email"]) || !isset($array["password"]) || !isset($array["secondname"]) || !isset($array["firstname"])){
            $error = array(
                'msg' => 'Need to complete all the fields',
                'status' => 'fail'
            );
            return json_encode($error);
        }
        elseif(!filter_var($array["email"], FILTER_VALIDATE_EMAIL )){
            $error = array(
                'msg' => 'Invalid email',
                'status' => 'fail'
            );
            return json_encode($error);
        }
        elseif(!strlen($array["password"]) >= 8){
            $error = array(
                'msg' => 'Password is too short',
                'status' => 'fail'
            );
            return json_encode($error);
        }
        $email = $array["email"];
        $db = ConfigDatabase::connect();
        $builder = $db->table("users");
        $builder->select("*");
        $builder->where("email", $email);
        $queryResult = $builder->get()->getResultArray();
        if($queryResult){
            $error = array(
                'msg' => 'User already exists',
                'status' => 'fail'
            );
            return json_encode($error);
        }
        else{
            $firstname = $array["firstname"];
            $secondname = $array["secondname"];
            $password = $array["password"];
            $hashedPassword = password_hash($password,PASSWORD_DEFAULT);

            $userData = [
                "firstname" => $firstname,
                "lastname" => $secondname,
                "email" => $email,
                "password" => $hashedPassword
            ];
            $builder->insert($userData);
            $success = array(
                'msg' => 'You created an account successfully',
                'status' => 'success'
            );
            return json_encode($success);
            
        }
        

        
        // print_r("hello");
        // echo json_encode($array);
        // echo json_encode($email);
    }
}

 

Как вы можете видеть здесь, это приводит к ошибке с пустыми полями, но также учетная запись зарегистрирована

Надеюсь, кто-нибудь сможет мне помочь, заранее большое спасибо!

введите описание изображения здесь

Комментарии:

1.Я не понимаю, как можно было бы вернуть Need to complete all the fields и перейти к вставке в том же запросе. Дважды проверьте, что вы не выполняете более одного запроса (где отсутствует информация). Проверьте вкладку сеть в инструментах разработчиков браузеров, когда вы делаете запрос, чтобы проверить, какие вызовы выполняются. Затем вы также можете проверить, какие данные он отправляет и каков на самом деле ответ.

2. На этой картинке как будто показано, что это вызывает ошибку, но учетная запись также регистрируется, так что я в замешательстве и хорошо, спасибо, я проверю вкладку сеть

3. Я проверил вкладку сеть, и отправляемые данные выглядят нормально. @МагнусЕрикссон

4. Вы пробовали сбрасывать $array данные сразу после декодирования входных данных, чтобы увидеть, что они на самом деле содержат?

5. Несмотря на мой предыдущий комментарий, я неправильно понял вопрос. Я поддерживаю то, что сказал Магнус: должно быть несколько запросов.