2016-07-11 8 views
4

yii2アプリケーションは昨日までうまく機能していましたが、今日はフォームを送信するとエラーが表示されます。 "悪い要求(#400)あなたのデータ提出を確認できません。"Yii2 - Bad Request(#400)データの送信を確認できません

私は、csrf検証を無効にすることを提案しているstackoverflowに関する多くの疑問を見つけました。私はcsrf検証も無効にしました。私はまだそれが動作していない私の作曲家を更新しました。

他にも解決策をご提案ください。

は、これは私のフォームコードです: -

<h2>Open an Account</h2> 
        <?php 
        $form = ActiveForm::begin([ 
          'id' => 'live-account-form', 
          'enableClientValidation' => true, 
          'fieldConfig' => [ 
           'template' => '{input}{error}', 
           'options' => [ 
            'tag' => false, 
           ] 
          ], 
          'options' => [ 
           'class' => 'form-horizontal' 
          ] 
         ]); 
        ?> 

        <div class="form-group"> 
        <label for="signupform-first_name" class="col-sm-3 control-label">First Name*</label> 
        <div class="col-sm-9 field-signupform-first_name"> 
         <?= $form->field($model, 'first_name')->textInput(['placeholder' => "Enter First Name"]) ?> 

        </div> 
        </div> 

        <div class="form-group"> 
        <label for="singupform-last_name" class="col-sm-3 control-label">Last Name*</label> 
        <div class="col-sm-9 field-signupform-last_name"> 
         <?= $form->field($model, 'last_name')->textInput(['placeholder' => 'Enter Last Name']) ?> 
        </div> 
        </div> 

        <div class="form-group"> 
        <label for="signupform-email" class="col-sm-3 control-label">Email*</label> 
        <div class="col-sm-9 field-signupform-email"> 
         <?= $form->field($model, 'email')->textInput(['placeholder' => "Enter Email Address"]) ?> 
        </div> 
        </div> 

        <div class="form-group"> 
        <label for="signupform-country" class="col-sm-3 control-label">Country*</label> 
        <div class="col-sm-9 field-signupform-country"> 
         <?= $form->field($model, 'country')->dropDownList(
          ArrayHelper::map(PhCountry::find()->all(), 'intid', 'country_name'), 
          [ 
           'prompt' => 'Select Country', 
           'onchange' => '$("select#signupform-country_code").html("showLoading"); 
            $.get("index.php/site/fetch-country-code?id='.'"+$(this).val(), 
            function(data) { 
             $("#signupform-country_code").val(data); 
            });' 
          ] 
         ) ?> 
        </div> 
        </div> 

        <div class="form-group"> 
         <label class="col-sm-3 control-label">Phone Number*</label> 
         <div class="col-sm-9 phone-number-div"> 
         <div> 
         <?= $form->field($model, 'country_code')->textInput(['placeholder' => 'Code', 'class' => 'country-code form-control']) ?> 
         </div> 
         <div class="field-signupform-phone"> 
         <?= $form->field($model, 'phone')->textInput(['placeholder' => 'Enter Phone Number', 'class' => 'enter-phone-number form-control']) ?> 
         </div> 
         </div> 
        </div> 

        <button type="submit" class="btn btn-default">Create Account</button> 
        <?php 
        ActiveForm::end(); 
        ?> 

、これは、コントローラ内部の私のアクションコードである: -

public function actionIndex() 
{ 
    Yii::$app->controller->enableCsrfValidation = false; 
    $model = new SignupForm(); 
    if ($model->load(Yii::$app->request->post())) { 
     //print_r($model); 
     if ($user = $model->signup()) { 
      if($model->sendRegistrationEmail($user)) { 
       Yii::$app->session->setFlash('emailSent', 'An email containing confirmation link is sent to your email Address.'); 
       if (Yii::$app->getUser()->login($user)) { 
        return $this->goHome(); 
       }  
      } 
     } 
     //exit; 
    } 

    return $this->render('index', [ 
     'model' => $model, 
    ]); 
} 
+0

Yii2またはApache/webserverログのエラーに関するその他の情報はありますか? – ldg

+0

は敬意を表してフォームとコントローラを表示 –

+0

こんにちはInsane、私は自分のフォームとアクションコードを追加したことを確認してください。 –

答えて

6

使用この:

public function beforeAction($action) 
{ 
    $this->enableCsrfValidation = false; 
    return parent::beforeAction($action); 
} 

Do not disable CSRF

0

あなたはできる 以下の設定をメインの設定ファイルで使用して、アプリケーション全体でcsrf検証をグローバルに無効にします。

$config = [ 
    'components' => [ 
     'request' => [ 
      'enableCsrfValidation' => false, 
     ], 
    ], 
]; 
関連する問題