Yearly Archives: 2009

いわゆる半角カナや種依存文字などをメールで送信する方法 – t_komuraの日記

いわゆる半角カナや種依存文字などをメールで送信する方法 – t_komuraの日記

メールの送信エンコーディングに UTF-8 を使用すれば、機種依存文字という問題を気にする必要はほとんどありませんが、まだ一般的には、ISO-2022-JP を使用してメールを送る方が多いと思います。ただ、PHP の mb_send_mail では、いわゆる半角カタカナや、機種依存文字を送信することはできません。これらの文字は ‘?’ に変換されます。

PHP 5.2.1 からは、レガシーエンコーディングの追加として、ISO-2022-JP-MS というエンコーディングが追加されました。ISO-2022-JP-MS を使用すれば、このエンコーディングでサポートされている文字を送信することができます。ISO-2022-JP-MS については、[PHP-dev 1345] PHP への CP932 系エンコーディングの追加パッチを参照してください。

ふーむ。ややこしいなメモ。

PHPのリロード対策

あきら×ひろこ=ゆう PHPのリロード対策を誤っていました!

PHPでこれを表示させないためには、パラメータをセッション変数に保存し、Location ヘッダーに自分自身を指定して送信するのが一般的だ。

少し前は、以下の様に実装していた。

if isset $_POST[ 'command' ] {
パラメータの処理

header ‘Location: ‘ . $_SERVER[ 'PHP_SELF' ] ;
exit ;
}

しかし、これだと以下のようなフォームでページが呼び出された場合にうまく行かない。

上記実装では command パラメータが与えられる事を前提としているのに、パラメータは何も渡って来ない。

正しい実装は以下の様にするべきだ。

if $_SERVER[ 'REQUEST_METHOD' ] == ‘POST’ {
パラメータの処理

header ‘Location: ‘ . $_SERVER[ 'PHP_SELF' ] ;
exit ;
}

なるほど確かにそうしがち忘れがちのメモ。

WordPressのデータベースにアクセスするプログラムの作り方

WordPressのデータベースにアクセスするプログラムの作り方 | 山本隆の開発日誌

WordPressのデータベースにアクセスするプログラムの簡単な作り方。

使用したのは、wordpress-2.2.3-multilingual-edition。

wp-cofig.phpをrequireします。

require(‘wordpress/wp-config.php’);

これだけで、$wpdbを通してデータベースにアクセスできます。

Oh.これは目から鱗。
この手があったか!

さくらサーバでPHPを使って空メール受信

さくらサーバでPHPを使って空メール受信とかの設定のメモ|PHPメモ

参考にしまっすメモ。

phpが動いているのはモジュール?cgi?

phpがモジュールモードで動いているか?cgiモードで動いているか?を知る方法 – purazumakoiの[はてな]

phpinfoを表示して

4行目あたり

CGIモード

Server API  : CGI

モジュールモード

Server API  : Apache

とか

Server API  : Apache 2.0 Handler

なるほどメモ。
いつか使うときがきそう。

1PHPファイルで3キャリア対応ケータイサイト

PHPを使って3分で作る3キャリア対応ケータイサイト | ke-tai.org

これは便利&面白い。
rewriteしてProxyのようにPHPをかまして、3キャリアのケータイサイトに対応させてます。
アイデアがいいなあ。

ぜひ活用させていただこうっ!

シリアライズした行データの復元 @ Zend Framework

Zend FrameworkでのZend_Db_Table_Row_Abstract型、シリアライズ(serialize,unserialize)するとテーブルのmetaデータを無くしてしまいます。

マニュアルを見ると

復元した行は、なぜ切断された状態なのですか?

シリアライズしたオブジェクトは、可読形式の文字列となります。 データベースのアカウントやパスワードといった情報を 暗号化せずにプレーンテキストにシリアライズして保存すると、 セキュリティ上問題となります。 そのようなデータを無防備な状態でテキストファイルに保存したりしたくはないでしょう。 またメールなどで攻撃者に覗き見られることも好まないはずです。 シリアライズされたオブジェクトは、 正しい認証情報を知らない限りデータベースにアクセスすることはできません。

Zend Framework: Documentation

と書いてあります。ごもっとも。テーブルデータを取り戻すには、

[php]
$rowClone = unserialize($serializedRow);

$bugs = new Bugs();

// この行をテーブルに再接続し、
// データベースとの接続を復活させます
$rowClone->setTable($bugs);

// これで、行の内容を変更して保存することができます
$rowClone->bug_status = ‘FIXED’;
$rowClone->save();
[/php]

と、setTableで再接続させます。

rowsetごとキャッシュしてる場合は、

[php]
$rowset->setTable(new Bugs());
[/php]

と、rowsetにテーブルのインスタンスを渡してやれば、再接続します。

英語ではReactivating a Row as Live Dataなどと書かれていますね。

行データをキャッシュから戻した場合は、リアクティベイティング(←言いにくい)をお忘れ無く!

任意のPHPコードをWordPressのウィジェットに変換してくれる『Widgetifyr』

任意のPHPコードをWordPressのウィジェットに変換してくれる『Widgetifyr』 – 100SHIKI ~ 世界のアイデアを日替わりで

これは一度使ってみたい。便利そうな雰囲気はバリバリする。

Google Analyticsから訪問数・PV数をPHPでゲットするサンプルコード

Google Analyticsから訪問数・PV数をPHPでゲットするサンプルコード:phpspot開発日誌

これはちょっと便利かも。結果をメールで飛ばしたりすれば無理なく管理できる。

使うにはcURLライブラリがいるので注意でっす。

たまたま使ってたubuntuに入ってなかったので

# apt-get install php5-curl

して入れました。

phpのzlibモジュールでコンテンツを圧縮

さくらレンタルサーバはmod_deflateモジュールが入ってないので、PHP側でgzipしてうんぬん~というのをやっていたんだけど、これでよかったのだった。

PHPでコンテンツをgzip圧縮する方法 zlib編

gzip でコンテンツを圧縮することにより、ネットワークの負荷を
軽減させることができ、レスポンススピードの向上が期待できます。

しかしながら、mod_deflateが利用できない場合もあります。phpの拡張 zlib を利用することでコンテンツの圧縮をすることが可能になります。
ob_startとgzhandlerを使うのと異なり、ソースコードの変更は必要ありません。

さくらなどのレンタルサーバを借りている場合に有効な手段になります。

PHPの設定ファイル php.iniに下記設定を追加します。
/usr/local/etc/php/your-php.ini

zlib.output_compression=1

さくらのレンタルサーバの場合、$HOME/www/php.ini に書きます。

うーむ。簡単。
今だとさくらコンパネからphp.iniを修正できるので、そちらで書いても良いですね。