[PHP-doc 777] Re: addslashes() の修正提案

TAKAGI Masahiro matakagi @ gmail.com
2009年 3月 8日 (日) 19:39:46 JST


高木です。

2009/1/22 Norio Suzuki <suzuki @ tricorn.co.jp>:
> 鈴木です。
>
> addslashes の解説が、現在の状況と違うのでは?という指摘を頂きました。
>
> ------------------------------------------------------------------------
> ■指摘
>  http://wassr.jp/user/ikepyon/statuses/OV4zNcq5YK
>
>> ほとんどのDBで「\」をエスケープ文字としてるんだっけ?
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------
> ■マニュアル - addslashes
>  http://jp.php.net/manual/ja/function.addslashes.php
>
>> ほとんどのデータベースでは O\'reilly という具合に \ を使用します。
> ------------------------------------------------------------------------
>
> 現在推奨されている方法としては、「addslashes は使わずに、各データベース
> に合った形のエスケープを行う」というのが、モダンな PHP の書き方ではない
> のかな、と思っています。
>
> 従って、次のような文面を提案したいと思うのですが、これについては、みな
> さんいかがでしょうか?
>
>
> ------------------------------------------------------------------------
> ■修正提案
> addslashes() の使用例は、 データベースにデータを登録するときです。例え
> ば、 O'reilly という名前をデータベースに挿入するには、 エスケープする必
> 要があります。
>
> しかし、現在ではこの関数を使うよりも、各データベースごとに用意されたエ
> スケープ専用関数(例: MySQL なら mysql_real_escape_string() 、
> PostgreSQLならpg_escape_string() など)を使用することが推奨されています。
>
> この処理はデータベースにデータを格納する場合のみ必要です。 追加される
> \ は挿入されません。 PHP のディレクティブ magic_quotes_sybase を \ にす
> ると、' はもうひとつの ' でエスケープされます。
> ------------------------------------------------------------------------
>
> ただ、この部分は、英文でも「Most databases do this with a \ which
> would mean O\'reilly. 」と書かれているため、本家(?)の修正も必要そう
> です。
>
> 英文については、どなたかのご協力をお願いしたく。。。
>
こっちのほうも先ほど更新しておきました。

 - http://news.php.net/php.doc.cvs/3396
 - http://news.php.net/php.doc.ja/2430

# しかし、こうなってくるともはや addslashed() の存在意義が...... :-)
-- 
TAKAGI Masahiro mailto:matakagi @ gmail.com


PHP-doc メーリングリストの案内