Your SlideShare is downloading. ×
第2回PHP懇親会発表資料
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

第2回PHP懇親会発表資料

1,349

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,349
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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が扱えない?←いや、これは さすがに扱えます。

×