「ほっ」と。キャンペーン

<   2004年 11月 ( 4 )   > この月の画像一覧

[PHP] セッションに挑戦

phpをちゃんと書き始めて2ヶ月ほどですが、
よたよたしながら、果敢にもセッションに挑戦してみました。

ページをまたいで
巨大なデータを読み込んであるオブジェクトを渡したいなぁと
思ったわけなのですね。
何か方法はないかなぁと探していて、
「セッション」と言うのを使えば、
オブジェクトの受け渡しができるらしいと、わかりました。

このあたりの仕様や、推奨される方法は、
php のバージョンごとに色々変化しているようです。
web ページを参考にする場合は、
そのページが書かれた年月日に注意した方が良いみたいです。

まぁ初めてコーディングするお約束で、色々試行錯誤したのですが、
やっとできたので、メモっておきます。

セッションを破棄してしまえば、もうそのデータにはアクセスできないので、
「ログイン」という形でセッションを開始し、
セッションの破棄で「ログアウト」というのができるわけで、
別途、認証用のCookieを持たなくて良いから楽チン。

セッションで保存されたデータにアクセスするには
「セッションID」というのが必要だそうです。
その「セッションID」は、 Cookie で渡す方法と、
CGI 引数として渡す方法があるみたいです。
以下の例は、Cookie を使った場合ですが、
CGI 引数の場合は、
「test.php?ID=<?php echo htmlspecialchars(SID); ?>」とか
「test.php?ID=<?php echo htmlspecialchars(session_id()); ?>)とかして、
ページ間を渡します。

test_obj.phpm
<?php
class Test_obj {
  var $ID ;
  var $DATA ;
  function Test_obj() {  // コンストラクタ
   $this->ID = NULL ;
   $this->DATA = Array() ;
  }
}
?>


データ作成部
require_once 'test_obj.phpm' ;

session_name("test_session") ;
session_start();
$_SESSION["test_obj"] = new Test_obj() ;

$id = '01234' ;
for ($i=0 ; $i<1000 ; $i++) {
 array_push($data_list, $i.'番目') ;
}

$_SESSION["test_obj"]->ID = $id ;
$_SESSION["test_obj"]->DATA = $data_list ;



データ読み込み部
require_once 'test_obj.phpm' ;

session_name("test_session") ;
session_start() ;
$user_id = $_SESSION['test_obj']->ID ;
$user_list = $_SESSION['test_obj']->DATA ;


セッションデータの破棄
session_name("test_session"); // セッション開始
session_start();
session_destroy();

[PR]
by xiaoxia | 2004-11-18 20:36 | プログラム言語 | Comments(17)
apache のログで、リファが google だと文字化けしてます、とお客さんから指摘。
google から来た人の場合、あそこは検索クエリーが utf-8 なので、
やみくもに urldecode しただけでは、色々な文字コードが混在してしまい、
少数派な文字コードは、ファイルでは文字化けに見えてしまう。
気づいていはいたのだけれど、
マンドクセェと黙殺していたら、指摘されてしまいました。
あはははは(^^;;

きっと簡単だろうと取り掛かり始めたら、意外にハマるハマる(汗

Ruby のマニュアルページで、「文字コード」とか「UTF-8」とか入れて検索してみた。
NKF、jcode、Kconv あたりが出てくる。
まぁ、馴染みのある面々です。

NKF


一番 Ruby インタフェースがちゃんとしてそうな NKF を使ってみたのだが、
何故か変換されていない様子。
使い方間違ってるスか?
ひょっとして、print の時、java みたいにロケール見てたり!?<なわけない
require 'nkf'
one_line = NKF::nkf('-e -W', one_line)
print "#{one_line}\n"


Kconv? iconv?


Kconv は utf-8 に対応していないみたい。
jcode は、そもそも文字コード変換のモジュールではなかった。
困ったなぁと思っていたのだけれど、突如、iconv が思い浮かんだ。
まず、iconv自体はちゃんと動作するのか、コマンドラインで試してみると、
めでたく動いているやーん(^-^)
(OSはDebianなのだけれど、
 RedHat あたりだと、確か日本語ロケールを入れないと、
 日本語まわりの文字コード変換は全てできなかったような覚えが)

uconv


ところが、Ruby では、uconv というのが(昔は?)一般的みたい。
それ、初めて聞いたよ。
Ruby ヘルプページで検索しても出てこないし(^^;;
これからは iconv の方が一般的になるのかな。

とにかく、uconv の方が、Ruby には良く使われていたらしいので、
ググりながら、コーディングしてみます。
(何でか require できなかったのは、モジュールがインストールされていなかった!
 % apt-get install libuconv-ruby1.8 )
require 'uconv'
begin
temp = Uconv.u8toeuc(one_line)
rescue Exception
temp = one_line
end
print "#{temp}\n"

ほどほどうまくいってるっぽい。
例外を捕捉するのがポイント。
UTF-8として不正な文字列が来た場合は、Ruby 丸ごと落ちちゃうので。

蛇足


Ruby って、案外文字コード周りは強くないのかも?
他のことが簡単にできる分、こういうのが面倒だ(調べにくい)と、
何となくマイナスイメージだよ。

しかし、TeraTerm + emacs で UTF-8 が表示できないのは、困ったもんだ。
TeraTerm ( UTF-8 パッチ当て済み) の出力を UTF-8 にしてもダメだし。
Xwindow なら、サラッと出るんだろうなぁ。
ちゃんと変換できているかを、ブラウザを通してしか確認できないって、
すごく不便(怒)
追記:mule-ucs当てるのを忘れていました(^^;;

ちなみに、emacs で、文字コード指定してファイルを開くのは、
Dired にしてから、C-x Ret c で文字コード指定してから、
開きたいファイルにカーソルを合わせて o (オー)、とやります。

あー、悩んだ。
もう今日の仕事は終わりにしよう。
[PR]
by xiaoxia | 2004-11-11 19:55 | プログラム言語 | Comments(12)
「タカラよりミュシャの食玩」で、書いた食玩、
「買っちゃいそう」と書いたとおり、買っちゃいましたー(笑)

10月25日からの発売で、3日後にはこの状態(苦笑)
カラー彩色:花、百合
象牙彩色:百合、花、アイリス
となっています。
a0003075_23511650.jpg

a0003075_23513095.jpg

公式HPの画像で見たところ、彩色済みの方が良いなぁと思っていました。
しかし、実物を得てから、暫くすると、象牙色の方が良い感じに思えてきました。
右の拡大を見るとおわかり頂けると思いますが、
造型はなかなかよろしいのですが、何しろ彩色がひどく悪い。
a0003075_23514070.jpg
この前の三国志が、あの出来の良さで315円だったことを考えると、
262円でこの出来は、値段に見合わない感じがします。
三国志の方は、結構マイウーなライチゼリーがついていましたが、
ミュシャの方は3cm角ほどの、これまたイマイチなガム。

無駄にゴージャスなパッケージが良くないのかもしれません。
さそり子さんのところに、画像があります
パッケージはそこそこで良いから、
フィギュアの方に、もうちょっと力を注いで欲しいです。

象牙色だけでも全種類欲しいのですが(後はカーネーションとバラ)、
これでカラーが出てきた日には、カナーリがっかりしてしまいそうです。
なので、もう買わないと思います。
自分の好きなポスターの立体版があるなら、まだしも。
ダイヤっつーのも、興味ないし。
これにダイヤが入っていても、全然嬉しくない感じがします。

象牙のカーネーションorバラをお持ちの方、
私のカラーの花or百合と、トレードしませんか。
半ば、ホンキなのですが(笑)

ミュシャのリトグラフポスターの展示即売会を見に行った時、
そこのお姉さんに聞いたのですが、
モエエシャンドンなどのポスターは、まだモエが版権を持っていて、
ポスターに出来ないのですって。
それで、装飾パネルばかりが、ポスターになったりするのだそうです。
私が好きなのは、晩年、彼がチェコに戻ってからの作品が多いのですが、
それもパリ時代のものに比べて、人気がないので、
ポスターなどにはならないのですって。

ちなみに、私が一番好きなポスターは、
「ジョセフィーヌ・クレーヌ・ブラッドレーの肖像」です。
[PR]
by xiaoxia | 2004-11-02 23:52 | 見る | Comments(13)
この年齢の女性としては、多分、少数派だろうなぁと思うこと。
ネタなし、全て実話。

・ディズニーランドやシーに行ったことがない
  ウチの母でさえ、3度も行っているのに(笑)

・ウォークマンを所持したことがない

・CDやビデオのレンタルをしたことがない

・持っているCDは10枚以下

・MDは全く持っていない

・クラシック以外のコンサートに行ったことがない

・ファッション雑誌を自分のために購入したことがない

・一人暮らしをしたことがない

・コンタクトの時でも必ずメガネを掛けている

・ストッキングを履くのは、年に10回以下

・パーマを掛けたことがない

・ピアスをしたことがない

・バーゲンに行ったことがない
  すごい争いらしいっすね

・自分用の肥後守を持っている

・今まで所持したパソコンは自作だけ

・自分のお金で自分のために買った品物の最高額は 10万円
  海外旅行ならもっと払ったこともあるけれど

・銀行でお金を振り込んだことが3回しかない

・PHSの料金が4000円を超えたことがない
  現在は 2500円以内

・社会人になってから映画館に行ったのは1回

挙げてみたら、思っていたよりも多い。
しかも自慢出来ない事ばかり(;´д⊂

追記:
サトシさんが、このお題で記事を上げて下さいましたので、TBさせて頂きます。
[PR]
by xiaoxia | 2004-11-01 18:42 | 考える | Comments(30)

ダメ女プログラマ&主婦&腐女子&バイオリン弾き


by 小霞