FuelPHPでAJAXのCSR対策のメモ

FuelPHPでAJAXのCSR対策のメモです。忘れちゃうので。

 

ViewでTOKENを呼び出す→POSTでTOKENを送るようにする

・js_fetch_tokenの呼び出し

<?php echo Security::js_fetch_token();?> 

 

・AJAXを作る

function save() 
{
    $.ajax({
        type:'post',
        url: "送信先URL",
        cache: false,
        data: { 
          fuel_csrf_token: fuel_csrf_token()
        },
        statusCode: { 
                404: function(){
                }
        },
    }).done(function(data, textStatus, jqXHR){

//結果を受けたった処理        

    }).fail(function(data, textStatus, errorThrown){
//送信失敗した時の処理

    });   

}

※「fuel_csrf_token」は、Configの「csrf_token_key」を変更している場合は、変更した名前を呼び出すようにする。

例:Config::get(‘security.csrf_token_key’);

 

・PHP側処理

if (Security::check_token()) {
//成功したときの処理
}

 

こんな感じで処理が可能。

PHPExcelで利用する関数メモ

PHPEXCELで動作させるときに利用する関数のメモ。FuelPHPで組み合わせて利用のメモです。

 

 

パッケージの読み込み

\Package::load('excel');

 

templateを利用した場合の読み込み

$excel = \PHPExcel_IOFactory::load($template_path);

 

 

列を数値で指定した場合に列名に変換する方法

PHPExcel_Cell::stringFromColumnIndex( 列の数値 )

 

 

 

とりあえず徐々に追加予定。

PHPWordでテンプレートを読み込んでファイルで保存する場合

PHPWordでテンプレートを読み込んでファイルで保存する場合でハマった。

 

↓保存するときにsaveだと指定したファイル名で保存されない。

$phpword = new \PhpOffice\PhpWord\PhpWord();

$phpword = $phpword->loadTemplate('test.docx');

$phpword->save('test2.docx');

 

saveAsで保存。

$phpword = new \PhpOffice\PhpWord\PhpWord();

$phpword = $phpword->loadTemplate('test.docx');

$phpword->saveAs('test2.docx');

 

最初から定義見とけば早かったな。。。

【PHP】Request Entity Too Largeが表示された時の話

いろいろと完成だーぽちっと・・・「

Request Entity Too Large

」だそうです・・・。

 

あーって思ってしまうのですがめげずに対処を。

 

えーと、「ModSecurity」を入れていたので

SecRequestBodyLimitの値を調整。

 

あと、phpの方でも上限にぶつかっていた・・・。

php.ini
max_input_vars = 5000

 

どんだけ1画面でPOSTするんだよってな・・・。ちょっと考えなければいけないかも。

 

FuelPHPでバリデーションで追加したルールを削除する方法

FuelPHPのバリデーションって便利で基本的に利用しています。その中で、自動的にルールをがつがつ追加するプログラムを作っていたのですが一部に限って例外が発生して、追加したルールを削除しなければならないということが発生しました。

削除ってあるのかなってバリデーション定義を除いていたところ、「delete_rule」なるものを発見!!FuelPHP 1.7のドキュメントにはありませんでしたが、探していたらFuelPHP 1.8のドキュメントに記載がありました。

 

↓記述方法は下記のようになるとこと。FuelPHP1.8のドキュメントはこちら

// フィールドから valid_string ルールを取り除く
$fieldset->field('fieldname')->delete_rule('valid_string');

// そして、必須項目の指定を取り除く
$message = $fieldset->field('fieldname')->delete_rule('required', true);

※FuelPHP1.8のドキュメントから抜粋

requiredの項目を取り除くときは「true」も必要とのこと。

 

FuelPHPでビューにHTMLデータをそのまま渡したい時のメモ

FuelPHPでビューにHTMLデータをそのまま渡したい時のメモ

 

■コントローラー側の設定

$this->template->content = \View::forge('index', $data);
$this->template->content->set_safe('html_data', $data['html_data']);

 

$this->template->contentでいつも通りVIEWのコンテンツを設定したのちにset_safeで生データ渡しの値をセットする。

 

[PHP]Invalid argument supplied for foreach()

Invalid argument supplied for foreach()ってエラーがでた場合は、foreachで中身を見ようとしている配列に値がないってこと。

 

中身があるかチェックするべし。

 

ってこと。

 

FuelPHPでTASK処理時に環境を指定する

FuelPHPのタスク処理時に環境モードを指定して実行するには戦闘に「FUEL_ENV=production」と指定しておけばおけー。

 

# FUEL_ENV=production php ./pro/oil refine robots



                                        "KILL ALL HUMANS!"
                                  _____     /
                                 /_____\
                            ____[\*---*/]____
                           /\ #\ \_____/ /# /\
                          /  \# \_.---._/ #/  \
                         /   /|\  |   |  /|\   \
                        /___/ | | |   | | | \___\
                        |  |  | | |---| | |  |  |
                        |__|  \_| |_#_| |_/  |__|
                        //\\  <\ _//^\\_ />  //\\
                        \||/  |\//// \\\\/|  \||/
                              |   |   |   |
                              |---|   |---|
                              |---|   |---|
                              |   |   |   |
                              |___|   |___|
                              /   \   /   \
                             |_____| |_____|
                             |HHHHH| |HHHHH|

 

FuelphpでSMTPサーバーを利用したメール送信

■GMAIL以外

FuelPHPでSMTPサーバーを利用してメールを送信しようとしたら下記の個所の設定でハマって送信できませんでした。

(元)

'newline' => "\n",

(修正)

'newline' => "\r\n",

新しい行の設定でエラーが発生していた。

‘driver’ => ‘mail’でも’driver’ => ‘smtp’でも「newline」は修正した内容で問題ないみたい

 

■GMAILの場合

セキュリティ設定を下記のURLを参考に行う。

https://support.google.com/a/answer/6260879?hl=ja

 

FuelPHPでCSRF対策エラーでのメモ

FuelphpでCSRF対策していると

下記のように記載すると対策できますが、

if(Security::check_token()){
    //正しいポストのときの処理
}else{
    //不正なポストのときの処理
}

なぜか、今まで動いていたのに動かない事象が発生したのでメモとして残しておきます。

 

ヘッダーで、Scriptやlinkでなんだかんだ読み込みをしているかと思います。

これのどこかが影響しているっぽいのでヘッダーを疑うべし。

chromeの検証ツールでみたいたところ、どうも同じURLに対してGETだけをリクエストするのが通常の動作だったのですが、GETの前にHEADでリクエストしている動きを発見。

ファイルアップロードのjavascriptでHEADでアクセスしている箇所があったのでこれが影響。

原因は判明したがもっとセキュリティについても勉強しなくては。

 

Fuelphp自身がワンタイムトークンを利用している点も考慮しないとな。