2017-07-10 18 views
1

フォーム内でCSRFトークンを検証する方法を新しくしました。Codeigniter csrf検証方法は?

私の形式は次のとおりです。

<?php echo form_open('admin/create_cta', array('class' => 'navbar-form navbar-left', 'id' => 'new-cta')); ?> 
      <div class="form-group"> 
       <input type="url" class="form-control" id="navbar-search-input" name="url" placeholder="Enter a URL"> 
       <span class="form-group-btn"> 
       <button type="submit" class="btn btn-info btn-flat">Create CTA</button> 
       </span> 
      </div> 
      <?php echo form_close(); ?> 

config.phpの

$config['csrf_protection'] = TRUE; 
$config['csrf_token_name'] = 'csrf_test_name'; 
$config['csrf_cookie_name'] = 'csrf_cookie_name'; 
$config['csrf_expire'] = 7200; 
$config['csrf_regenerate'] = TRUE; 
$config['csrf_exclude_uris'] = array(); 

コントローラ

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Admin extends CI_Controller { 

    public function create_cta() 
    { 
     $data = $this->input->post(); 
     var_dump($data); 
    } 

} 

私はcsrf入力値を取得していません。ここでは "var_dump($ data);"です。結果。

array (size=1) 
    'url' => string 'https://www.google.co.in/' (length=25) 
+0

チェックは、フォームのHTMLを生成し、このリンクを参照してください。そこにcsrf-fieldがありますか? –

+0

フォーム内でform_open()を使用する –

+0

ブラウザで、ページを表示してソースを調べます...生成されたフォームコードを見て、csrfトークンがフォームに含まれているかどうかを確認します問題の – TimBrownlaw

答えて

0

あなたが好きなCSRFトークン値を得ることができ、

$csrf = array(
    'name' => $this->security->get_csrf_token_name(), 
    'hash' => $this->security->get_csrf_hash() 
); 

... 

<input type="hidden" name="<?=$csrf['name'];?>" value="<?=$csrf['hash'];?>" /> 

https://www.codeigniter.com/user_guide/libraries/security.html