Ошибка codeigniter csrf при отправке формы

У меня есть форма, использующая скобки для кодировки

echo form_open('signup'); echo form_close(); 

и когда я отправлю его, я получаю следующую ошибку

 An Error Was Encountered The action you have requested is not allowed. 

НЕ always но часто …

даже если скрытое входное поле существует внутри формы:

 <div style="display:none"> <input type="hidden" value="token name is here" name="csrf_token_name"> </div> 

это также происходит в аналогичной форме (signin)

EDIT: html, сгенерированный через форму

 <form accept-charset="utf-8" method="post" action="http://www.example.com/signup"> <div style="display:none"> <input type="hidden" value="93565fb5855d31af3d46bd655b11a4a6" name="csrf_token_name"> </div> <input id="username" type="text" placeholder="Username" maxlength="20" value="" name="username"> <input id="email" type="text" placeholder="Email" value="" name="email"> <input id="password" type="password" placeholder="Password" value="" name="password"> <input id="submit" type="submit" value="Sign up" name="submit"> </form> 

    Ты делаешь это неправильно.

    попробуй это

      <input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash();?>" /> 

    значение должно быть таким, которое вычисляет codeigniter для токена csrf.

    или использовать хелпер формы и codeigniter, автоматически добавит это скрытое поле.

    В моем случае я просто увеличил переменную «csrf_expire» – количество секунд, в течение которых токен должен истечь.

    Из $ config ['csrf_expire'] = 7200; В $ config ['csrf_expire'] = 28800;

    изменить $ config ['csrf_regenerate'] = TRUE;

    в

    $ config ['csrf_regenerate'] = FALSE; в файле конфигурации

    Если вы просто хотите полностью избавиться от ошибок …
    Самое легкое решение, чтобы обойти их:

    1. Откройте файл / config / config.php

    2. Найдите следующую строку:
      $config['csrf_protection'] = TRUE;

    3. Замените его …
      $config['csrf_protection'] = FALSE;

    4. Сохранить изменения.


    ПРЕДУПРЕЖДЕНИЕ. Отключение средства защиты CSRF означает, что вы остаетесь открытым для атак CSRF.