2006年4月28日金曜日

クッキーをサブドメイン間で共有する

以前から「クッキーはサブドメイン間で共有して使える」というのは聞いてたんですが、今回仕事で使うことになりそうなのでちょっと調べてみました。
以下、 set.example.com で発行したクッキーを get.example.com で呼び出す。というテストです。

http://set.example.com/cookie_set.php
<?php
setcookie("TestCookie", "Test", time() + 3600, "/", ".example.com");
echo "set!";
?>

↑このスクリプトにアクセスするとクッキーが発行される。

http://get.example.com/cookie_get.php
<?php
echo "<hr>";
echo $_COOKIE["TestCookie"];
echo "<hr>";
?>

↑このスクリプトにアクセスすると、クッキーが呼び出される。

実際やってみて、ちゃんと動きました。
「.example.com」としてクッキーを発行しておけば、サブドメイン以下どこからでも参照できます。たとえばhttp://www.example.comhttps://ssl.example.com みたいな感じでサブドメインで分けてサーバーを管理してるような場合でも使えるので、便利だと思います。

なお、クッキーの動きを見るにはFireFoxが便利。ツール→オプション→プライバシー→Cookieでクッキーの状態を確認できます。

2006年4月27日木曜日

OSを再インストールした

愛機Let'snoteY4の調子が悪くなってきた。
具体的には、
・Windowsの起動とシャットダウンが遅い
・IEでウェブページを開くのが非常に重い
といった症状。
IEのキャッシュを消したり、レジストリクリーナーを使ってみたりしてもダメ。
購入してから10ヶ月ほど経つので、だいぶガタがきてるのかも。(使い方荒っぽいし)
というわけでOS再インストールに踏み切った。
購入時にHDDを分割しておいたので必要なファイルはすべてDドライブに退避。CドライブにWindowsを入れ直した。(分割しといてよかったー)
そして、再インストールすると見違えるような速さに!!
起動もシャットダウンも速い。IEもサクサク軽快だ♪やっぱり年に一回くらいは再インストール必要ですな。

2006年4月21日金曜日

LinuxのPHPからWindowsのMSSQLに接続する

仕事でLinuxサーバーのphpからWindowsサーバーのMS SQL Serverに接続するアプリを作る。というのをやりました。
というわけで、接続が確立するまでの手順をメモしておきます。さらっと書いてありますが、半日くらいつぶれました。

〓インストール〓
◆apache2.2.0インストール
~省略~

◆unixODBCインストール
# tar zxvf unixODBC-2.2.11.tar.gz
# cd unixODBC-2.2.11/
# ./configure --enable-gui=no
# make
# make install


◆libiconvインストール
# tar zxvf libiconv-1.9.2.tar.gz
# cd libiconv-1.9.2/
# ./configure
# make
# make install


◆freetds0.63インストール
# tar zxvf freetds-stable.tgz
# cd freetds-0.63/
# ./configure --enable-msdblib --prefix=/usr/local/freetds
# make
# make install


◆php5.1.2インストール
./configure --with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-trans-sid \
--enable-mbregex \
--with-unixODBC \
--with-mssql=/usr/local \
--with-sybase=/usr/local \
--with-mysql


以上でインストール完了。
ちなみに後で気が付いたんだけど、mssql関数だけ使う(odbc関数を使わない)場合はunixODBCとlibiconvは必要ないらしい。

〓freetdsの設定〓
# vi /usr/local/etc/freetds.conf
[sqlserver]
port = 1433
tds version = 9.0

※MSSQL2005の場合はtds versionを9.0にする

〓接続テスト用スクリプト〓
ここではPEAR::DBを使ってますが、mssql_***関数を使っても普通に動きます。
(というか、PEAR::DBもmssql_***を使ってるみたいなのでどっちでも同じ)
<?php
require_once('DB.php');
$db = DB::connect("mssql://sa:password@192.168.1.100/MSSQLDB");
// エラーチェック
if(DB::isError($db)){echo"DB接続エラー : " . DB::errorMessage( $db ) . "<BR>";}
else{echo "DB接続成功 : " . $db->toString() . "<BR>";}
$sql = "select * from USER_T";
$rs = $db->query($sql);
while($row = $rs->fetchRow(DB_FETCHMODE_ASSOC))
{ echo $row[user_id] . " : " . $row[user_name] . "<br>"; }
exit;
?>


〓その他注意事項〓
普段MySQLを使い慣れてるので、MSSQLはやはり違和感があります。
あとSJISはいろいろと面倒。
特に今回はinsertとupdateのとき、文字列にダブルクオートが入ると文字化けする問題が発生して困りました。
php.iniのmagic_quote関係をいじってみてもうまくいかないので、最終的にhtmlspecialcharを使ってデータ格納前にダブルクオートを無理矢理&quot;に変換。そして表示するときは変換を戻す、という処理を加えてなんとか回避しました。。

〓参考〓
PukiWiki:http://planet-m.dip.jp/index.php?Linux%A4%C8PHP%A4%C7SQLServer%A4%F2%A4%A4%A4%B8%A4%EB
PHP-users ML:http://ns1.php.gr.jp/pipermail/php-users/2002-May/007554.html
PHPマニュアル MSSQL関数:http://php.mirror.netmonic.com/manual/ja/ref.mssql.php
PukiWiki(おさるさん):http://www.magic3.org/sarucast/index.php?PHP-SQL%20Server%C0%DC%C2%B3

2006年4月14日金曜日

PEARのTEXT_Passwordを使う

これまえパスワードをランダムで生成する場合、「makeRandomPassword」みたいな名前で関数を作ってそれを呼び出して使ってたんですが、PEARにText_Passwordという、まさにそれをやってくれるクラスがあるのを知りました。で、早速使ってみる。
インストール
# pear install Text_Password

使う
<?php
require_once('Text/Password.php');
echo Text_Password::create(10,'unpronounceable','alphanumeric');
?>

ううむ、非常に簡単で手軽だ!これからはこいつを使おう。

2006年4月2日日曜日

USEN「GYAO HIKARI」が来る!

とうとう我が家も光ファイバ環境に!
今住んでるマンションのオーナーが重い腰を上げてくれて、USENギャオ光の導入が決まった!工事&開通はいつになるか明示されてないけど、とりあえず申込書を提出。
プロバイダ料込みで月2,980円はADSLに比べると圧倒的に安い。さらに光になれば通信速度は断然早くなると思われる。
いいことずくめの光環境導入。早く開通しないかなー。待ち遠しい。
有線ギャオ光