0

私は非常に奇妙な問題を抱えています。Yiiにログインフォームがあります。これは正常に機能します。Webサイトを別のサーバーに移動した後、

エラー400CSRFトークンを検証できませんでした

開発サーバーでは機能しているのに、新しいサーバーでは機能していない理由がわかりません。これが私のコードです:

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'login-form',
    'enableClientValidation'=>true,
    'clientOptions'=>array(
       'validateOnSubmit'=>true,
    ),
)); ?>


<div class="row">
    <?php echo $form->labelEx($model,'username'); ?>
    <?php echo $form->textField($model,'username'); ?>
    <?php echo $form->error($model,'username'); ?>
</div>

<div class="row">
    <?php echo $form->labelEx($model,'password'); ?>
    <?php echo $form->passwordField($model,'password'); ?>
    <?php echo $form->error($model,'password'); ?>
</div>

<div class="row buttons">
    <?php echo CHtml::submitButton('Submit'); ?>
</div>

<?php $this->endWidget(); ?>

これが私の設定ファイルのcsrf設定です:

'enableCsrfValidation' => !isset($_POST['dontvalidate']) ? true : false,

例を見る必要がある場合。これが機能しているものであり、これが問題のあるものです

4

1 に答える 1

1

最初の例を開いて、このhtmlをソースで見つけました。これは正しいです。

<input type="hidden" value="df5a0fc9ab86f85cdcdabe6b2ee62e85d3ac0323" 
      name="YII_CSRF_TOKEN" />

2番目のサンプルページでは、上記のようなhtmlコードは見つかりませんでした。これは、2番目の例ではenableCsrfValidationがfalseに 設定されていることを意味します。

このページ(またはconfig / main.php)で$_POST['dontvalidate']をデバッグしてみてください。

于 2012-09-26T05:44:22.083 に答える