Category Archives: セッション

PHPセッションストレージの大本命Flare

PHPセッションストレージの大本命Flareを試してみました

ほっほう。知らなかったけど。なかなか使う機会はないだろうけどメモ。

少年よ大志を抱け: PHP: use_trans_sidの注意点

少年よ大志を抱け: PHP: use_trans_sidの注意点
記事中で、session.use_trans_sidをonにした際、どのようなリンクだとセッションIDが付与されるか試しておられます。
中でも、

foo.php?param:abc=1というリンクでも付与されない。。。パラメータ名にコロンてあまりない気がするけど、使わないように考えておく必要はある。

というのは、非常に興味深いですね。確かに、パラメータ名でコロンはあまり使わないでしょうが。。
知らなかったらハマりそうです。

セッション使ってると戻るボタンで戻った時にフォームの内容が消えてしまう問題

戻るボタンで戻ったらフォームの内容が消えちゃうPHP (デザネスマガジン)

セッション使ってると戻るボタンで戻った時にフォームの内容が消えてしまう問題ですが、

session.cache_limiter という値に ’none’ を入れます。

htaccessで制御する場合は
php_value session.cache_limiter none
だね。

PHP内で制御する場合は
session_cache_limiter(‘none’);
だね。

noneをprivateにすると、一見うまくいったかに見えるが、今度はキャッシュが残りすぎちゃって、
ブラウザを閉じて開きなおしても前の情報が残ったままになっちゃう。(ただしIEだけ)

ちなみにデフォルトはnocach。キャッシュするなという設定ですな。

noneは余計な制御をせずに普通のページと同じように扱えっちゅうことですわ。

と、セッションのキャッシュ制御でよろしいようです。
時々忘れてて、大量に作ったフォームの内容が消えてしまうスクリプトになったりしてます。

自動ログインについて

今感じていること PEAR::Authで自動ログイン

結局のところPEAR::Authでやるのはあきらめて自作されていますが、それが良かったです。
勉強になります。

携帯対応 COOKIEを使わないSESSIONの使い方。

携帯対応 COOKIEを使わないSESSIONの使い方。 – 個人事業主のつぶやき

Cakeを使う時の為のメモ。やはり携帯対応は大変ですね。Androidが福音となるのかどうか。

リロード対策のメモ

すごいリロード対策 – p4lifeのメモということで紹介されます$token方法ですが、以前、PHPの種ブログのZend FrameworkでAdminページを簡単に作るためのコントローラ習作でも行ったセッションにトークンを渡す方法が、

入力画面→入力確認画面と遷移してから別のウィンドウで入力画面→入力確認画面と遷移すると,前の入力確認画面のフォームは ticket が無効になり,フォームを送信できなくなる(複数画面同時編集ができない)

という弱点がありましたので、それを改良されたスクリプトを載せられています。トークンをセッションの配列に入れ、複数のトークンを保存するという方法です。セッションがタイムアウトする時間や、保存する数を調整したりして是非取り入れさせていただきましょう。

こういう弱点は中々気づかないです。やはりそれなり以上の規模サイトを作成する経験値がものを言うのでしょうか。

ページの有効期限切れ問題

「ページの有効期限切れ」問題で、ページの有効期限切れ警告を表示せず、かつ戻るボタンを押してもフォームの中身が消えない設定を解決されています。
ブラウザによって挙動が違うのは本当に困りますね。

ページの有効期限対策

ブラウザの戻るボタンを押した時に出る「ページの有効期限切れ」対策です。
[php]
session_cache_limiter(none);
[/php]

とか

[php]
session_cache_limiter(‘private_no_expire’);
[/php]

とか。ページの有効期限切れを出したくない時の参考に。

PHPできちんとセッション廃棄

セッション廃棄は気をつけようということで、session_destroy()だけでは不完全だよ、という教えです。

1.メモリ上のセッション情報を消す。
2.ブラウザのクッキーからセッションを消す。
3.セッションファイルを消す。

//1.メモリ上のセッション情報を消す。
$_SESSION = array();

//2.ブラウザのクッキーからセッションを消す。
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), ”, time()-42000, ‘/’);
}

//3.セッションファイルを消す。
session_destroy();

ブラウザのクッキーからセッションを消す、というのは気をつけていないと忘れそうですね。勉強になります!