k-holyのPHPとか諸々メモ

Webで働くk-holyがPHP(スクリプト言語)とか諸々のことをメモしていきます。ソースコードはだいたいWindowsで動かしてます。

output_add_rewrite_var()でCSRF対策してみる

PHP

output_add_rewrite_var() は、session.use_trans_sid で利用されているURLリライト機能に新しい名前と値のペアを追加する関数。session.use_trans_sidの場合と同様、有効になるHTML要素と属性は url_rewriter.tags の設定によって決まります。url_rewriter.…

PDOでSQLiteユーザー定義関数を使って正規表現マッチしてみる

PHP

SQLiteで正規表現マッチが使えるのか調べてて、公式ドキュメントの SQLite Query Language: expression http://www.sqlite.org/lang_expr.html で、LIKE, GLOB とともに REGEXP や MATCH が記載されているのを発見。 しかしながら、こんなことも書いてありま…

RecursiveIteratorIteratorとRecursiveDirectoryIteratorで再帰ファイル処理してみた

下記のような構造のディレクトリとファイルに対して、RecursiveDirectoryIteratorで走査し、RecursiveIteratorIteratorで処理を行う場合 DIR ├──DIR-1 │ ├──DIR-1-1 │ │ ├──DIR-1-1-1 │ │ │ ├──FILE-1-1-1-1.php │ │ │ └──FILE-1-1-1-2.txt │ │ ├──FILE-1-1-…

Silex製アプリケーションをSlimフレームワークで書き換えてみた

系図管理システム(仮)というものをSilex + SQLiteで作成していたんですが、SlimというSilex同様のREST APIを提供するマイクロフレームワークに書き換えてみました。 (SilexでもDoctrine2ではなくRedbean、TwigではなくPHPTALを使ってたので、フレームワー…

SplFileObjectとPHP5.4のCallbackFilterIteratorでCSV処理

普段はSPLをほとんど使っていない(DBからのファイル出力でIteratorを使ったことがあるくらい)のですが、練習のためにSplFileObjectを使ったCSV処理を書いてみました。 ただそれだけだと面白くないので、SplFileObjectを拡張してcurrent()メソッドにコール…

stream_resolve_include_path()関数で簡単オートロード

PHP

stream_resolve_include_path()はファイル名からinclude_pathを考慮したファイル検索を行なって、ファイルが存在すればパスを返してくれる関数。(5.3.2以降) http://jp.php.net/manual/ja/function.stream-resolve-include-path.phpこの関数を使って、includ…

str_getcsv()の第4引数($escape)の挙動

str_getcsv()はCSV1レコード分の文字列をパースして配列を返してくれるとても便利な関数。(5.3以降) http://jp.php.net/manual/ja/function.str-getcsv.phpこの関数、第2引数のdelimiter(区切り文字)、第3引数のenclosure(囲み文字)はいいとして、第4引…

エラーハンドラと例外ハンドラによるエラー処理 (PHP Advent Calendar jp 2011 Day 11)

PHP

@calpo22 さんの記事 PyrusでプロジェクトローカルなPEARライブラリインストール : PHP Advent Calendar jp 2011 Day 10 - くろまほうさいきょうでんせつ にき続き、 PHP Advent Calendar jp 2011 11日目の記事です。皆さん、エラー処理ちゃんとやってますか…