PHP

Smartyで出力される数字の書式を調整する(前0追加など)

2010年8月26日 木曜日

PEARのライブラリをインストール出来ないサーバでPEARを利用する方法2

2010年8月21日 土曜日

PEARのライブラリをインストール出来ないサーバでPEARを利用する方法

2010年8月10日 火曜日

MPDFでPDF文書を改ページさせたい時

2010年8月9日 月曜日

IEではPHPプログラムで直接ダウンロード出来ない場合

2010年7月29日 木曜日

PHPで実行されたらいきなりファイルをダウンロードさせたい場合

2010年7月27日 火曜日

PHPで自分自身のディレクトリ位置を移動したい時

2010年7月27日 火曜日

PHPでPDFを出力する場合にmPDFを使う方法

2010年7月23日 金曜日

PHPでPDFを出力する方法はFPDFだがZendFrameworkで利用する場合

2010年7月9日 金曜日

PHPのserializeとunserializeはなかなか便利

2010年7月6日 火曜日

拡張子がhtmlのファイル中でPHPプログラムを動かす場合

2010年7月5日 月曜日

WordPressでカテゴリ全てのパーマリンクのリストを取得する方法

2010年7月2日 金曜日

Smartyでテンプレートタグ用の{や}を自分専用のものに変える方法

2010年6月30日 水曜日

これはうっかり忘れたりしてかなり面倒。

これを回避するために

Smartyのオブジェクト(例えば$smarty)が生成されたら

$smarty->left_delimiter = ‘<!–{‘;
$smarty->right_delimiter = ‘}–>’;

というように、デリミタを変更してしまえばよい。

こうすると、今まで{$aiueo}だったものが、
<!–{$aiueo}–>
というように書くことができ、{literal}など書く必要がなくなる。

ちなみにこの記述はECcubeがこのようにしていた。

-->

PHPからエクセルファイルをダウンロード出来るようにする

2010年6月15日 火曜日


$xlsfilename = "test.xls"; //ファイル名
$xlspath = "/var/www/test.xls"; //実際のパス
header("Content-Type: application/vnd.ms-excel");
header('Content-Disposition: attachment; filename="'.$xlsfilename.'"');
readfile($xlspath);

これで少なくともダウンロードされる。

-->

PHPのaddslashesとmysql_escape_stringとmysql_real_escape_stringについて

2010年6月11日 金曜日

ところが、
http://gihyo.jp/dev/serial/01/php-security/0028?page=2
では使用禁止の禁忌として取り扱っている。

ネット上を探しても、確かに脆弱性が発見されているから使うな。という記事が多い。

ちなみにmysql_escape_stringはNGらしい。これを使うならmysql_real_escape_stringを使用せよ。とある。

ただ個人的には指南書の通りaddslashesでいきたいと思うのだが、
さてどうしたものか。
という事で、いい事を思いつく。

脆弱性が発見されて禁忌関数という事なのであれば、WordPressやECcubeでは使用されていないはず!
と思い、ソースコードを調べてみた。

WordPress内でaddslashesが使われているか調査

ECcubeでaddslashesが使われているか調査

結構出てくるじゃないですか。普通に使っているのかもしれませんよ。

ちなみにmysql_escape_stringは二つのシステムは0件、mysql_real_escape_stringはチラホラとは出てきました。
が、addslashesよりは少ないです。

ということは・・・addslashesなんじゃない?やっぱり。
間違ってたらコメントで指摘してください。

-->

SSLでmod_rewriteが効かない時、あるいはZend Frameworkなどのフレームワークが動かない時

2010年6月11日 金曜日

PHPで郵便番号データにハイフンを付ける

2010年6月10日 木曜日

PHPでCSRF対策(ワンタイムチケットの発行)

2010年6月8日 火曜日

あとは最後の砦(完了用プログラムなど)にて、DBにINSERTやUPDATEする手前で、きちんと$ticketの値とセッション内のチケットを照合して、同じかどうかを試せばよい。


$ticket = $_POST['ticket'];
if( strcmp($ticket,$session->ticket)==0 )
{
//OK
}
else
{
//チケットNG。何らかの問題あり
}

・・・

//最後に$session->ticketの値は削除する事。

間違ってたら誰か指摘してくださいね。

-->

PHPのdate関数で、時間が9時間足りない時

2010年6月3日 木曜日

PHPで数字に前0を追加

2010年5月25日 火曜日


$number = sprintf("%02d",$number);

とぃう書き方で可能。%02dは2桁で、もし2桁に満たなければ0で埋める。という意味。

3 を 003にしたいなら


$number = 3;
$number = sprintf("%03d",$number);

という事になる。

-->