Mais conteúdo relacionado
第2回PHP懇親会発表資料
- 1. ヌルイネタ二つ。
坂本昌彦
id:msakamoto-sf
2008-03-15
第2回PHP懇親会発表資料
sakamoto-gsyc-3s@glamenv-septzen.net
- 2. 誰?
81世代。
PHP, Javaプログラマー
株式会社エヌ・エス・ディ所属
事務所は立川だけど新宿中心に
ぐるぐる出向したりしてます。
お仕事:Javaでソケット通信とか。
(何か4月からはRubyやりそう)
PHP:趣味。会社としては殆どやってない。
IPAで、「安全なウェブサイトの作り方 改訂第3版」が公開されましたね。読んでて気になったのですが・・・。
- 3. 誰?その2
隠れPerl信者(修行中)です。
オレオレフレームワーク派。
Xhwlay, Pseudo_Block
最近はsymfonyに白旗。
CakePHPにも手を出したけど
肌に合わなくてAkelosに逃げて、
結局ActiveRecordを理解してないだけじゃないか
と反省中。
っつーかAkelosはADODBそのまま使えるので
AR全然つかってねぇ。
食わず嫌いを直したいです。
- 4. 本題に入る前に
LINDさん、
ファン・デリさん、
主催および会場提供
ありがとうございますです~~。
ヽ(´ー`)ノ
- 5. ヌルイネタ:1点目
var_export()
http://jp.php.net/manual/ja/function.var-export.php
SQLインジェクションの例で、PostgreSQLの場合、pg_query_paramsのプレースホルダー文字列が quot;$1quot;, quot;$2quot;, quot;$3quot;, ... となってるじゃないですか。(p51)
- 6. var_dump()に隠れて見えない可哀想
な子です。
文字通り桁が違う。
(2008/03/15 10:30時点)
ADODBではDBMSに依らず quot;?quot; で統一されてる(oci8を除く?)のですが、これってどういうこと?と。ADODBのPrepare()って、本当は何してるの?
- 7. 変数のダンプをログに出したい時
「こんなコード、書いてませんか?」
ob_start();
var_dump($vars);
$data = ob_get_clean();
your_log_func($data);
調べてみたら、プリペアクエリのquot;?quot;で分割して、それぞれのバインド値をADOConnection#qstr()というのでエスケープして、最後に連結してました。
- 8. var_export()はデキル子デス。
「これでok。」
$data = var_export($vars, true);
your_log_func($data);
誰ですか?「serialize()使えば良いじゃん」という仰るイケナイ子は・・・。
で、このqstr()っていうのはPostgreSQL用ADODBドライバの場合、内部的にちゃんとpg_escape_string()を使ってます。
- 9. ヌルイネタ:2点目
explode()関数の
第3引数
quot;int $limitquot;
http://jp.php.net/manual/ja/function.explode.php
また、PostgreSQL用ADODBドライバは、{Set|Get}CharSet()で、pg_(set_)client_encoding()にアクセスできます。
- 10. 目立たなくて忘れ去られてる感。
そう感じてるのは自分だけ?
一応、マニュアルページにもExample2として$limitの使用例があるのだけれど・・・。
結論として、PHP4.2.0以上 && PostgreSQL 7.2 以上であれば、ADODBの場合、pg_escape_string および pg_set_glient_encoding()を用いて適切に処理できます。
- 11. あんまり上手い例が見つからない。
区切り文字でバラした時に、要素数が足りない場
合はデフォルト値nullで済ませて良い場合とか、区
切り文字が想定より多く含まれていても、想定通り
の数までにバラす要素数を制限したい場合。
CSVファイル処理、というよりは一般的な文字列→
配列変換の時に使えるシーンがあるかも。
ばらした後のcount()で補正する手間が省ける時に
便利。
皆さんお遣いのDBドライバライブラリはどうでしょうか?ちなみに、まだPostgreSQL 7.1 などで動かしているレンタルサーバもあるのでご注意を!
- 12. 以上。
質疑応答?:
「こんな『忘れられてるけどデキル子』いるよ!」
という方、挙手!
( ・ω・)∩
var_dump <> var_export : 出力形式が違う!
Objectが扱えない?←いや、これは
さすがに扱えます。